目录
五、velodyne激光雷达与IMU的设置
激光雷达设置
在上文中我们成功安装与测试了LIO_SAM的程序,但是现在程序只能运行离线的数据包,要想使程序可以建立我们自己的地图,我们需要为其接入我们的硬件,让他可以实时调用硬件数据来完成建图任务。
首先我们来配置威力登的雷达,velodyne16线雷达使用的12v3A电源进行供电,可以通过电源适配器使用日常220v交流电。数据方面通过网线与主机进行通讯。因此对于我这只有一个网口的主机来说,雷达还是互联网,不可兼得。
在连接好硬件部分后,打开ubuntu右上角的有线网络设置。
可以像我一样,点击鼠标处的+号新建一种连接,然后点击进入新建网络右侧的齿轮。
直接进入IPv4子选项卡,将IPv4方式改为手动,在下面的地址位置,网关改为雷达的IP地址,子网掩码改为255.255.255.0,地址改为192.168.1.xx,注意地址不要与网关相同。然后保存设置,选中该有线网络配置。然后在浏览器中输入之前输入的网关地址,如果出现velodyne的界面,可以实时显示雷达转速等信息即为通讯成功,也可以在终端ping一下雷达的地址,能ping通也可以。
在测试雷达过程中遇到的问题:ubuntu在选中雷达有线连接时,会检测到该网络连接不到互联网然后自动断开,测试的时候没过几秒就会断开,即使重新切换回该有线网络设置过一段时间也会断开,目前我试过的最简单的办法是把所有的有线设置方案都删掉,只保留一个与威力登的有线网络配置即可。
进行到这里雷达部分算是已经连接成功,接下来需要为它安装ros工具包。
首先进入工作目录下的src文件夹,输入下面命令:
git clone https://github.com/ros-drivers/velodyne.git
rosdep init
rosdep update
//YOURDISTRO处填ros版本,我这里为melodic
rosdep install --from-paths src --ignore-src --rosdistro YOURDISTRO -y
cd ..
catkin_make
测试:
cd ~/catkin_ws
source devel/setup.bash
roslaunch velodyne_pointcloud VLP16_points.launch
在rviz中设置fixed frame为velodyne,点击add添加pointcloud2,在新添加的pointcloud2部分的topic选择/velodyne_points。
应该可以查看到雷达的点云图。
IMU设置
IMU的设置,根据IMU的型号不同应该会有不同的设置方式,相关的配置IMU的方法和使用文档生产厂商会配套提供,实际配置使用IMU请以厂商文档为准,在这里简单记录下我使用的这款IMU的配置方式,使用的IMU型号为WHEELTEC N100,使用的驱动芯片型号为CP2109。
首先将IMU接入装有windows的电脑,将随厂商发过来的文档解压,找到CP2xxCustomizationUtility软件,打开该软件修改串口号,找到Serial这一行对应的Value这一列,默认应该为0001,将其修改为0003,点击下面的Program Device。
window端的操作结束,可以打开附带的地面站工具查看一下imu的运行情况和效果。
下面接入ubuntu系统进行下一步操作,创建设备别名:外设对应的串口名一般都是会变化的,为了避免手动选择,这里可以通过给 USB 设备创建别名的方式解决。 WHEELTEC 通过脚本文件来为设备创建别名,WHEELTEC N 系列对应的串 口号为 0003,对应 ATTRS{serial}=="0003",脚本文件在fdilink_ahrs文件夹下的 wheeltec_udev.sh 文件 中,文件里有几句脚本命令,根据需要拷贝出需要的命令,新建fdilink_ahrs_udev.sh文件,把命令复制进去,保存退出。
依次运行以下两个指令,即可完成创建别名的工作。
//文件赋权:
sudo chmod 777 fdilink_ahrs_udev.sh
//执行脚本:
sudo ./fdilink_ahrs_udev.sh
惯导模块的设备别名创建成功后,后续直接使用别名来调用惯导模块,不需要考虑惯导 USB 端口号变化的问题。
打开ROS_SDK文件夹下的 fdilink_ahrs_ROS1.ZIP 压缩文件下的文件拷贝到工作空间的 src 文件夹下,进行解压。也可以将文件在 windows 系统下解压后的 fdilink_ahrs 拷贝到工作空间的 src 文件夹下。
打开终端,在工作空间路径下运行以下指令进行编译,等待显示[100%]编译成功。
catkin_make -DCATKIN_WHITELIST_PACKAGES=fdilink_ahrs
输入指令运行打开惯导
source devel/setup.bash
roslaunch fdilink_ahrs ahrs_data.launch
可以使用rostopic echo 话题来查看IMU输出。
六、程序的跑通
下面我们将使用自己的激光雷达和IMU来跑通程序。该部分参考博客:https://blog.csdn.net/weixin_53073284/article/details/123363263
准备工作:
1、首先需要拿到imu的内参,使用港科大的imu_utils标定工具,使用Allan方差来标定高斯白噪声和随机游走噪声。
参考博客:
https://blog.csdn.net/weixin_53073284/article/details/123341141?spm=1001.2014.3001.5502
2、联合标定lidar和imu的外参,使用瑞士苏黎世联邦理工大学自动驾驶实验室开发的lidar_align工具标定雷达和imu外参过程。
参考博客:
https://blog.csdn.net/weixin_53073284/article/details/123337885?spm=1001.2014.3001.5502
在这里需要注意,前期在我们的实验平台还没搭建完成时,雷达固定架还没有装好,在等待的这段时间我没有进行标定就进行了程序的运行,遇到了地图漂移和旋转等问题,没有进行进一步测试,原因可能是因为没标定也可恶能是因为在实验室狭窄环境和复杂电磁环境的多种因素。所以在此现将准备工作做好在进行下面的工作。
由于之前安装的各功能包时都在工作空间下进行的,故工作空间下src文件夹中应该会有激光雷达、IMU和LIO_SAM三个功能包。我们打开LIO_SAM文件夹中的/config/下的params.yaml文件,修改参数,原文件建议备份一份。
首先修改图中的话题。我实际修改为了“velodyne_cloudpoints”以及“imu”,此处根据自己实际的话题名修改,话题名前面有/符号,注意在此处不要添加。
打开前面imu_utils标定的结果按照数字编号对应粘贴覆盖掉params.yaml数值。
打开前面lidar_align标定的结果按照数字编号对应粘贴覆盖掉params.yaml数值。
params.yaml编号06编号07数值一样都用lidar_align的标定结果编号06三阶矩阵。
保存地图设置
更改savePCD :false改为ture,路径可以根据自己情况修改,以斜杠开头以及结尾。
工作完成,分别启动IMU节点、雷达节点、lioslam节点。
此时程序应该是可以正常启动运行了,建议在室外有足够空间位置的地方进行测试。
下面附上几张我测试的图片:
写在最后:
虽然程序是可以运行了,但是在后续测试中发现还是存在着一些问题,在实验中发现在环境比较狭窄,或者是经过一处受遮挡的地方,比如两车夹缝之间或者室内环境,图像会发生类似如下图:
目前还不确定这类问题发生的原因,先将其记录下来留待后期研究。