目录
- 一、LeGo-LOAM部署
- 二、速腾聚创激光雷达调试
- 三、将速腾聚创激光雷达连到LeGo-LOAM
- 四、解决LeGo-LOAM不保存pcd地图的问题
一、LeGo-LOAM部署
参考链接:实车部署采用速腾聚创RS16激光雷达的LeGo-LOAM
LeGO-LOAM初探:原理,安装和测试
1.gtsam安装(install的过程比较慢,需要耐心等待)
git clone https://bitbucket.org/gtborg/gtsam.git
cd ~/gtsam
mkdir build
cd build
cmake ..
sudo make install
2.下载并编译LeGO-LOAM
mkdir -p slam_ws/src
cd slam_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make
3.数据集试运行
数据集的百度云地址:https://pan.baidu.com/s/1SkrqfN82il1m6jhkLZT-WA 密码: oqo8
打开LeGO-LOAM/LeGO-LOAM/launch/run.launch
文件,确保/use_sim_time
的value
为true
(在线建图为false
,离线建图为true
)
运行lego-loam
(黑屏别慌)
source devel/setup.bash
roslaunch lego_loam run.launch
遇到下面的报错
解决办法
参考链接:运行lego_loam报错[mapOptmization-7] process has died pid 11653, exit code 127, cmd /home/p/legoloam/dev
在roslaunch之前动态链接库
source devel/setup.bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
roslaunch lego_loam run.launch
运行刚刚下载的数据集
source devel/setup.bash
rosbag play xxx.bag --clock --topic /velodyne_points /imu/data
二、速腾聚创激光雷达调试
参考链接:速腾聚创 RoboSense RS-Helios 32线激光雷达使用 LeGO-LOAM 算法建图
因为RS-lidar默认IP是192.168.1.200
,RS-lidar默认可接受数据的IP是192.168.1.102
,所以我们将本地ip地址改为192.168.1.102
,子网掩码设置为255.255.255.0
将雷达插上电源,网线与电脑连接后,手动修改ip
然后重启网络连接(网络开关按钮关一下,然后再打开)
下面打开wireshark
,发现数据已经通了
sudo wireshark
下面配置ROS开发环境,ros驱动下载链接:https://github.com/RoboSense-LiDAR/rslidar_sdk/releases
手动下载rslidar_sdk.tar.gz
文件
新建一个工作空间,将下载好的ros驱动解压到该路径下
mkdir -p RoboSense-LiDAR_ws/src
安装参考github上面的教程
1.安装环境依赖
安装Yaml(version: >= v0.5.2)
sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev
安装libpcap(version: >= v1.7.4)
sudo apt-get install -y libpcap-dev
2.编译和运行
下面以ros形式编译
(1)在文件CMakeLists.txt的顶部,将变量COMPILE_METHOD设置为CATKIN。
(2)将rslidar_sdk
工程目录下的package_ros1.xml
文件重命名为package.xml
。
(3)创建一个新的工作区文件夹,并在其中创建一个src文件夹。然后将rslidar_sdk
项目放入src文件夹中。(前面已经做过了)
(4)回到工作区的根目录,运行以下命令进行编译和运行。(如果使用zsh,请将第二个命令替换为source-devel/setup.zsh
)。
#编译
cd ~/RoboSense-LiDAR_ws
catkin_make
#运行
source devel/setup.bash
roslaunch rslidar_sdk start.launch
运行后会自动打开一个rviz,rviz中没有雷达点云
后来查看RoboSense-LiDAR_ws/src/rslidar_sdk/doc/howto/how_to_offline_decode_pcap_cn.md
里面找到要设置雷达型号
查看雷达的发货清单,发现雷达的型号是RS-Helios
,打开RoboSense-LiDAR_ws/src/rslidar_sdk/config/config.yaml
文件,将lidar_type
改成RSHELIOS
重新编译一下工作空间,运行节点,发现有激光点云信息了
三、将速腾聚创激光雷达连到LeGo-LOAM
参考链接:速腾聚创 RoboSense RS-Helios 32线激光雷达使用 LeGO-LOAM 算法建图
1.下载一个转换包,放在RoboSense-LiDAR_ws/src
(与激光雷达的ros驱动路径一致)路径下
cd ~/RoboSense-LiDAR_ws/src
git clone https://github.com/HViktorTsoi/rs_to_velodyne.git
添加launch文件
新建/rs_to_velodyne/launch
文件夹,新建rs_to_velodyne.launch
文件,内容如下。(LeGO-LOAM需要的点云格式为XYZIR
,args="XYZIRT XYZIR
"为转换格式的参数。)
<launch>
<node pkg="rs_to_velodyne" name="rs_to_velodyne" type="rs_to_velodyne" args="XYZIRT XYZIR" output="screen">
</node>
</launch>
打开RoboSense-LiDAR_ws/src/rslidar_sdk/CMakeLists.txt
,确保POINT_TYPE
为XYZIRT
编译、安装、运行
cd ~/RoboSense-LiDAR_ws
catkin_make
source devel/setup.bash
#运行rs_to_velodyne
roslaunch rs_to_velodyne rs_to_velodyne.launch
#运行ros驱动
roslaunch rslidar_sdk start.launch
订阅topic:/rslidar_points
,发布topic:/velodyne_points
接着打开LeGO-LOAM/LeGO-LOAM/launch/run.launch
文件
将/use_sim_time
的value
改成false
(在线建图为false
,离线建图为true
)
然后运行lego_loam
source devel/setup.bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
roslaunch lego_loam run.launch
rviz中成功出现点云
四、解决LeGo-LOAM不保存pcd地图的问题
首先LeGO-LOAM/
路径下新建PCD_Files
文件夹,用来保存pcd
点云地图
接着在LeGO-LOAM/LeGO-LOAM/include/utility.h
文件中第57行将文件保存路径改成/home/smart_car/slam_ws/src/LeGO-LOAM/PCD_Files/
同样的,在LeGO-LOAM/LeGO-LOAM/src/mapOptmization.cpp
中,将visualizeGlobalMapThread()
函数里面有三个文件路径改成自己的
运行LeGO-LOAM
程序,然后播放ros包,发现目标路径下并没有点云文件保存下来
解决办法(参考链接:LeGO-LOAM初探:原理,安装和测试):
经过调试,发现程序进入到publishGlobalMap()
函数后没有出来,检查publishGlobalMap()
函数,发现下面代码:
if (pubLaserCloudSurround.getNumSubscribers() == 0)
return;
表明我们需要订阅pubLaserCloudSurround
,否则会退出函数,不执行后面的代码,导致globalMapKeyFramesDS
为空。
因此,在运行LeGO-LOAM
程序后,手动在rviz
中勾选Map Cloud
(这个问题是代码更新导致的,具体为https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/blob/master/LeGO-LOAM/launch/test.rviz中Map Cloud
由默认的勾选变成不勾选。)
然后播放ros包,播放完毕后然后按ctrl+c
退出LeGO-LOAM
程序,最终可以在自定义目录下生成四个pcd文件。
使用这个命令安装一下点云工具
sudo apt install pcl-tools
使用下面的命令查看点云图
pcl_viewer finalCloud.pcd