第7周:复习与实操演练

课时: 6小时(第一次课3小时 + 第二次课3小时)


📋 本周课程表

次序 时间 主题 内容
第1次 3小时 知识总复习 知识点梳理、重点难点
第2次 3小时 模拟练习 上机练习、查漏补缺

第一次课:前半学期知识总复习(3小时)

⏱️ 时间分配

环节 时间 内容
复习 60分钟 第一阶段知识点
复习 60分钟 第二阶段知识点
茶歇 10分钟 休息
讨论 50分钟 答疑

2.4.1 第一阶段知识点(第1-3周)

知识点清单

┌─────────────────────────────────────────────────────────────┐
│                  第一阶段:基础与环境搭建                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  第1周                                                      │
│  ├── 机器人与AI的区别和联系                                │
│  ├── ROS2简介                                              │
│  ├── Docker安装与使用                                      │
│  ├── 网络基础知识(IP/MAC/Ping)                          │
│  └── Turtlesim仿真环境                                    │
│                                                             │
│  第2周                                                      │
│  ├── 节点(Node)概念                                        │
│  ├── 话题(Topic)概念                                      │
│  ├── 发布/订阅模型                                         │
│  ├── Twist消息类型                                         │
│  └── 命令行控制                                            │
│                                                             │
│  第3周                                                      │
│  ├── Python基础                                            │
│  ├── rclpy使用                                            │
│  ├── 创建发布者                                            │
│  ├── 定时器和回调                                          │
│  └── 走正方形实现                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

重点回顾

周次 重点 难点
第1周 Docker使用、网络概念 ROS2架构
第2周 Pub/Sub模型、Twist消息 消息类型
第3周 Python节点编程 回调函数

2.4.2 第二阶段知识点(第4-6周)

知识点清单

┌─────────────────────────────────────────────────────────────┐
│                 第二阶段:运动学与空间感知                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  第4周                                                      │
│  ├── 坐标系概念                                            │
│  ├── 世界坐标vs机器人坐标                                   │
│  ├── 里程计(Odometry)                                      │
│  └── 运动学公式                                            │
│                                                             │
│  第5周                                                      │
│  ├── 传感器分类                                            │
│  ├── 激光雷达(LiDAR)                                      │
│  ├── 相机与图像                                            │
│  └── RViz可视化                                            │
│                                                             │
│  第6周                                                      │
│  ├── 开环vs闭环控制                                        │
│  ├── PID控制器                                              │
│  ├── 反馈原理                                              │
│  └── 简单避障逻辑                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

重点回顾

周次 重点 难点
第4周 坐标系、里程计 坐标变换
第5周 传感器、RViz 数据格式
第6周 闭环控制、PID 控制算法

第二次课:模拟练习(3小时)

⏱️ 时间分配

环节 时间 内容
练习 80分钟 上机练习题
茶歇 10分钟 休息
讲解 40分钟 难题讲解
总结 30分钟 总结与答疑

2.4.3 模拟练习题

练习1:ROS2命令

# 1. 启动Turtlesim节点
ros2 run turtlesim turtlesim_node

# 2. 查看所有运行中的节点
ros2 node list

# 3. 查看所有话题
ros2 topic list

# 4. 发布速度命令让小乌龟前进
ros2 topic pub /turtle1/cmd_vel geometry_msgs/Twist "{linear: {x: 1.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"

# 5. 监听位置话题
ros2 topic echo /turtle1/pose

练习2:Python编程

# 题目:编写一个节点,让机器人走正方形
# 边长:2米,速度:1m/s

# 参考答案:
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
import time

class SquareNode(Node):
    def __init__(self):
        super().__init__('square_node')
        self.pub = self.create_publisher(Twist, '/turtle1/cmd_vel', 10)

    def move(self, speed, duration):
        msg = Twist()
        msg.linear.x = speed
        start = self.get_clock().now()
        while (self.get_clock().now() - start).nanoseconds < duration * 1e9:
            self.pub.publish(msg)
            time.sleep(0.01)
        self.pub.publish(Twist())

    def turn(self, speed, duration):
        msg = Twist()
        msg.angular.z = speed
        start = self.get_clock().now()
        while (self.get_clock().now() - start).nanoseconds < duration * 1e9:
            self.pub.publish(msg)
            time.sleep(0.01)
        self.pub.publish(Twist())

    def square(self):
        for _ in range(4):
            self.move(1.0, 2.0)  # 2米
            self.turn(1.0, 1.57)  # 90度

