Hey folks,
I've been tuning my rtabmap setup for a few months now. I've been mostly happy with the results (huge kudos to matlabbe!!) but have encountered an issue. I've noticed when the robot rotates faster than 1 rad/sec, walls will "streak" and cause incorrect walls to appear in the map. Looking at other threads on this forum, it seems the can be caused by incorrect odometry. I've triple checked that my odometry is within 2 degrees when spinning 360 and within 1cm XY when moving over a meter.
My setup is a non-holonomic robot with realsense D435 and encoder odometry. I am suspecting the camera rgb and depth feeds are out of sync with wheel odometry. I don't have much to back this hypothesis up however... I've noticed the timestamps on my odometry messages are around 0.03-0.05 seconds behind the camera, but I'd think the streaks would happen in the opposite direct that I'm seeing if this was the cause. Here's some things I've tried with no effect on this issue:
- Adjusting odom TF covariances
- Reduced motion blur by reducing camera exposure
- Temporarily eliminating micro delays in computing odometry
The only thing that seems to help is to stop moving the robot every few seconds and hope rtabmap doesn't update while I'm rotating or have loop closure tidy up the issues later.
I've had no issues with frame registration when the robot is driving forwards.
Here's my db file:
https://drive.google.com/file/d/1Si_xjJvSeh-qCWkIz_JAFQ81IDWzmv0O/view?usp=sharing
My rtabmap config is here:
https://github.com/Woz4tetra/dodobot-ros/blob/master/src/db_config/launch/rtabmap.launch
Here's an instance where the robot was rotating and frame was registered incorrectly.