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:
- librealsense2 v. 2.50.0
- realsense-ros v. 2.3.2
- RTAB-Map v 0.20.18
- robot_localization v. 2.6.12
- 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
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