Livox-Mapping
Livox-Mapping使用Livox固态激光雷达,实现实时激光雷达-惯性里程计。
链接: github.com/PJLab-ADG/Livox-Mapping
使用作者提供的docker image创建容器并运行Livox-Mapping
经历一系列编译失败,决定还是使用docker。
1. 下载镜像
docker pull siyuanhuang95/livox_slam:release
查看镜像
docker images
看到下载的镜像siyuanhuang95/livox_slam
2. 创建容器
docker run --gpus all -it -p 3316:22 --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" siyuanhuang95/livox_slam:release /bin/bash
- 有需要的话,将本地文件夹挂载到容器里面,使用
-v
,像这样:
-v /home/stephen/livox_mapping:/home/livox
查看创建的容器,CONTAINER_ID之后会用到
一些docker基础指令
- 停止容器
# 主机
docker stop CONTAINER_ID
# 容器内
exit
- 重启容器
docker restart CONTAINER_ID
- 执行容器
docker exec -it CONTAINER_ID bash
3. 容器中编译功能包
3.1 编译安装Livox-SDK
下载
git clone https://github.com/Livox-SDK/Livox-SDK.git
编译Livox-SDK
cd Livox-SDK
mkdir build
cd build && cmake ..
make
sudo make install
3.2 下载编译livox_ros_driver
cd ~/catkin_ws/src
git clone https://github.com/Livox-SDK/livox_ros_driver.git
cd ..
catkin_make
3.3 下载编译Livox-Mapping
cd ~/catkin_ws/src
git clone https://github.com/PJLab-ADG/Livox-Mapping.git
cd ..
catkin_make
笔者直接拷贝下载好的文件到挂载的文件夹中了,如果你像我一样,操作如下:
3.1 准备文件
将文件拷贝到挂载的本地文件夹
3.2 编译安装Livox-SDK
cd Livox-SDK
mkdir build
cd build && cmake ..
make
sudo make install
3.3 编译livox_ros_driver
在容器中进入挂载的文件夹,然后编译
cd livox_ros_driver/
catkin_make
- 因为livox_ros_driver没有在ros工作空间中编译,而且编译Livox-Mapping的时候,需要先source一下livox_ros_driver,为了避免每次执行都需要source:
在主机中新建终端,允许所有用户都能访问
xhost +
在容器中
gedit ~/.bashrc
末尾添加以下命令,
source /{你挂载的文件夹地址}/livox_ros_driver/devel/setup.bash
3.4 编译Livox-Mapping
在容器中进入挂载的文件夹,然后编译
cd Livox-Mapping/
catkin_make
同样的,在bashrc添加命令
source /{你挂载的文件夹地址}/Livox-Mapping/devel/setup.bash
4. 运行Livox-Mapping
4.1 启动livox-mapping
roslaunch livox_mapping livox_mapping.launch save_path:="PATH_TO_SAVE_SLAM_POSE_RESULT"
4.2 启动livox_odometry
新终端
docker exec -it CONTAINER_ID bash
roslaunch livox_odometry livox_odometry.launch save_path:="PATH_TO_SAVE_ODOM_RESULT_in_txt"
4.3 播放rosbag
新终端
docker exec -it CONTAINER_ID bash
rosbag play YOUR_ROSBAG.bag
最后生成的PCD地图在
~/Livox-Mapping/src/SC-PGO/PCD
另外
- 使用livox_ros_driver
采集数据
的时候,有两种数据格式可选,自定义的msg和pointcloud2:
分别使用
roslaunch livox_ros_driver livox_lidar_msg.launch
roslaunch livox_ros_driver livox_lidar.launch
Livox-Mapping使用的是自定义的msg,使用第一个launch,采集数据的时候不要弄错。