目录
ROS-kinetic
LIO-SAM作者推荐的依赖环境
手动下载安装GTSAM
建立一个catkin工作空间,编译LIO-SAM
LIO-SAM编译失败
vmware共享文件问题
运行LIO-SAM
运行报错
保存点云
安装PCL
VMWARE workstation15+UBUNTU16.04.7+ros-kinetic+gtsam4.0.0
(默认16.04比较老旧,不好用,vmtools也都没有,选了一个.7)
选16.04版本的理由也简单,只是为了参考一个博客,单独建的环境,虚拟机换版本也容易。
省流:每一步最好做快照!!!
(重要:建议想更新cmake版本提前安装,不然后续改变版本会破坏ros系统,如果pcl不自己make,cmake版本变更不是必要)
去官网kinetic/Installation/Ubuntu - ROS Wiki看说明装的desktop-full
地址(含教程):https://github.com/TixiaoShan/LIO-SAM
GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
sudo apt-get install -y ros-kinetic-navigation
sudo apt-get install -y ros-kinetic-robot-localization
sudo apt-get install -y ros-kinetic-robot-state-publisher
作者还提供了直接安装GTSAM的命令
sudo apt install libgtsam-dev libgtsam-unstable-dev
实测不成功,资源找不到(梯子也没用,可能需要设置资源或者资源过期,或者我的梯子不好),所以需要手动装GTSAM。
如果前一步能自动装,忽略此步。
(如果怕出错,先看下边的“LIO-SAM编译失败”)
wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.2/
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install -j8
这块可能报错一个C11罢工,kill的错误
c++: internal compiler error: Killed (program cc1plus)
可能和内存或者CPU资源有关,把-j8去了可以编译成功,会慢很多。或者改虚拟机内存到8192,但是实测没成功,改大内存,-j4实测成功。
cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make
原因是GTSAM和EIGEN版本不一致
error: static assertion failed: Error: GTSAM was built against a different version of Eigen static_assert!
为了向下兼容EIGEN,4.0.2可能不好用,这里直接改成4.0.0再重复上述操作可以下载成功。
wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0.zip
再重新编译安装一遍GTAM,此外,去CMakelist改一下使用系统的EIGEN,OFF改成ON
其实有vmware,剪贴板共享,但是/mnt/hgfs/下没有共享文件夹,挂载点有一些bug,也可能是安装软件改变环境影响的。我这里是拖了一个旧的vmware-tools-distrib目录,直接用vmware-install.pl装了一次,很多地方要选yes去覆盖,装完就可以找到/mnt/hgfs/共享文件传bag了,如果有办法传,忽略此步。
运行节点
source devel/setup.bash
roslaunch lio_sam run.launch
播包
rosbag play your-bag.bag -r 3
根据“运行walk数据包不需要改params.yaml文件。其他两个数据包运行要修改topics和extrinsicRPY,extrinsicRot。需要保存pcd请修改保存true和路径。”先运行casual_walk.bag
$ rosbag play casual_walk.bag
数据:
链接:https://pan.baidu.com/s/1098VzzSDhs4ByW-HrqZwNw
提取码:mmcw
[lio_sam_mapOptmization-4] process has died [pid 16913, exit code -6
一个可能是我装过多次gtsam,先4.0.2有问题,又4.0.0,忘了卸载了,所以有冲突
搜了网上的, 一说是自动寻找路径在ros,复制过去就好了,一说export路径的,但是他们的错误码都是127,我是6,问题不同,决定自己删除gtsam重装。
没有删除命令,打算手动删除gtsam,主要就是/usr/local的lib和include。
sudo rm /usr/local/lib/libgtsam* -rf
sudo rm /usr/local/include/gtsam* -rf
重新安装gtsam4.0.0,进入gtsam4.0.0/build目录
sudo make install -j4
重新编译lio-sam,进入catkin_ws目录catkin_make
重新source devel/setup.bash。
重新roslaunch
重新play bag
改成true
编辑关闭延迟
取决于系统和ros版本
sudo gedit /opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py
或者
sudo gedit /opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py
把时间改长一点,默认15.0
有一个办法是用apt-get自动装,失败。
有一个办法是用一大串依赖,自己编译pcl源码,年代久远,有丢失(qt或者vtk之类的库)。
PS:编译pcl时候因为默认cmake版本低3.5,要求3.10,重装cmake导致ros功能不完整,需要重装ros,最好就是装ros前选好cmake高级版本,或者就先不要装pcl。
最后选择下载一个pcl的deb包,直接装,成功。
https://www.dropbox.com/s/9llzm20pc4opdn9/PCL-1.8.0-Linux.deb?dl=0
打开lio-sam保存的pcd文件