RelationshipGraph class
Uses 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. |