第5周实验报告 —— 传感器与感知基础
一、实验信息
- 课程名称:机器人开发与ROS2实践
- 实验主题:传感器与感知基础
- 实验时间:第5周(6学时)
- 实验环境:Ubuntu 22.04 + ROS2 Humble + RViz2
- 实验工具:RViz2、Turtlesim、Gazebo、TurtleBot3
二、实验目的
通过本周学习,了解机器人常用传感器的基本原理和应用场景,掌握激光雷达与视觉传感器的数据特点,并能够利用RViz完成机器人传感器数据的可视化显示,为后续机器人定位、导航与控制学习打下基础。
具体目标如下:
- 掌握机器人传感器的分类方法;
- 理解激光雷达(LiDAR)的工作原理;
- 了解相机与图像传感器的基本知识;
- 学会使用ROS2命令查看传感器话题;
- 掌握RViz的基本使用方法;
- 完成激光雷达、图像和机器人模型的可视化显示。
三、实验内容
3.1 常用传感器介绍
机器人为了感知周围环境以及自身状态,需要使用各种类型的传感器。
(1)外部传感器
用于感知外界环境信息:
- 激光雷达(LiDAR)
- RGB相机
- 深度相机
- 超声波传感器
- 红外传感器
- 触觉传感器
(2)内部传感器
用于感知机器人自身状态:
- 里程计(Odometry)
- IMU惯性测量单元
- 编码器(Encoder)
- 陀螺仪
- 磁力计
- 电流传感器
传感器应用场景
| 传感器 | 功能 | 应用 |
|---|---|---|
| 激光雷达 | 测距与建图 | 导航、避障 |
| 相机 | 图像采集 | 视觉识别 |
| 深度相机 | 获取深度信息 | 三维建图 |
| 超声波 | 距离检测 | 近距离避障 |
| IMU | 姿态测量 | 平衡控制 |
| 里程计 | 位置估计 | 定位导航 |
3.2 激光雷达(LiDAR)
工作原理
LiDAR(Light Detection and Ranging)即激光探测与测距。
其工作过程如下:
- 发射激光脉冲;
- 激光照射到障碍物表面;
- 激光反射返回接收器;
- 根据往返时间计算距离。
计算公式:
距离 = 光速 × 时间 ÷ 2
激光雷达类型
| 类型 | 特点 |
|---|---|
| 2D激光雷达 | 水平扫描 |
| 3D激光雷达 | 三维空间扫描 |
| 固态激光雷达 | 可靠性高 |
| 三角测距雷达 | 近距离高精度 |
查看激光雷达数据
查看系统中的扫描话题:
ros2 topic list | grep scan
监听激光雷达数据:
ros2 topic echo /scan
获取到的数据主要包含:
- angle_min
- angle_max
- angle_increment
- ranges
- intensities
其中 ranges 数组保存每个方向对应的距离信息。
3.3 相机与图像传感器
相机是机器人视觉系统的重要组成部分。
常见相机类型
| 类型 | 输出 |
|---|---|
| 单目相机 | RGB图像 |
| 双目相机 | 图像+深度 |
| 深度相机 | 点云数据 |
| 事件相机 | 动态像素事件 |
图像消息格式
ROS2中图像数据通常通过:
sensor_msgs/Image
进行传输。
主要字段包括:
height
width
encoding
data
图像编码常见格式:
rgb8
bgr8
mono8
四、RViz可视化实验
4.1 RViz简介
RViz是ROS生态系统中最常用的三维可视化工具。
主要功能:
- 显示机器人模型
- 显示激光雷达数据
- 显示相机图像
- 显示点云数据
- 显示地图
- 显示导航路径
启动命令:
rviz2
加载配置文件:
rviz2 -d my_config.rviz
4.2 实验一:显示Turtlesim
启动Turtlesim:
ros2 run turtlesim turtlesim_node
启动RViz:
rviz2
完成以下配置:
- 添加Pose显示项
- 设置Fixed Frame
- 观察海龟运动状态
实验结果
成功启动Turtlesim并完成RViz连接,能够实时显示海龟位置变化。
4.3 实验二:显示激光雷达数据
启动仿真环境:
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
在RViz中:
- 添加 LaserScan
- 选择 /scan 话题
- 设置显示颜色和大小
实验结果
成功显示激光雷达扫描数据,能够观察周围障碍物轮廓。
4.4 实验三:显示相机图像
启动图像节点:
ros2 run image_transport republish raw
在RViz中:
- 添加 Image 显示项
- 订阅相机图像话题
实验结果
成功接收并显示实时图像数据。
五、实验成果展示
成果1:RViz启动成功
- 成功加载RViz界面
- 能够正常显示Display面板
- 设置Fixed Frame成功
成果2:激光雷达数据显示
- LaserScan数据显示正常
- 实时刷新扫描结果
- 能够识别环境障碍物
成果3:图像数据显示
- Image插件工作正常
- 成功显示摄像头图像
- 图像刷新流畅
六、实验总结
通过本周课程学习,我系统了解了机器人感知系统中常见传感器的工作原理及应用场景,重点掌握了激光雷达和视觉传感器的基本知识。
在实践过程中,我学会了利用ROS2命令查看传感器话题信息,并成功使用RViz完成机器人模型、激光雷达以及相机图像的可视化显示。通过观察实时传感器数据,我更加直观地理解了机器人如何感知环境并获取外界信息。
此外,本次实验还让我熟悉了RViz的基本操作流程,为后续学习SLAM、路径规划、导航控制等内容奠定了良好的基础。
七、作业答案
理论题
1. 列举3种外部传感器和3种内部传感器
外部传感器:
- 激光雷达
- 相机
- 超声波传感器
内部传感器:
- IMU
- 里程计
- 编码器
2. 激光雷达和超声波的区别
| 项目 | 激光雷达 | 超声波 |
|---|---|---|
| 原理 | 激光反射 | 声波反射 |
| 精度 | 高 | 一般 |
| 距离 | 较远 | 较近 |
| 成本 | 高 | 低 |
| 应用 | 导航建图 | 简单避障 |
八、心得体会
本周课程让我第一次系统接触机器人感知系统。通过学习激光雷达和视觉传感器,我认识到传感器是机器人获取环境信息的重要来源,而RViz则帮助我们直观地观察这些数据。未来在学习导航与控制时,我将进一步理解传感器数据如何参与机器人的决策过程。