You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
we are using ros3djs to visualize lidar data as PointCloud2. The data is published in the lidar frame, which means it is relative to the robot. The ros3djs scene is in a global fixed frame named 'world'.
We are observing, that the currently displayed scan moves with the robot when it drives forward. However, the next lidar data update is transformed to the correct position again. This means, walls "wobble". I looked into the code and suspect, that tf is not used correctly to transform data.
In SceneNode the transformation of objects is updated each time the transform between fixed frame and object frame changes. This does not account for the fact, that live sensor data can only be transformed with the transformation valid at the time of data acquisition. If the data is displayed for a few seconds (until the next scan arrives), the new transformation will be used to transform old data which leads to invalid results.
Ideally, this would be fixed by saving the time stamp of data and querying tf for frame and time stamp, but TFClient.js does not seem to support this. Alternatively, data should only be transformed once.
I think, this is a severe bug in the current implementation. What are your thoughts on this?
Best regards,
Martin Oehler
The text was updated successfully, but these errors were encountered:
Hello everyone,
we are using ros3djs to visualize lidar data as PointCloud2. The data is published in the lidar frame, which means it is relative to the robot. The ros3djs scene is in a global fixed frame named 'world'.
We are observing, that the currently displayed scan moves with the robot when it drives forward. However, the next lidar data update is transformed to the correct position again. This means, walls "wobble". I looked into the code and suspect, that tf is not used correctly to transform data.
In SceneNode the transformation of objects is updated each time the transform between fixed frame and object frame changes. This does not account for the fact, that live sensor data can only be transformed with the transformation valid at the time of data acquisition. If the data is displayed for a few seconds (until the next scan arrives), the new transformation will be used to transform old data which leads to invalid results.
Ideally, this would be fixed by saving the time stamp of data and querying tf for frame and time stamp, but TFClient.js does not seem to support this. Alternatively, data should only be transformed once.
I think, this is a severe bug in the current implementation. What are your thoughts on this?
Best regards,
Martin Oehler
The text was updated successfully, but these errors were encountered: