"Ghost" walls appearing when robot rotates

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

"Ghost" walls appearing when robot rotates

__beb__
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.
Reply | Threaded
Open this post in threaded view
|

Re: "Ghost" walls appearing when robot rotates

__beb__
I discovered my issue. I found the aligned_depth_to_color topic coming from the RealSense D435 was lagging behind the color image. Apparently the aligned depth feature offered by librealsense is slow on ARM based processors: https://github.com/IntelRealSense/librealsense/issues/2257

I've switched to using depth_image_proc for depth alignment, there are no lag issues, and the maps look great! http://wiki.ros.org/depth_image_proc#depth_image_proc.2Fregister