Rtabmap behaves as 3DOF even though 6DOF is true
I have a mobile base mounted with several RGBD cameras and a 2D lidar. I use the wheel encoders for odometry, which is fed into rtabmap via the odom_frame_id
. This all works very well, localizing the robot in the 2D plane, but the localization doesn't update when the robot is tilted or lifted out of the plane. I supply appropriate covariances for odometry but they don't seem to affect this. When rtabmap is launched, the robot does localize to the same height, but that never changes.
What are some solutions for fixing this and why does this happen? Would sending odometry messages with fixed covariances help instead of passing the tf2
frame? Or is the only way to fuse with visual odometry or with an additional IMU?
Asked by achille on 2019-08-08 15:04:55 UTC
Answers
Note that rtabmap is simply a package that uses ROS. Checkout the rtabmap_ros github to get a better answer.
Asked by pring on 2019-08-08 16:13:55 UTC
Comments
this is not an answer. The github is for issues, not for questions.
Asked by achille on 2019-08-08 17:29:21 UTC
This all works very well, localizing the robot in the 2D plane, but the localization doesn't update when the robot is tilted or lifted out of the plane.
When Reg/Force3DoF
is enabled, it is assumed that the robot won't move in 3D (only x,y and yaw). If it is tilted, this will cause some problems with scan matching too as the 2D lidar scan won't match the 2D map, so localization won't be possible. If you want to do 6DoF mapping, then remove the 2D lidar from slam, only use the cameras. To estimate the tilt and elevation, you would need an IMU and/or visual odometry to fuse with wheel odometry (e.g., with robot_localization pkg).
Asked by matlabbe on 2019-08-16 09:43:28 UTC
Comments
Reg/Force3DOF
is set to true (mentioned in title). Are you saying that even in that case, a 2D lidar is not useful for Rtabmap? Or only if I fuse it with wheel and IMU?
Asked by achille on 2019-08-18 17:20:46 UTC
No if Reg/Force3DoF
is true, you have advantage to use 2D lidar. Wheel odometry would be also 2D. For IMU, you may only fuse the yaw value, to keep the odometry pose 2D (x,y,yaw).
Asked by matlabbe on 2019-08-18 17:51:19 UTC
Apologies - it's set to false so I'm mapping 6D
Asked by achille on 2019-08-18 17:54:29 UTC
Comments