Closed sai-prasanna closed 10 months ago
For the noise issue here, could you try disabling the denoising stuff Omniverse has (DLSS, etc.) - these should be in the render settings menu in the RTX Realtime Settings. https://docs.omniverse.nvidia.com/materials-and-rendering/latest/103/render-settings_overview.html
The visualsensor local pose thing seems to be a separate issue so I opened a new issue for that.
Also this dungeon_maps thing looks really interesting. Perhaps we can add direct support for it later.
@sai-prasanna Sorry for the late reply. I think the issue resides in the following line:
c_relative_pos, c_relative_ori = env.robots[0].sensors['robot0:eyes_Camera_sensor'].get_position_orientation()
I believe sensor.get_position_orientation()
also returns the global pose of the camera w.r.t the world, NOT w.r.t the robot base. If this doesn't work, feel free to re-open the issue and ping me. Thanks!
@ChengshuLi It should, but it does not. The value returned there is always the same regardless of where the robot is. Which is why I called it relative pos, ori. I guess that's why @cgokmen raised https://github.com/StanfordVL/OmniGibson/issues/243 as an issue.
Let's try to verify this @ChengshuLi - I do agree there might actually be a bug here.
Got it. Let me investigate a bit more and get back to you.
@sai-prasanna Sorry another question, which robot are you using?
Sorry, following up on this as well. I just tested and verified that without gm.ENABLE_FLATCACHE
on, VisionSensors should return the correct value, since every prim's attributes (including pos / ori) gets updated every time an object moves in the sim.
However, gm.ENABLE_FLATCACHE
(which in your attached script, is set to True
) causes this to not work, which is expected because it is precisely the bypassing of writing to the USD at every timestep that gives the performance boost associated with flatcache.
Can you try setting gm.ENABLE_FLATCACHE=False
and trying again?
@cremebrule if @sai-prasanna is using an ActiveCameraRobot with the camera attached to a moving link, even with gm.ENABLE_FLATCACHE=False
, the result will still be wrong, right?
Nope, it should still be correct. I just tested with Fetch.
@cremebrule Thanks! setting it makes the position and orientation return the values I was computing manually.
@cremebrule Hello, have you successfully used Fetch to build a map, can you share your method, I seem to be using Fetch when the result is even worse, thank you.
Closing this as resolved, the concrete issue to fix can be found in #243
I am implementing 2D bird's eye semantic mapping for omnigibson. I use a library called dungeon_maps which takes depth and semantic labels to construct the map. It uses camera parameters (hfov, resolution) and camera absolute pose to project the semantic pointcloud constructed from depth map onto a top down view. I am building a global map.
I run into a problem where when I move the robot around, the objects slightly move around. ie There is noise in either the pose or the observation.
FYI, to get the absolute pose, I add the x,y coordinate of camera position to the robot position. One thing that's weird is that the same
get_position_orientation
api returns position/orientation w.r.t global frame for the robot, but I guess for the sensor it returns the position/orientation relative to the robot base link. I might be wrong here and missing some other transformation which might result in the noise.Here is the brief code to replicate what I am talking about. Do a
pip install dungeon_maps
in whatever environment you're using.Visually, when the robot moves around the observations have this bounce (tilt) to it, but I don't use any sensor noises and I assume the coordinates returned will be the true coordinates.