当前位置: 首页 > news >正文

树莓派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. 好了,大功告成,亲个嘴儿。

http://www.dtcms.com/a/273073.html

相关文章:

  • Linux Ubuntu 安装 AnythingLLM
  • STM32中DMA(直接存储器访问)详解
  • [Meetily后端框架] AI摘要结构化 | `SummaryResponse`模型 | Pydantic库 | vs marshmallow库
  • Spring Boot 与 Docker 的完美结合:容器化你的应用
  • 时序数据库InfluxDB
  • Flink 2.0 DataStream算子全景
  • MBSE工具+架构建模:从效率提升到质量赋能
  • 智能Agent场景实战指南 Day 9:市场营销Agent构建策略
  • 粗排样本架构升级:融合LTR特征提升模型性能的技术实践
  • 车载诊断架构 --- DTC深层次参数信息(e.g. ComfirmDTCLimit unconfirmDTCLimit)
  • 第10章 语句 笔记
  • 轻松使用格式工厂中的分离器功能来分离视频和音频文件
  • 噪音到10µVRMS 以下的DC-DC:TPS62913
  • 实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
  • Java 单例类详解:从基础到高级,掌握线程安全与高效设计
  • wpf使用webview2显示网页内容(最低兼容.net framework4.5.2)
  • C Primer Plus 第6版 编程练习——第8章
  • python语言编程文件删除后的恢复方法
  • ARM环境上 openEuler扩展根盘并扩展到根分区中
  • 小架构step系列10:日志热更新
  • HTTP核心基础详解(附实战要点)
  • Jaspersoft Studio-6.4.0 TextField内容展示不全
  • [实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
  • 【养老机器人】核心技术
  • 6. Z 字形变换
  • 决策树与随机森林Python实践
  • 如何测家里是否漏电,4种方法
  • 实时连接,精准监控:风丘科技数据远程显示方案提升试验车队管理效率
  • 倍增法和ST算法 个人学习笔记代码
  • esp32在vscode中仿真调试