树莓派5+Ubuntu24.04 LTS ROS2 N10P镭神激光雷达 保姆级教程
1. 背景
我去年在wheeltec的淘宝店上买了个N10P镭神激光雷达,本来是想给我的智能小车做导航用的。当时,买来之后呢,只有windows版的上位机,通过USB插口,确实可以扫描到雷达的点云,但是,我的智能小车计划用linux系统,而且当时我用的linux系统是树莓派4B+ubuntu24.04LTS版本。因为一直忙着,没有时间来试一下N10P激光雷达在linux下的效果。最近,我买了树莓派5,也装了Ubuntu24.04LTS版本和ROS2 Jazzy, 所以,我想再试试这个N10P激光雷达在linux系统下的效果,所以,就有了这篇保姆级教程。
2. N10P镭神激光雷达
这激光雷达本身是使用串口的,为了好用,厂商又用串口转USB板子做了一个USB接口。这个转接板用的芯片是南京沁恒的CH9102,而他们代码里又写的是/dev/wheeltec_laser. 所以,为了给他们的代码对应起来,wheeltec公司出了一长串的使用手册,教你这样改那样改。
我开始也按照他们的使用手册,改了一下,结果发现他们的使用手册跑不通,越搞越复杂,问他们技术人员,他们技术人员也说不出个啥,只说也可以不改。我也觉得可以不改,将USB插到树莓派,树莓派会自动识别,到时候直接读写就行了,不必搞那么复杂。
3. 保姆级教程
3.1 ROS2工作区
我的树莓派5已经安装了ROS2 Jazzy系统,所以,准备将这个激光雷达用到ROS2 Jazzy系统上来。那么首先,就给这个激光雷达,建个工作区ros2_lidar_ws,再在工作区下建个src目录。如下:
mkdir ros2_lidar_ws
cd ros2_lidar_ws
mkdir src
cd src
这样,在我的机子上,就在这么个目录下
然后,将wheeltec提供的ROS2的驱动代码都拷贝到这个src目录下,驱动代码就是lslidar_driver和lslidar_msgs。那么,拷贝完成,就下列这样。
3.2相关环境的安装
工作区和驱动代码搞定之后,就要来准备相关的编译环境。安装wheeltec的使用手册,需要安装
sudo apt install ros-jazzy-diagnostic-updater
sudo apt install libpcap-dev
安装完了之后呢,要编辑下列目录下的lsn10p.yaml文件。
将其中的串口修改为激光雷达插上去的串口号,我的机子插上去的串口号是/dev/ttyACM0
修改如下:
3.3 编译
上述准备工作做好之后,可以编译了。
编译呢,是退回到工作区目录,也就是 /ros2_lidar_ws/.
在这个目录下,打命令:
colcon build
正常呢,就编译成功了。
这里,会有一个警告,c++语言的。我反馈给wheeltec了,他们说是激光雷达厂家写的,还没有适配Jazzy, 他们也不懂。其实是很简单的一个 delete packet_bytes的问题,要写成delete [] packet_bytes。那么,修改了之后,就编译成功了。
有一个cmake的警告,不影响使用,暂时不管它。
3.4 运行
运行打三个命令:
首先,要准备环境
source install/local_setup.bash
启动
ros2 launch lslidar_driver lsn10p_launch.py
如下:
这时,如出现 open_port /dev/ttyACM0 error,应该将用户加入 dialout 组。
用rviz查看点云效果,运行命令
ros2 launch lslidar_driver viewer_scan_launch.py
4. 效果检验
我比较了一下windows下的点云和linux下的点云,感觉,还是windows下要好一点。点云图片如下:
windows效果
linux效果
雷达在同一地点。
5. 好了,大功告成,亲个嘴儿。