Robotics StackExchange | Archived questions

Improving VIO with RealSense D435I + RTABMap on a drone

Hi there! I want to use a RealSense D435I camera to achieve VIO to assist my drone in stabilizing. I take inspiration from the "opensource_tracking.launch" file provided by the realsense-ros package, however, I have modified it quite a bit for better position estimation. Before I go on here's a bit of information about the versions of the packages I'm using:


  1. librealsense2 v. 2.50.0
  2. realsense-ros v. 2.3.2
  3. RTAB-Map v 0.20.18
  4. robot_localization v. 2.6.12
  5. imufiltermadgwick v. 1.2.5

Also I am running a Jetson Nano module as the companion computer with ROS melodic, along with a Pixhawk flight controller.


The launch file

The launch file that so far has worked best for me, and was mostly inspired by this post is as follows:

link to launch file code (github)

The plan, once I am happy with the result, is to use the mavros package to transform the data from the /odometry/filtered topic to the flight controller


The Problem

So far so good, now the problem I have is that the odometry data seems to be very unstable, it jumps around in the world frame and somewhat easily gets lost. To show what I am talking about, I have included a link to this video This is expected to be the case of course, but I am still wondering if I could do better, and since my knowledge of the area is limited, I thought you smart people might be able to help me.

Also I have noticed that the visual odometry provided by rtabmap on the /rtabmap/odom topic only publishes at a rate of about 1.2 hz, which seems incredibly slow, is there any way to speed this up? I wasn't able to find much information about this.


Further information

Here I have included some pictures that might help understand what's going on

rqt_graph rqttftree

If you need more information I am happy to provide!

(i could not figure out how to include code snippet directly into the post as standard markdown didn't seem to work) (Also, sadly, I was unable to insert pictures here because of my low karma)

Thanks for your time!

Asked by ripdk12 on 2022-10-07 04:27:01 UTC

Comments

On Jetson nano, you may have to look for more lightweight visual [inertial] odometry package than the one provided with rtabmap. You can feed that odometry to rtabmap node afterwards to get the map.

Asked by matlabbe on 2022-10-09 23:11:15 UTC

Do you have any suggested lightweight packages for stereo odometry? I have managed to get the stereo odometry of rtabmap to spit out odometry messages at 2.7 Hz now, which has improved the results a lot, ideally i would love to see 20+ Hz odom messages. Thanks.

Asked by ripdk12 on 2022-10-10 03:00:05 UTC

You may try open_vins, msckf_vio packages. Based on results in this paper, msckf_vio was pretty fast.

Asked by matlabbe on 2022-10-23 16:42:19 UTC

Answers