in interaction_exploration/tools/calculate_max_interactions.py [0:0]
def init_environment(self):
scene, episode = self.config.test_episode
print (f'INIT: {scene} episode {episode}')
self.init_scene_and_agent(scene=scene, episode=episode)
# store all reachable x, z for snapping to grid
self.reachable_x = list(set([pos[0] for pos in self.reachable_positions]))
self.reachable_z = list(set([pos[2] for pos in self.reachable_positions]))
# get a list of every possible interaction that can be done (by object)
# go to the closest object and cycle through these
# actions = ['open', 'close', 'toggle-on', 'toggle-off', 'take', 'put', 'slice']
interaction_candidates = []
for obj in self.state.metadata['objects']:
ints = []
if obj['openable']:
ints += ['open', 'close']
if obj['toggleable']:
ints += ['toggle-on', 'toggle-off']
if obj['pickupable']:
ints += ['take', 'put']
if obj['sliceable']:
ints += ['slice']
obj = copy.deepcopy(obj)
obj['ints'] = ints
obj['objId'] = obj['objectId']
if len(ints)>0:
interaction_candidates.append(obj)
self.interaction_candidates = interaction_candidates