ROS环境下BLAM的安装和使用
环境:
Ubuntu 16.04
ROS-kinetic
Velodyne 16激光雷达
- 安装依赖
#Boost >= 1.43 sudo apt-get install libboost-all-dev #CMake >= 2.6 sudo apt-get install cmake git clone https://bitbucket.org/gtborg/gtsam.git cd gtsam mkdir build cd build cmake .. sudo make install
- 安装blam
mkdir ~/blam_ws cd ~/blam_ws git clone https://github.com/erik-nelson/blam cd blam ./update
- 测试
加载环境source ~/blam_ws/blam/internal/devel/setup.bash
在线模式:
使用/velodyne_points话题,消息类型为sensor_msgs::PointCloud2roslaunch blam_example test_online.launch
如是其他多线雷达,修改test_online.launch文件订阅的话题
<remap from="~pcld" to="/rslidar_points"/>
离线模式:
先执行rosbag文件,如rosbag play velodyne.bag
再执行
roslaunch blam_example test_offline.launch
启动rviz,查看建图效果
rosrun rviz rviz -d blam_example/rviz/lidar_slam.rviz
- 常见问题
问题1:./update: 行 9: wstool: 未找到命令
原因1:wstool未安装
解决1:安装 Python-wstool包sudo apt-get install python-wstool
问题2:fatal error: ros/ros.h: 没有那个文件或目录
原因2:
解决2:
进入geometry_utils目录cd blam/internal/src/geometry_utils
修改package.xml增加
<build_depend>roscpp</build_depend> <run_depend>roscpp</run_depend>
修改CMakeList.xml增加
find_package(catkin REQUIRED COMPONENTS roscpp) include_directories(include ${catkin_INCLUDE_DIRS})
问题3:error: static assertion failed: Error: GTSAM was built against a different version of Eigen
原因3:手动安装过Eigen库,GTSAM包中已经存在Eigen,系统中存在两个版本的Eigen,
解决3:gtsam使用系统Eigen库编译,修改gtsam/CMakeLists.txt 添加set(GTSAM_USE_SYSTEM_EIGEN ON)
参考4:https://github.com/erik-nelson/blam/issues/48
问题4:[blam/blam_slam-1] process has died [pid 30804, exit code -11
原因4:问题3关联
解决4:重新编译GTSAM
参考4:https://github.com/erik-nelson/blam/issues/42问题5:GTSAM切换V3.2.3版本重新编译,出现[gtsam/CMakeFiles/gtsam.dir/linear/VectorValues.cpp.o] Error 4
原因5:TBB版本太旧,要求4.4或以上版本,但是我的版本已经是4.4了!不明所以,最终放弃使用这个版本。
解决5:修改编译选项不使用TBB或者升级TBB
我选择disable flag TBB,修改CMakeLIst.txt文件,跟参考文章不一样,我只修改了这一处就好了。option(GTSAM_WITH_TBB "Use Intel Threaded Building Blocks (TBB) if available" OFF)
参考5:https://github.com/borglab/gtsam/issues/19
https://blog.csdn.net/qq_35590091/article/details/97789438 - 参考
3D-SLAM入门教程-多线雷达(velodyne 16)BLAM 三维建图
github:https://github.com/erik-nelson/blam