I try to implement a method to get 3d bounding box informations in a lidar pointcloud. However, I encountered the node from RTX Lidar Node Descriptions — Omniverse Robotics documentation and found the output of object ID’s, but do not know what it should represent? Is there a mapping from object ID to prim object? If yes, then I can easily compute the bounding box, knowing which points hit which objects in the scene.
sorry for the delayed reply, I have internally forwarded the question to the relevant person. Until then, can you check if the Instance ID coincides with the Object Id? If so, you could read out the mapping from there.
Update: the instance id mapping is different, I will loop back once I have an answer.
Update 2: the instance segmentation id is the same as the object id.
Would the pointcloud, or the 3d bbox annotator work as a temporary workaround?
I have already tried the 3d bbox annotator, but I was not able to achieve any results. The data in the dictionary was always empty, so I guess it is not working for lidar pointclouds.
Is it intended to work out-of-the-box for lidar pointclouds? Maybe there is bug somewhere that a connection in the omnigraph is not there anymore
it seems the object_id is the same as the instance segmentation id. Using this function you can for example get the prim path:
from omni.syntheticdata._syntheticdata import acquire_syntheticdata_interface
def object_id_to_prim_path(object_id):
"""Given an ObjectId get a Prim Path
Args:
object_id (int): object id, like form a RTX Lidar return
Returns:
prim path string
"""
return acquire_syntheticdata_interface().get_uri_from_instance_segmentation_id(object_id)