感知概览
感知(Perception)是机器人系统理解周围环境的能力。它通过处理各种传感器数据,提取出机器人进行决策、导航和操作所需的环境信息。感知是机器人实现自主性的基础——没有可靠的感知,机器人就无法安全地在环境中行动。
激光雷达(LiDAR)
Section titled “激光雷达(LiDAR)”激光雷达通过发射激光束并测量返回时间来计算距离,能够生成精确的 2D 或 3D 点云数据。它是机器人导航和建图中最常用的传感器之一:
- 2D 激光雷达:扫描一个平面,适用于室内 2D 导航。ROS 2 中通过
sensor_msgs/LaserScan消息发布数据。 - 3D 激光雷达:扫描三维空间,适用于 3D 建图和障碍物检测。ROS 2 中通过
sensor_msgs/PointCloud2消息发布数据。
深度相机(RGB-D Camera)
Section titled “深度相机(RGB-D Camera)”深度相机(如 Intel RealSense、Microsoft Kinect、Orbbec)同时提供彩色图像和深度图像,适用于:
- 短距离障碍物检测
- 物体识别与位姿估计
- 3D 环境重建
ROS 2 中深度数据通过 sensor_msgs/Image(带深度编码)或 sensor_msgs/PointCloud2 发布。
IMU(惯性测量单元)
Section titled “IMU(惯性测量单元)”IMU 提供加速度计和陀螺仪数据,用于:
- 姿态估计(roll/pitch/yaw)
- 里程计融合
- 运动状态检测
ROS 2 中通过 sensor_msgs/Imu 消息发布。
- 超声波传感器:低成本的近距离测距,常用于避障。
- GPS/GNSS:室外全局定位。
- 轮式编码器:测量车轮转速,计算机器人位移。
- 立体视觉相机:通过双目视差计算深度。
- ToF(Time of Flight)相机:通过光飞行时间测量深度。
障碍物检测是安全导航的前提。常用方法包括:
- 代价地图更新:Nav2 的 Costmap2D 将激光雷达或深度相机数据实时投射到栅格地图中,标记障碍物单元格。
- 点云聚类:对 3D 点云进行聚类分割,识别离散的障碍物。
- 地面分割:区分地面点和障碍物点,避免将地面误判为障碍。
物体检测与识别
Section titled “物体检测与识别”在机械臂操作和服务机器人场景中,需要识别和定位特定物体:
- 2D 目标检测:使用 YOLO、SSD 等深度学习模型检测图像中的物体。
- 6 自由度位姿估计:确定物体在三维空间中的精确位姿,如 PoseCNN、DOPE 等方法。
- 点云分割:使用 PointNet、PointNet++ 等网络直接处理 3D 点云。
建图与 SLAM
Section titled “建图与 SLAM”同步定位与建图(SLAM)是机器人在未知环境中一边构建地图一边定位自身的技术:
- 2D SLAM:如 SLAM Toolbox、Cartographer,使用 2D 激光雷达构建占据栅格地图。
- 3D SLAM:如 LOAM、LIO-SAM、RTAB-Map,使用 3D 激光雷达或 RGB-D 相机构建 3D 地图。
语义感知(Semantic Perception)不仅检测障碍物的存在,还理解其语义含义(如「这是椅子」「这是人」「这是可推开的门」):
- 语义分割:为图像或点云中的每个像素/点分配类别标签。
- 实例分割:在语义分割基础上区分同一类别的不同实例。
- 场景图(Scene Graph):构建描述场景中物体及其关系的结构化表示。
ROS 2 中的感知工具
Section titled “ROS 2 中的感知工具”image_pipeline
Section titled “image_pipeline”image_pipeline 提供了一套相机数据处理流水线:
image_proc:RAW 图像转彩色、去畸变depthimage_to_laserscan:将深度图像转换为 2D 激光扫描数据image_view:图像可视化
PCL(Point Cloud Library)
Section titled “PCL(Point Cloud Library)”PCL 是 ROS 2 中处理 3D 点云的标准库,提供滤波、分割、配准、表面重建等功能。ROS 2 通过 pcl_ros 包提供节点级接口。
perception_pcl
Section titled “perception_pcl”perception_pcl 提供了 PCL 与 ROS 2 的集成节点,如点云滤波、地面分割等。
代价地图感知层
Section titled “代价地图感知层”Nav2 的 Costmap2D 通过插件化图层机制集成感知数据:
ObstacleLayer:从激光雷达或点云中检测障碍物。VoxelLayer:3D 体素地图层,支持 3D 障碍物检测。RangeSensorLayer:超声波/红外传感器层。
在仿真环境中,Gazebo、Webots 等仿真器提供了高保真的传感器仿真插件,支持激光雷达、相机、IMU、GPS 等各种传感器。详见 仿真概览。