第5周:传感器与感知基础
课时: 6小时(第一次课3小时 + 第二次课3小时)
📋 本周课程表
| 次序 |
时间 |
主题 |
内容 |
| 第1次 |
3小时 |
常用传感器介绍 |
激光雷达、相机、超声波等 |
| 第2次 |
3小时 |
RViz可视化实战 |
数据显示、可视化工具使用 |
第一次课:常用传感器介绍(3小时)
⏱️ 时间分配
| 环节 |
时间 |
内容 |
| 复习 |
20分钟 |
上周内容回顾 |
| 讲解 |
60分钟 |
传感器分类 |
| 讲解 |
60概述与分钟 |
激光雷达详解 |
| 茶歇 |
10分钟 |
休息 |
| 讲解 |
30分钟 |
相机与图像传感器 |
2.2.1 常用传感器介绍(60分钟)
传感器的分类
机器人传感器分类:
┌─────────────────────────────────────────────────────────────┐
│ 机器人传感器 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────┐ ┌────────────────┐ │
│ │ 外部传感器 │ │ 内部传感器 │ │
│ │ (感知环境) │ │ (感知自身) │ │
│ └───────┬────────┘ └───────┬────────┘ │
│ │ │ │
│ ┌─────┴─────┐ ┌─────┴─────┐ │
│ │ │ │ │ │
│ 激光雷达 相机 里程计 IMU │
│ 超声波 触觉 编码器 陀螺仪 │
│ 红外 深度相机 电流 磁力计 │
│ │
└─────────────────────────────────────────────────────────────┘
常用传感器一览
| 传感器 |
类型 |
功能 |
典型应用 |
| 激光雷达 |
外部 |
测距、避障 |
扫地机器人、无人车 |
| 相机 |
外部 |
成像、识别 |
视觉导航、目标检测 |
| 深度相机 |
外部 |
3D成像 |
室内导航、抓取 |
| 超声波 |
外部 |
测距 |
避障、定高 |
| 里程计 |
内部 |
测位移 |
定位、导航 |
| IMU |
内部 |
测姿态 |
稳定控制、航向 |
2.2.2 激光雷达(LiDAR)(60分钟)
什么是激光雷达?
LiDAR = Light Detection and Ranging
通过发射激光并接收反射光来测量距离
激光雷达工作原理:
发射器 接收器
│ │
│ 发射激光脉冲 │
├──────────────────────────────►│
│ │ │
│ 障碍物 │ │
│ □ │ │
│◄─────────────┤ 反射光 │
│ │ │
│ 计算距离: │
│ 距离 = 光速 × 时间 / 2 │
│ │
激光雷达类型
| 类型 |
特点 |
应用 |
| 2D激光雷达 |
水平扫描一圈 |
室内机器人 |
| 3D激光雷达 |
360°×垂直扫描 |
自动驾驶 |
| 固态激光雷达 |
无旋转部件,可靠性高 |
新一代机器人 |
| 三角测距 |
精度高,距离近 |
工业检测 |
激光雷达数据
std_msgs/Header header
time stamp
string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities
查看激光雷达数据
ros2 topic list | grep scan
ros2 topic echo /scan
2.2.3 相机与图像(30分钟)
相机类型
| 类型 |
输出 |
应用 |
| 单目相机 |
2D图像 |
识别、检测 |
| 双目相机 |
2D图像+深度 |
测距、导航 |
| 深度相机 |
3D点云 |
室内导航、抓取 |
| 事件相机 |
动态像素 |
高速追踪 |
图像消息
std_msgs/Header header
uint32 seq
time stamp
string frame_id
uint32 height
uint32 width
string encoding
uint8 is_bigendian
uint32 step
uint8[] data
第二次课:RViz可视化实战(3小时)
⏱️ 时间分配
| 环节 |
时间 |
内容 |
| 复习 |
20分钟 |
传感器知识回顾 |
| 讲解 |
40分钟 |
RViz介绍与安装 |
| 演示 |
30分钟 |
RViz基本操作 |
| 实践 |
80分钟 |
可视化实验 |
| 茶歇 |
10分钟 |
休息 |
| 实践 |
60分钟 |
综合练习 |
2.2.4 RViz可视化工具(40分钟)
什么是RViz?
RViz = ROS Visualization
ROS的三维可视化工具,可以显示机器人模型、传感器数据、地图等
RViz界面:
┌─────────────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────────┐ │
│ │ Displays │ │ │ │
│ │ │ │ │ │
│ │ [+] RobotModel 3D视图区域 │ │
│ │ [+] LaserScan 显示激光雷达数据 │ │
│ │ [+] Image 显示相机图像 │ │
│ │ [+] PointCloud 显示点云 │ │
│ │ [+] Odometry 显示里程计 │ │
│ │ [+] Map 显示地图 │ │
│ │ │ │ │ │
│ └──────────┘ └─────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Toolbar │ Time │ Statusbar │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
启动RViz
rviz2
rviz2 -d my_config.rviz
常用显示项
| 显示项 |
话题 |
说明 |
| RobotModel |
- |
显示机器人3D模型 |
| LaserScan |
/scan |
显示激光雷达数据 |
| Image |
/camera/image_raw |
显示相机图像 |
| PointCloud2 |
/points |
显示3D点云 |
| Odometry |
/odom |
显示里程计轨迹 |
| Map |
/map |
显示栅格地图 |
2.2.5 可视化实验(80分钟)
实验1:显示Turtlesim
ros2 run turtlesim turtlesim_node
rviz2
实验2:显示激光雷达数据
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
实验3:显示相机图像
ros2 run image_transport republish raw
本周实验报告
✅ 验收清单
| 序号 |
实验 |
要求 |
完成 |
| 1 |
了解传感器分类 |
能说出5种以上传感器 |
☐ |
| 2 |
理解激光雷达原理 |
能解释测距原理 |
☐ |
| 3 |
启动RViz |
能正常运行 |
☐ |
| 4 |
显示Turtlesim |
能看到机器人模型 |
☐ |
| 5 |
添加显示项 |
能显示激光/图像/点云 |
☐ |
本周作业
📝 理论题
- 列举3种外部传感器和3种内部传感器
- 激光雷达和超声波传感器的区别是什么?
💻 实践题
- 用RViz显示一个话题的数据
- 尝试保存RViz配置
知识点速查表
┌─────────────────────────────────────────────────────────────┐
│ 第5周知识点速查 │
├─────────────────────────────────────────────────────────────┤
│ 传感器 │
│ ├── 外部传感器 = 感知环境 │
│ ├── 内部传感器 = 感知自身 │
│ ├── 激光雷达 = 发射激光测距 │
│ └── 相机 = 获取图像 │
├─────────────────────────────────────────────────────────────┤
│ RViz │
│ ├── RobotModel = 显示机器人模型 │
│ ├── LaserScan = 显示雷达数据 │
│ ├── Image = 显示相机图像 │
│ └── PointCloud2 = 显示3D点云 │
└─────────────────────────────────────────────────────────────┘
📚 课后阅读
下周预告
第6周:闭环控制初探
第5周结束!