IsaacLab icon indicating copy to clipboard operation
IsaacLab copied to clipboard

[Bug Report] Camera poses not updated for TiledCamera

Open sunsleaf opened this issue 11 months ago • 2 comments

Just a tiny bug, the in the _update_buffers_impl() function of TiledCamera class, a call to self._update_poses() seems to be missing. In the Camera class, this is present. This leads to the data.pos_w attribute of TiledCamera class not being updated.

In tiled_camera.py:

def _update_buffers_impl(self, env_ids: Sequence[int]):
    # Increment frame count
    self._frame[env_ids] += 1

    # Extract the flattened image buffer
    for data_type, annotator in self._annotators.items():
    ...

In camera.py:

def _update_buffers_impl(self, env_ids: Sequence[int]):
    # Increment frame count
    self._frame[env_ids] += 1
    # -- pose
    self._update_poses(env_ids)
    # -- read the data from annotator registry
    # check if buffer is called for the first time. If so then, allocate the memory
    if len(self._data.output) == 0:
    ...

I'm sorry if this is already the intended behavior. But after I added the call to _update_poses() in tiled_camera.py, the data.pos_w attribute gets correctly updated.

sunsleaf avatar Feb 15 '25 10:02 sunsleaf

Thanks for posting this. We will review and update if necessary.

RandomOakForest avatar Feb 18 '25 10:02 RandomOakForest

This seems to have been fixed. In https://github.com/isaac-sim/IsaacLab/blob/main/source/isaaclab/isaaclab/sensors/camera/tiled_camera.py, the code now looks like:

def _update_buffers_impl(self, env_ids: Sequence[int]):
    # Increment frame count
    self._frame[env_ids] += 1

    # update latest camera pose
    if self.cfg.update_latest_camera_pose:
        self._update_poses(env_ids)

hersh avatar May 01 '25 00:05 hersh