Overview
RTAB-Map’s ROS package. http://wiki.ros.org/rtabmap_ros
Use in launch file
<include file="$(find rtabmap_ros)/launch/rgbd_mapping.launch" >
<arg name="rtabmap_args" value="--delete_db_on_start" />
<arg name="rviz" value="true" />
<arg name="rtabmapviz" value="false" />
</include>
RTAB-Map
https://github.com/introlab/rtabmap/wiki/Installation#ubuntu
$ cd ~
$ git clone https://github.com/introlab/rtabmap.git rtabmap
git checkout 0.18.1
$ cd rtabmap/build
$ cmake -DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel ..
$ make
$ sudo make install
Uninstall:
Remove the RTAB-Map’s source directory.
Remove RTAB-Map’s working directory in “~/Documents/RTAB-Map”.
Remove RTAB-Map’s configuration file in “~/.rtabmap/rtabmap.ini”.
sudo make uninstall
Install rtabmap_ros
$ cd ~/catkin_ws
$ git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros
git checkout 0.18.1
$ catkin_make -j1
Test RTAM Map
Run rtabmap
Refer Kinect mapping
Typical error
Cannot find actor named
https://github.com/introlab/rtabmap/issues/382
[ERROR] (2019-04-11 10:07:33.351) CloudViewer.cpp:2555::setCloudVisibility() Cannot find actor named "cloudOdom".
[ERROR] (2019-04-11 10:07:33.351) CloudViewer.cpp:2555::setCloudVisibility() Cannot find actor named "featuresOdom".
[ERROR] (2019-04-11 10:07:33.498) CloudViewer.cpp:2555::setCloudVisibility() Cannot find actor named "cloud1".
Analysis:
For me the error is caused by the boost library.
Recompile after rm /usr/local/include/boost/ -rf. Everything works properly.
boost conflict
[ 60%] Building CXX object rtabmap_ros/CMakeFiles/rtabmap_ros.dir/src/nodelets/rgbdicp_odometry.cpp.o
In file included from /usr/local/include/boost/numeric/ublas/vector.hpp:21:0,
from /usr/local/include/boost/numeric/ublas/matrix.hpp:18,
from /opt/ros/kinetic/include/laser_geometry/laser_geometry.h:37,
from /home/yubao/catkin_ws/src/rtabmap_ros/src/nodelets/rgbdicp_odometry.cpp:41:
/usr/local/include/boost/numeric/ublas/storage.hpp: In member function ‘void boost::numeric::ublas::unbounded_array<T, ALLOC>::serialize(Archive&, unsigned int)’:
/usr/local/include/boost/numeric/ublas/storage.hpp:299:18: error: ‘make_array’ is not a member of ‘boost::serialization’
ar & serialization::make_array(data_, s);
^
/usr/local/include/boost/numeric/ublas/storage.hpp: In member function ‘void boost::numeric::ublas::bounded_array<T, N, ALLOC>::serialize(Archive&, unsigned int)’:
/usr/local/include/boost/numeric/ublas/storage.hpp:494:18: error: ‘make_array’ is not a member of ‘boost::serialization’
ar & serialization::make_array(data_, s);
^
In file included from /opt/ros/kinetic/include/laser_geometry/laser_geometry.h:37:0,
from /home/yubao/catkin_ws/src/rtabmap_ros/src/nodelets/rgbdicp_odometry.cpp:41:
/usr/local/include/boost/numeric/ublas/matrix.hpp: In member function ‘void boost::numeric::ublas::c_matrix<T, M, N>::serialize(Archive&, unsigned int)’:
/usr/local/include/boost/numeric/ublas/matrix.hpp:5977:18: error: ‘make_array’ is not a member of ‘boost::serialization’
ar & serialization::make_array(data_, N);
^
rtabmap_ros/CMakeFiles/rtabmap_ros.dir/build.make:150: recipe for target 'rtabmap_ros/CMakeFiles/rtabmap_ros.dir/src/nodelets/rgbdicp_odometry.cpp.o' failed
make[2]: *** [rtabmap_ros/CMakeFiles/rtabmap_ros.dir/src/nodelets/rgbdicp_odometry.cpp.o] Error 1
CMakeFiles/Makefile2:4218: recipe for target 'rtabmap_ros/CMakeFiles/rtabmap_ros.dir/all' failed
make[1]: *** [rtabmap_ros/CMakeFiles/rtabmap_ros.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Analysis:
It said the boost header file in " /usr/local/include/boost/" is not compatible with rtabmap_ros.
I checked:
yubao@yubao-Z370M-S01:~$ ls /usr/include/boost/
accumulators mem_fn.hpp
algorithm memory_order.hpp
align move
aligned_storage.hpp mpi
align.hpp mpi.hpp
This looks like I have installed two versions of boost library.
Therefore, I delete one version in /usr/local/include which is mannually installed before.