class
RelationshipGraphUses two dictionaries to simulate a bi-directional tree relationship between objects.
NOTE: All ‘obj’ ints are assumed to be object ids so that links can be supported in the tree structure.
NOTE: because links are parented explicitly to their parent AO, we don’t allow them to be children in the relationship manager, only parents.
Methods
- def add_relation(self, parent: int, child: int, rel_type: str) -> None
- Add a relationship connection between two objects.
- def get_human_readable_relationship_forest(self, sim: habitat_sim.simulator.Simulator, do_print: bool = False) -> typing.Dict[str, typing.List[typing.Tuple[str, str]]]
- Get a version of the relationship forest with human readable strings in place of object ids.
- def get_root_parents(self) -> typing.List[int]
- Get a list of root objects: those which are parents but have no parents.
- def remove_obj_relations(self, obj: int, parents_only: bool = False) -> None
- Remove all relationships for the object. Use this to remove an object from the kinematic manager.
- def remove_relation(self, parent: int, child: int) -> None
- Remove any relationship between the pair of objects.
Special methods
Method documentation
def habitat. sims. habitat_simulator. kinematic_relationship_manager. RelationshipGraph. add_relation(self,
parent: int,
child: int,
rel_type: str) -> None
Add a relationship connection between two objects.
Parameters | |
---|---|
parent | The parent object_id. |
child | The child object_id. |
rel_type | The type string for the relationship. |
def habitat. sims. habitat_simulator. kinematic_relationship_manager. RelationshipGraph. get_human_readable_relationship_forest(self,
sim: habitat_sim.simulator.Simulator,
do_print: bool = False) -> typing.Dict[str, typing.List[typing.Tuple[str, str]]]
Get a version of the relationship forest with human readable strings in place of object ids.
Parameters | |
---|---|
sim | We need the Simulator instance to fetch the name strings. |
do_print | If true, print the relationship forest nicely in addition to returning it. |
Returns | The relationship forest with strings instead of ints. The tuple contains: (object string, relationship type). Note, the strings include both object handles and link names, don’t use them to backtrace the objects. |
def habitat. sims. habitat_simulator. kinematic_relationship_manager. RelationshipGraph. get_root_parents(self) -> typing.List[int]
Get a list of root objects: those which are parents but have no parents.
Returns | A list of object_ids. |
---|
def habitat. sims. habitat_simulator. kinematic_relationship_manager. RelationshipGraph. remove_obj_relations(self,
obj: int,
parents_only: bool = False) -> None
Remove all relationships for the object. Use this to remove an object from the kinematic manager.
Examples: an object is picked/grasped or object is removed from simulation.
- param parents_only:
- If set, remove only the upward relationships (parents) of the object. This maintains child relationships. For example, use this to move a container full of items.
def habitat. sims. habitat_simulator. kinematic_relationship_manager. RelationshipGraph. remove_relation(self,
parent: int,
child: int) -> None
Remove any relationship between the pair of objects.
Parameters | |
---|---|
parent | The parent object_id. |
child | The child object_id. |