简单记录一下
VMWARE workstation15+UBUNTU16.04.7+ros-kinetic+gtsam4.0.0
(默认16.04比较老旧,不好用,vmtools也都没有,选了一个.7)
选16.04版本的理由也简单,只是为了参考一个博客,单独建的环境,虚拟机换版本也容易。
ROS-kinetic
去官网kinetic/Installation/Ubuntu - ROS Wiki看说明装的desktop-full
LIO-SAM的地址:https://github.com/TixiaoShan/LIO-SAM
GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
LIO-SAM作者推荐的依赖环境
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。
手动下载安装GTSAM
如果前一步能自动装,忽略此步。
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实测成功。
建立一个catkin工作空间,编译LIO-SAM
cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make
LIO-SAM编译失败
原因是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
make过程反馈
vmware共享文件问题
其实有vmware,剪贴板共享,但是/mnt/hgfs/下没有共享文件夹,我这里是拖了一个旧的vmware-tools-distrib目录,直接用vmware-install.pl装了一次,很多地方要选yes去覆盖,装完就可以找到/mnt/hgfs/共享文件传bag了,如果有办法传,忽略此步。
运行LIO-SAM
运行节点
source devel/setup.bash
roslaunch lio_sam run.launch
播包
rosbag play your-bag.bag -r 3
根据别人的“运行walk数据包不需要改params.yaml文件。其他两个数据包运行要修改topics和extrinsicRPY,extrinsicRot。需要保存pcd请修改保存true和路径。”
$ rosbag play casual_walk.bag
运行报错
[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
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