ROS2自动驾驶
yolo5自动驾驶
1、重要!更换U盘的操作指引
2、关闭开机自启动大程序
3、Linux基础
4、YoloV5训练集
5、自动驾驶基础调试(代码解析)
6、自动驾驶特调
7、自动驾驶原理
8、PID算法理论
9、阿克曼运动学分析理论
10、建立运动学模型
常用命令
!重要!首次使用
一、原理分析
麦克纳姆轮运动学分析
二、AI大模型
3、AI大模型类型和原理
4、RAG检索增强和模型训练样本
5、具身智能机器人系统架构
6、具身智能玩法核心源码解读
7、配置AI大模型
8、配置API-KEY
三、深度相机
2、颜色标定
10、深度相机的基础使用
11、深度相机伪彩色图像
12、深度相机测距
13、深度相机色块体积测算
14、深度相机颜色跟随
15、深度相机人脸跟随
16、深度相机KCF物体跟随
17、深度相机Mediapipe手势跟随
18、深度相机视觉循迹自动驾驶
19、深度相机边缘检测
四、多模态视觉理解
20、多模态语义理解、指令遵循
21、多模态视觉理解
22、多模态视觉理解+自动追踪
23、多模态视觉理解+视觉跟随
24、多模态视觉理解+视觉巡线
25、多模态视觉理解+深度相机距离问答
26、多模态视觉理解+SLAM导航
27、多模态视觉理解+SLAM导航+视觉巡线
28、意图揣测+多模态视觉理解+SLAM导航+视觉功能
五、雷达
8、雷达基础使用
思岚系列雷达
六、建立地图
9、Gmapping建图
cartographer快速重定位导航
RTAB-Map导航
RTAB-Map建图
slam-toolbox建图
cartographer建图
Navigation2多点导航避障
Navigation2单点导航避障
手机APP建图与导航
七、新机器人自动驾驶与调整
多模态视觉理解+SLAM导航
新机器人自动驾驶
场地摆放及注意事项
启动测试
识别调试
无人驾驶的车道保持
无人驾驶路标检测
无人驾驶红绿灯识别
无人驾驶之定点停车
无人驾驶转向决策
无人驾驶之喇叭鸣笛
无人驾驶减速慢行
无人驾驶限速行驶
无人驾驶自主泊车
无人驾驶综合应用
无人驾驶融合AI大模型应用
八、路网规划
路网规划导航简介
构建位姿地图
路网标注
路网规划结合沙盘地图案例
路径重规划
九、模型训练
1、数据采集
2、数据集标注
3、YOLOv11模型训练
4、模型格式转换
十、YOLOV11开发
多机通讯配置
汝城县职业中等专业学校知识库-信息中心朱老师编辑
-
+
首页
五、雷达
思岚系列雷达
思岚系列雷达
## 1、雷达基础 思岚激光雷达教程资料: [http://www.slamtec.com/cn/Support](http://www.slamtec.com/cn/Support) 激光雷达技术邮箱地址:[support@slamtec.com](mailto:support@slamtec.com) 激光雷达wiki:[http://wiki.ros.org/rplidar](http://wiki.ros.org/rplidar) 激光雷达SDK:[https://github.com/Slamtec/rplidar\_sdk](https://github.com/Slamtec/rplidar_sdk) 激光雷达ROS:[https://github.com/Slamtec/rplidar\_ros](https://github.com/Slamtec/rplidar_ros) 激光雷达教程:[https://github.com/robopeak/rplidar\_ros/wiki](https://github.com/robopeak/rplidar_ros/wiki) ### 1.1、概述 单线激光雷达是指激光源发出的线束是单线的雷达,具有三角测距及TOF激光雷达之分,主要以机器人领域应用居多。其扫描速度快、分辨率强、可靠性高,与多线激光雷达相比,单线激光雷达在角频率及灵敏度上反应更快捷,所以在障碍物的测距距离和精度上也更加精准。  ### 1.2、思岚雷达组件 以思岚科技的单线激光雷达为例,其主要由激光器、接收器、信号处理单元和旋转机构这4个核心组件构成。 RPLIDAR采用遵循左手法则的坐标体系,传感器正前方定义为坐标系的 x 轴,坐标系原点为测距核心的旋转中心,旋转角度随顺时针方向旋转增大。具体的坐标系定义如下图所示:(详细信息请看配套手册) A1 A2、A3   **S1** **S2**   #### 1.2.1、激光器 激光器是激光雷达中的激光发射机构。在工作过程中,它会以脉冲的方式点亮。思岚科技的RPLIDAR A3系列雷达,每秒钟会点亮和熄灭16000次。 #### 1.2.2、接收器 激光器发射的激光照射到障碍物以后,通过障碍物的反射,反射光线会经由镜头组汇聚到接收器上。 #### 1.2.3、信号处理单元 信号处理单元负责控制激光器的发射,以及接收器收到的信号的处理。根据这些信息计算出目标物体的距离信息。 #### 1.2.4、旋转机构 以上3个组件构成了测量的核心部件。旋转机构负责将上述核心部件以稳定的转速旋转起来,从而实现对所在平面的扫描,并产生实时的平面图信息。  ### 1.3、单线激光雷达原理 单线机械旋转机关雷达工作原理参考下图:  #### 1.3.1、三角测距法 激光三角测距法主要是通过一束激光以一定的入射角度照射被测目标,激光在目标表面发生反射和散射,在另一角度利用透镜对反射激光汇聚成像,光斑成像在CCD(Charge-coupled Device,感光耦合组件)位置传感器上。当被测物体沿激光方向发生移动时,位置传感器上的光斑将产生移动,其位移大小对应被测物体的移动距离,因此可通过算法设计,由光斑位移距离计算出被测物体与基线的距离值。由于入射光和反射光构成一个三角形,对光斑位移的计算运用了几何三角定理,故该测量法被称为激光三角测距法。 按入射光束与被测物体表面法线的角度关系,激光三角测距法可分为斜射式和直射式两种。 ##### 1、直射式  如图1所示,当激光光束垂直入射被测物体表面,即入射光线与被测物体表面法线共线时,为直射式激光三角法。 ##### 2、斜射式 当光路系统中,激光入射光束与被测物体表面法线夹角小于90°时,该入射方式即为斜射式。如图2所示的光路图为激光三角法斜射式光路图。  由激光器发射的激光与物体表面法线成一定角度入射到被测物体表面,反(散)射光经B处的透镜汇聚成像,最后被光敏单元采集。 无论是直射式还是斜射式激光三角测距法,均可实现对被测物体的高精度、非接触测量,但直射式分辨率没有斜射式高。 思岚科技的RPLIDAR系列激光雷达也采用了斜射式的激光三角测距法。每次测距过程中,RPLIDAR系列激光雷达将发射经过调制的红外激光信号,该激光信号在照射到目标物体后产生的反光将被 RPLIDAR 的视觉采集系统接收,然后经过嵌入在 RPLIDAR 内部的 DSP 处理器实时解算,被照射到的目标物体与 RPLIDAR 的距离值以及当前的夹角信息将从通讯接口中输出。在电机机构的驱动下,RPLIDAR 的测距核心将顺时针旋转,从而实现对周围环境的 360度全方位扫描测距检测。 #### 1.3.2、TOF飞行时间测距法 TOF激光雷达要是基于测量光的飞行时间来获取目标物的距离。其工作原理主要表现为,通过激光发射器发出一束调制激光信号,该调制光经被测物体反射后由激光探测器接收,通过测量发射激光和接收激光的相位差即可计算出目标的距离。  在远距离物体条件下,其测量精度依旧精准、稳定。同时,TOF雷达因其超短时光脉冲的特性,在抗光干扰能力上也毫不逊色,即使在室外60Klx的强光下也能实现稳定测距及高精度建图。 总体来说,三角测距激光雷达与TOF激光雷达在实现上都有各自的难度,从原理上来说,TOF雷达的测距距离更远,在一些要求距离的场合,基本以TOF雷达居多,而三角测距激光雷达制造成本相对较低,且精度又可满足大多工业级民用要求,因此也备受业内关注。 ### 1.4、激光雷达A1M8  从上图可以看出,测量半径、采样速度、旋转速度、角度分辨率等参数是雷达工作性能的重要指标。 | 指标 | 描述 | |----------|--------------| | 测距半径 | 雷达的测量距离范围 | | 测距采样率 | 一秒内进行多少次测距输出 | | 扫描频率 | 一秒内雷达进行多少次扫描 | | 角分辨率 | 两个相邻测距的角度步进 | | 测量分辨率/精度 | 可以感知到距离变化最小值 | 较高的**扫描频率**可以确保安装激光雷达的机器人实现较快速度的运动,并且保证地图构建的质量。但要提高扫描频率并不只是简单的加速激光雷达内部扫描电机旋转这么简单,对应的需要提高测距采样率。否则当采样频率固定的情况下,更快的扫描速度只会降低角分辨率。除了测距距离、扫描频率之外,测量分辨率和建图精度等参数对于激光雷达性能来说同样重要,这些都是保证机器人能拥有稳定性能的重要参数。  ### 1.5、应用场景 得益于激光雷达技术的进步,激光雷达的测量半径、测距频率、距离分辨率及角度分辨率都有了很大的提升,可以帮助各类应用获取更大场景、更丰富的轮廓信息。在机器人自主定位导航、空间环境测绘以及安保安防等诸多领域,发挥着不可或缺的重要作用。  ### 1.6、功能包rplidar ros 将此项目克隆到工作空间的 src 文件夹,运行 catkin\_make 来构建 rplidarNode 和 rplidarNodeClient。 #### 1.6.1、重新映射USB串口 在启动雷达功能包时,有可能会遇到串口权限不可执行,这是有两种解决方法:1)直接添加权限;2)重映射USB串口 1)直接添加权限法 这种方法仅本次有效。 查看rplidar串口的权限: ls -l /dev |grep ttyUSB 添加写入权限:(如/dev/ttyUSB0) sudo chmod 777 /dev/ttyUSB0 2)重映射USB串口法 这种方法长期有效。 在rplidar\_ros功能包路径下,安装 USB 端口重映射 ./scripts/create\_udev\_rules.sh 重新插拔激光雷达的USB接口,使用以下命令修改重映射: ls -l /dev | grep ttyUSB  #### 1.6.2、代码测试 * 运行rplidar节点,在rviz中查看 roslaunch rplidar\_ros view\_rplidar.launch 您应该在 rviz 中看到 rplidar 的扫描结果。  * 运行 rplidar 节点并使用测试应用程序查看 roslaunch rplidar\_ros rplidar.launch \# 开启雷达 **<PI5 需要打开另一终端进入同一个docker容器内**  rosrun rplidar\_ros rplidarNodeClient \# 获取并打印雷达数据 您应该在控制台中看到 rplidar 的扫描结果  #### 1.6.3、建图测试 roslaunch rplidar\_ros test\_gmapping.launch  rosrun rqt\_tf\_tree rqt\_tf\_tree  rosrun rqt\_graph rqt\_graph  ### 1.7、源码解析 由【1.6】小节测试中,可以看得出激光雷达的数据并不是360°都有数据,有一个小缺口,那是因为,将激光雷达后面的数据屏蔽掉了。 rplidar.launch文件 ``` <launch> <arg name="lidar_type" value="$(env RPLIDAR_TYPE)" doc="lidar_type type [a1,a2,a3,s1,s2]"/> <arg name="frame_id" default="laser"/> <arg name="shielding_angle" default="30"/> <!-- scan filtering node --> <node name="scan_filter" pkg="rplidar_ros" type="scan_filter.py" output="screen" respawn="true"> <param name="shielding_angle" type="double" value="$(arg shielding_angle)"/> </node> <node name="rplidarNode" pkg="rplidar_ros" type="rplidarNode" output="screen" respawn="true"> <param name="serial_port" type="string" value="/dev/rplidar"/> <param name="serial_baudrate" type="int" value="115200" if="$(eval arg('lidar_type') == 'a1')"/> <param name="serial_baudrate" type="int" value="115200" if="$(eval arg('lidar_type') == 'a2')"/> <param name="serial_baudrate" type="int" value="256000" if="$(eval arg('lidar_type') == 'a3')"/> <param name="serial_baudrate" type="int" value="256000" if="$(eval arg('lidar_type') == 's1')"/> <param name="serial_baudrate" type="int" value="1000000" if="$(eval arg('lidar_type') == 's2')"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="inverted" type="bool" value="false"/> <param name="angle_compensate" type="bool" value="true"/> <param name="scan_mode" type="string" value="Sensitivity" if="$(eval arg('lidar_type') == 'a3')"/> <param name="scan_mode" type="string" value=" " unless="$(eval arg('lidar_type') == 'a3')"/> <remap from="scan" to="scan_raw"/> </node> </launch> ``` * shielding_angle参数:屏蔽雷达数据的角度,范围【0,360】,可根据实际情况调节。 * gmapping只适用于 单帧二维激光点数小于1440的点,如果单帧激光点数大于1440,那么就会出现【[mapping-4] process has died】 这样的问题。所以在使用S2激光雷达时,需要对S2点的数量做了一个稀释。 如果不需要过滤雷达数据,把【rplidar.launch】文件中以下内容注释或者删除掉 ``` <!-- scan filtering node --> <node name="scan_filter" pkg="rplidar_ros" type="scan_filter.py" output="screen" respawn="true"> <param name="shielding_angle" type="double" value="$(arg shielding_angle)"/> </node> ``` 然后修改【rplidarNode】节点 ``` <remap from="scan" to="scan_raw"/> <!-- 删除 --> <remap from="scan" to="scan"/> <!-- 增加 --> ``` 可根据实际情况处理
admin
2025年12月4日 10:54
32
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期
AI