3、环境感知基础:传感器分类与障碍物检测原理
大家好,我是老张。今天咱们聊聊环境感知这块。
做机器人运动规划,说白了就是让机器人知道「我在哪,周围有什么,接下来怎么走」。而「周围有什么」这一步,全靠传感器。我刚开始做项目时,总觉得传感器越多越好,结果数据打架,处理不过来。后来才明白——选对传感器,比堆数量重要得多。
3.1 传感器分类:三种主流方案
目前工业界和学术界常用的传感器,主要分三类。我按自己的使用经验,给你排个序:
| 传感器类型 | 核心原理 | 典型产品 | 我的评价 |
|---|---|---|---|
| 激光雷达(LiDAR) | 发射激光束,测量反射时间 | Velodyne、Hesai、Ouster | 精度高,但贵。我一般用在室外无人车上 |
| 深度相机 | 双目视觉或结构光,计算视差 | Intel RealSense、Kinect | 便宜,但受光照影响大。室内用得多 |
| 超声波传感器 | 发射声波,测量回波时间 | HC-SR04、MaxBotix | 成本极低,但精度差。适合近距离防撞 |
你想想看,这三种传感器各有各的脾气。激光雷达像是个「固执的工程师」——数据准,但视野窄。深度相机像「艺术家」——信息丰富,但容易受光线干扰。超声波嘛,就是个「老实人」——简单可靠,但别指望它干精细活。
3.2 激光雷达:点云数据的来源
激光雷达的工作原理,其实不复杂。它发射一束激光,打到物体表面后反射回来。通过计算发射和接收的时间差,就能知道距离。嗯,这里要注意——激光雷达测的是「点到点的距离」,不是「面到面的距离」。
我在项目中遇到过一个问题:用16线激光雷达扫描一个玻璃门,结果点云里完全看不到门。为什么?因为玻璃透光了,激光直接穿过去了。后来我加了超声波做互补,才解决这个问题。
核心知识点:激光雷达输出的数据叫「点云」。每个点包含 (x, y, z) 坐标,有的还带反射强度信息。点云密度越高,环境细节越丰富,但计算量也越大。
3.3 深度相机:视觉与距离的结合
深度相机,说白了就是给普通相机加了个「测距功能」。它有两种主流方案:
- 双目视觉:用两个摄像头模拟人眼,通过视差计算深度。我建议在光照充足的环境下使用,效果最好。
- 结构光:投射已知图案,通过图案变形计算深度。室内用很稳,但室外阳光一强就废了。
我记得有一次做室内巡检机器人,用了Intel RealSense D435。结果在走廊拐角处,深度图出现大片黑洞。查了半天才发现——白色墙面反射太强,结构光图案被淹没了。后来我调整了曝光参数,才勉强能用。
避坑指南:深度相机对纹理敏感。纯色墙面、光滑地面、玻璃表面,都是它的「死穴」。我曾经因为没注意这点,让机器人在一个白色走廊里撞了三次墙。
3.4 超声波传感器:简单但有效
超声波传感器,原理更简单。发射声波,等它弹回来,算时间。声速在空气中约340m/s,所以距离 = 时间 × 声速 / 2。
但这里有个坑——超声波有「波束角」。什么意思?它发射的声波不是一条线,而是一个锥形区域。所以测出来的距离,可能是锥形范围内最近物体的距离。我刚开始用HC-SR04时,总纳闷为什么明明前面没东西,却测到障碍物。后来才发现,是旁边的墙壁反射回来了。
注意事项:超声波传感器不适合远距离测量(一般有效距离2-5米)。而且两个超声波同时工作会互相干扰。我建议:要么分时触发,要么用不同频率的型号。
3.5 障碍物检测原理:从数据到决策
传感器拿到数据后,怎么判断有没有障碍物?其实就三步:
- 数据预处理:去噪、滤波、坐标变换。比如激光雷达的点云,先去掉离群点。
- 障碍物提取:用聚类算法(如DBSCAN)把点云分成一个个物体。或者用深度图做边缘检测。
- 属性判断:这个物体是静态还是动态?大小多少?位置在哪?
我个人的习惯是:先用激光雷达做粗检测,再用深度相机做精识别。比如,激光雷达发现前方3米有个障碍物,深度相机再确认它是个箱子还是个人。这样既快又准。
3.6 点云数据简介:你该知道的基础
点云,就是一堆三维点的集合。每个点通常包含:
- 坐标信息:(x, y, z),单位一般是米
- 反射强度:intensity,反映物体表面材质
- 时间戳:timestamp,用于多帧融合
点云数据量很大。一个16线激光雷达,每秒能产生30万个点。你想想看,如果直接处理,CPU肯定扛不住。所以一般会先做「降采样」——比如用体素滤波器,把空间分成小格子,每个格子只保留一个点。
实用技巧:处理点云时,我建议先用PCL库(Point Cloud Library)。它提供了现成的滤波、分割、配准算法。别自己从头写,除非你想重新发明轮子。
3.7 本章知识体系图
下面这张图,是我自己画的。它把本章的核心逻辑串起来了:
这张图你看懂了吗?从左到右,就是传感器采集数据,然后经过预处理、提取、判断,最终输出障碍物信息。这个流程,我做了不下50次。每次遇到新场景,我都会回到这张图,重新审视哪个环节出了问题。
我的建议:刚开始做环境感知时,别急着上多传感器融合。先拿一种传感器(比如激光雷达)跑通整个流程。等流程稳了,再加其他传感器做互补。这样出问题好排查。
好了,这一章就到这里。环境感知是运动规划的基础,基础不牢,后面全是坑。下一章咱们聊聊「地图构建」,到时候我会分享一个让我熬夜三天的建图翻车经历。