Log git commit in behavior log file and check on replay

This commit is contained in:
Michael Lingelbach 2021-05-14 11:57:44 -07:00
parent eeda84dc7f
commit bfed6a9c49
4 changed files with 48 additions and 34 deletions

View File

@ -6,14 +6,16 @@ import argparse
import os
import datetime
import h5py
import pprint
import gibson2
from gibson2.robots.behavior_robot import BehaviorRobot
from gibson2.render.mesh_renderer.mesh_renderer_cpu import MeshRendererSettings
from gibson2.render.mesh_renderer.mesh_renderer_vr import VrConditionSwitcher, VrSettings
from gibson2.render.mesh_renderer.mesh_renderer_vr import VrSettings
from gibson2.simulator import Simulator
from gibson2.task.task_base import iGTNTask
from gibson2.utils.ig_logging import IGLogReader, IGLogWriter
from gibson2.utils.git_utils import project_git_info
from gibson2.utils.utils import parse_str_config
import tasknet
import numpy as np
@ -21,36 +23,6 @@ import pybullet as p
def parse_args():
scene_choices = [
"Beechwood_0_int",
"Beechwood_1_int",
"Benevolence_0_int",
"Benevolence_1_int",
"Benevolence_2_int",
"Ihlen_0_int",
"Ihlen_1_int",
"Merom_0_int",
"Merom_1_int",
"Pomaria_0_int",
"Pomaria_1_int",
"Pomaria_2_int",
"Rs_int",
"Wainscott_0_int",
"Wainscott_1_int",
]
task_choices = [
"packing_lunches_filtered",
"assembling_gift_baskets_filtered",
"organizing_school_stuff_filtered",
"re-shelving_library_books_filtered",
"serving_hors_d_oeuvres_filtered",
"putting_away_toys_filtered",
"putting_away_Christmas_decorations_filtered",
"putting_dishes_away_after_cleaning_filtered",
"cleaning_out_drawers_filtered",
]
task_id_choices = [0, 1]
parser = argparse.ArgumentParser(
description='Run and collect an ATUS demo')
parser.add_argument('--vr_log_path', type=str,
@ -72,6 +44,7 @@ def parse_args():
def main():
args = parse_args()
pp = pprint.PrettyPrinter(indent=4)
tasknet.set_backend("iGibson")
# HDR files for PBR rendering
@ -113,6 +86,18 @@ def main():
else:
filter_objects = True
if IGLogReader.has_metadata_attr(args.vr_log_path, '/metadata/git_info'):
logged_git_info = IGLogReader.read_metadata_attr(args.vr_log_path, '/metadata/git_info')
logged_git_info = parse_str_config(logged_git_info)
git_info = project_git_info()
for key in logged_git_info:
if logged_git_info[key] != git_info[key]:
print("Warning, difference in git commits for repo: {}. This may impact deterministic replay".format(key))
print("Logged git info:\n")
pp.pprint(logged_git_info[key])
print("Current git info:\n")
pp.pprint(git_info[key])
# Get dictionary mapping object body id to name, also check it is a dictionary
obj_body_id_to_name = IGLogReader.get_obj_body_id_to_name(args.vr_log_path)
assert type(obj_body_id_to_name) == dict

View File

@ -0,0 +1,26 @@
import git
import gibson2
from pathlib import Path
import tasknet
def git_info(directory):
repo = git.Repo(directory)
try:
branch_name = repo.active_branch.name
except TypeError:
branch_name = '[DETACHED]'
return {
"directory": str(directory),
"code_diff": repo.git.diff(None),
"code_diff_staged": repo.git.diff('--staged'),
"commit_hash": repo.head.commit.hexsha,
"branch_name": branch_name
}
def project_git_info():
return {
"iGibson": git_info(Path(gibson2.root_path).parent),
"tasknet": git_info(Path(tasknet.__file__).parent.parent),
"ig_assets": git_info(gibson2.assets_path),
"ig_dataset": git_info(gibson2.ig_dataset_path),
}

View File

@ -12,7 +12,8 @@ import copy
from gibson2.utils.utils import parse_str_config, dump_config
from gibson2.utils.vr_utils import VrData, convert_button_data_to_binary, VR_BUTTON_COMBO_NUM
from gibson2.object_states import AABB, Pose
from gibson2.utils.git_utils import project_git_info
from gibson2.object_states import Pose
class IGLogWriter(object):
@ -240,6 +241,7 @@ class IGLogWriter(object):
self.hf.attrs['/metadata/start_time'] = str(datetime.datetime.now())
self.hf.attrs['/metadata/physics_timestep'] = self.sim.physics_timestep
self.hf.attrs['/metadata/render_timestep'] = self.sim.render_timestep
self.hf.attrs['/metadata/git_info'] = dump_config(project_git_info())
if self.task:
self.hf.attrs['/metadata/task_name'] = self.task.atus_activity

View File

@ -172,7 +172,8 @@ setup(
'sphinx>=1.8.0',
'recommonmark',
'sphinx_rtd_theme',
'h5py'
'h5py',
'gitpython'
],
ext_modules=[CMakeExtension(
'MeshRendererContext', sourcedir='gibson2/render')],