📝 Week 4:传感器数据处理与 OpenCV 入门
实验内容
本周完成了以下任务:
-
理解 ROS2 订阅者(Subscriber):学习如何获取传感器数据,特别是 LaserScan(雷达)和 Image(图像)消息。
-
LiDAR 数据处理:编写节点订阅 /scan 话题,实现简单的避障逻辑(遇到障碍物停止)。
-
OpenCV 视觉基础:学习图像读取、色彩空间转换(RGB/HSV)及基本的图像处理操作。
-
视觉巡线逻辑:结合 OpenCV 和 ROS2,利用颜色阈值分割(Color Thresholding)寻找路径中心,控制机器人跟随线条。
实验截图
LiDAR 避障逻辑实现 OpenCV 图像颜色分割
运行命令
Bash
查看雷达数据信息
ros2 topic echo /scan
运行视觉处理节点
ros2 run my_vision_pkg line_follower
使用 OpenCV 在 Python 中读取显示图片
python3 opencv_basic.py
遇到的问题
-
问题:LiDAR 返回的数据包含大量噪声或 inf(无穷大)值导致程序报错 解决:在代码中加入数据过滤逻辑,对距离值进行有效范围判定(如 if min(msg.ranges) < 0.5)。
-
问题:OpenCV 颜色阈值在不同光照下失效 解决:将图像从 BGR 色彩空间转换到 HSV 空间,HSV 对光照变化更具鲁棒性,更容易捕捉特定颜色。
学习心得
本周的学习让我从“开环控制”转向了“闭环反馈”。通过订阅雷达数据,机器人有了“触觉”来避开障碍;通过 OpenCV 视觉处理,机器人有了“视觉”来识别路径。我深刻体会到传感器的重要性,以及在处理原始数据(如 360 度的雷达射线或百万像素的图像)时,算法优化的必要性。