RTABMAP 使用与debug

0、写在前面的话

这篇博客主要记录了我在使用和学习RTABMAP过程中的遇到的各种问题以及对应的解决办法。

1、什么是RTABMAP

作为备忘我还是把关于RTABMAP的基本情况的做一记录:

RTAB-Map (Real-Time Appearance-Based Mapping) is a RGB-D Graph-Based SLAM approach based on an incremental appearance-based loop closure detector.
github home
Author Mathieu Labbé

2、RTABMAP安装与测试

作者给出了安装教程,适用与很多平台,我这里主要说Ubuntu的。在Ubuntu上的安装可以分为有ros 和 没有ros两种情况。我有ros,所以主要执行的是有ros情况的教程。

按照ros情况的教程在执行catkin_make时报错
解决办法:先执行这个地址下,“If ROS is not installed”的步骤,直到sudo make install。在这个过程中一定要注意自己的系统版本,因为不同的版本执行的命令可能不一样。之后,再在~/catkin_ws下执行catkin_make,问题应该基本可以解决了。
此时还会报“catkin_ws/src/rtabmap_ros/src/GuiWrapper.cpp:363:24: warning: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result [-Wunused-result] system(str.c_str());”这样的错误。这个错误的原因是:没有接收system()的返回值,按照提示的路径,定义一个int变量接收以下system()的返回值就好了。当然这个警告是可以忽视。

可以看出来作者的ros功底很到位,作者有ros的情况中提供了distribution和source两种安装方式。我第一次直接按照distribution 方式安装。然后再按照作者给出的使用教程继续往下走。
我的环境是Ubuntu14.04 ros_indigo kinect2,并且kinect2安装的驱动是libfreenect2,转换器是iai_kinect2
测试命令如下:

$ roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true
$ rosrun tf static_transform_publisher 0 0 0 -1.5707963267948966 0 -1.5707963267948966 camera_link kinect2_link 100
$ roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args:="--delete_db_on_start" rgb_topic:=/kinect2/qhd/image_color_rect depth_registered_topic:=/kinect2/qhd/image_depth_rect camera_info_topic:=/kinect2/qhd/camera_info

但是出现了如下错误:

odometry: Could not get transform from camera_link to kinect2_rgb_optical_frame (stamp=1467986384.023608) after 0.200000 seconds ("wait_for_transform_duration"=0.200000)!

原因有可能有两个:
1. roslaunch kinect2_bridge kinect2_bridge.launch 最后忘记了写publish_tf:=true
2. 有可能是缺少依赖库:GTSAM , cvsba

最后给出作者为我关于这个问题的解答


2016年8月20日左右作者好像更新了源码,运行时出现新问题:
RTABMAP 使用与debug_第1张图片

这个原因可能是:rtabmap的库版本和rtabmap_ros的版本不一致。全部更新,编译,安装

3、Database error

$ rtabmap-databaseViewer ~/.ros/rtabmap.db

出现如下错误

[ WARN] (2017-01-05 16:46:46.718) Parameters.cpp:728::readINI() Section "Core" in /home/turtlebot/.rtabmap/rtabmap.ini doesn't exist... Ignore this warning if the ini file does not exist yet. The ini file will be automatically created when this node will close.
[ INFO] (2017-01-05 16:46:46.791) DBDriverSqlite3.cpp:339::connectDatabaseQuery() Using database "/home/turtlebot/.ros/rtabmap.db" from the hard drive.
[ INFO] (2017-01-05 16:46:46.826) DBDriverSqlite3.cpp:374::connectDatabaseQuery() Database version = 0.11.13
[ERROR] (2017-01-05 16:46:46.826) DBDriverSqlite3.cpp:380::connectDatabaseQuery() Opened database version (0.11.13) is more recent than rtabmap installed version (0.11.8). Please update rtabmap to new version!
[ INFO] (2017-01-05 16:46:46.826) DBDriverSqlite3.cpp:421::disconnectDatabaseQuery() Disconnecting database /home/turtlebot/.ros/rtabmap.db...
[ INFO] (2017-01-05 16:46:51.468) main.cpp:54::main() All done! closing...
*** Error in `rtabmap-databaseViewer': free(): invalid pointer: 0x00007f4c0a78c978 ***
Aborted (core dumped)

作者说:I assume you are using the ROS binaries (0.11.8). You have to build from source to get 0.11.13. Follow instructions here (you can skip optional dependencies section as you already installed once rtabmap).

我发现是ubuntu源没有更新,使用

$ sudo apt-get remove ros-indigo-rtabmap

使用源码方式安装最新的rtabmap库。

你可能感兴趣的:(SLAM)