练习3:运动学计算

题目:
机器人左轮速度0.5m/s,右轮速度1.5m/s,轮间距0.5m

求:
1. 线速度v
2. 角速度ω
3. 走完一圈需要多长时间?

解答:
1. v = (0.5 + 1.5) / 2 = 1.0 m/s
2. ω = (1.5 - 0.5) / 0.5 = 2.0 rad/s
3. 一圈距离 = 2πr = 2π × 0.25 ≈ 1.57m
   时间 = 1.57 / 1.0 ≈ 1.57秒

练习4:闭环控制

题目:
简述PID控制器各部分的作用

答案:
• 比例(P):根据当前误差调整输出,响应速度快
• 积分(I):累积历史误差,消除稳态误差
• 微分(D):根据误差变化率调整,抑制振荡

2.4.4 查漏补缺(40分钟)

常见问题

问题 解答
节点启动失败? 检查ROS2环境变量 source /opt/ros/humble/setup.bash
话题没有数据? 检查发布者是否启动
机器人不动? 检查cmd_vel话题是否有数据
RViz显示空白? 检查Fixed Frame设置

实验报告检查

检查项 要求
代码注释 每个函数有注释
运行截图 有成功运行的截图
问题分析 有问题原因和解决方案

本周总结

知识体系

AI机器人知识体系:

         ┌─────────────────────────────────────┐
         │          基础知识                   │
         │  (第1-3周)                         │
         │  Docker + ROS2 + Python            │
         └──────────────┬──────────────────────┘
                        │
         ┌──────────────▼──────────────────────┐
         │          感知与控制                  │
         │  (第4-6周)                         │
         │  传感器 + 坐标系 + 闭环             │
         └──────────────┬──────────────────────┘
                        │
         ┌──────────────▼──────────────────────┐
         │          AI应用                      │
         │  (第9-12周)                         │
         │  视觉 + 识别 + Sim2Real             │
         └──────────────┬──────────────────────┘
                        │
         ┌──────────────▼──────────────────────┐
         │          综合项目                    │
         │  (第13-15周)                         │
         │  设计 + 实现 + 展示                   │
         └─────────────────────────────────────┘

知识点速查表

┌─────────────────────────────────────────────────────────────┐
│                    第1-7周知识点速查                          │
├─────────────────────────────────────────────────────────────┤
│  概念                                                          │
│  ├── Node = ROS2节点                                         │
│  ├── Topic = 话题                                            │
│  ├── Twist = 速度消息                                        │
│  ├── Odometry = 里程计                                       │
│  ├── LiDAR = 激光雷达                                       │
│  └── PID = 比例积分微分                                      │
├─────────────────────────────────────────────────────────────┤
│  命令                                                          │
│  ├── ros2 run pkg node    运行节点                          │
│  ├── ros2 topic list     查看话题                           │
│  ├── ros2 topic pub     发布消息                           │
│  ├── ros2 topic echo    监听话题                           │
│  └── rviz2              启动可视化                         │
├─────────────────────────────────────────────────────────────┤
│  公式                                                          │
│  ├── v = (v_l + v_r) / 2    (线速度)                      │
│  ├── ω = (v_r - v_l) / L    (角速度)                      │
│  └── PID = Kp*e + Ki*∫e + Kd*de/dt                       │
└─────────────────────────────────────────────────────────────┘

📚 课后复习建议

  1. 整理笔记 - 把每周的知识点整理成思维导图
  2. 动手实践 - 不熟悉的命令多练习几遍
  3. 查阅文档 - 遇到问题先查ROS2官方文档
  4. 准备考试 - 第8周期中考试,重点复习第1-6周

⚠️ 第8周预告

第8周:期中考试

  • 形式:上机实操
  • 内容:控制机器人走"8"字形
  • 要求:独立完成

第7周结束!祝大家考试顺利!

results matching ""

    No results matching ""