《移动机器人设计与实践》2025年某卷

https://blog.csdn.net/zhangrelay/article/details/148332178

https://blog.csdn.net/ZhangRelay/article/details/148333048

本文摘要:文章围绕移动机器人导航技术展开,包含选择题、判断题、设计题和实践题四部分。选择题涉及ROS消息类型、SLAM算法、运动控制模型等基础知识;判断题辨析常见技术误区;设计题要求规划差动机器人硬件/软件模块;实践题聚焦TEB算法实现阿克曼底盘倒车入库。重点复习内容包括:

  • 1)ROS通信与指令;
  • 2)差速/阿克曼/麦克纳姆运动原理;
  • 3)GMapping/Cartographer/RTAB-Map算法对比;
  • 4)move_base导航框架与TEB本地规划器;
  • 5)硬件架构设计与TEB参数调优。

易错点提示:传感器精度≠定位精度、算法复杂度≠效果、多传感器融合≠消除误差等。通过系统梳理核心考点与解题模板,帮助掌握机器人导航关键技术要点。


一、选择题(共 20 题,1-10 单选,11-20 多选,每题 2 分,共 40 分)

  1. 在移动机器人导航中,订阅机器人实时位置应使用的 ROS 消息类型? A.std_msgs/String B.geometry_msgs/Twist C.nav_msgs/Odometry D.sensor_msgs/LaserScan

  2. Cartographer 建图功能包描述不合理的是? A. 基于图网络优化 B. 仅支持二维 SLAM C. 低资源高精度 D. 支持多传感器平台

  3. TEB 本地规划器主要考虑? A. 全局最短距离 B. 直线距离 C. 动态约束轨迹优化 D. 静态避障

  4. 差速运动控制正确描述? A. 仅直线 B. 两侧轮速差转弯 C. 需复杂转向机构 D. 适配所有底盘

  5. ROS 分布式通信,机器人为主机,环境变量设置? A.ROS_MASTER_URI = 机器人 IP,ROS_IP = 笔记本 IP B. 均设为机器人 IP C.ROS_MASTER_URI = 笔记本 IP,ROS_IP = 机器人 IP D. 仅设 ROS_IP = 机器人 IP

  6. RTAB-Map 错误描述? A. 支持 RGB-D B. 全局贝叶斯闭环 C. 仅二维 SLAM D. 实时闭环检测

  7. CMakeLists.txt 作用? A. 配置 ROS 主节点 B. 定义依赖与编译规则 C. 启动底盘 D. 可视化

  8. 阿克曼运动正确描述? A. 轮速差转向 B. 适配所有车辆 C. 内侧转向角更大 D. 无需差速器

  9. Gmapping 正确描述? A. 视觉里程计 B. 无需里程计 C. 三维栅格图 D. 激光建二维栅格图

  10. 蒙特卡洛定位错误描述? A. 仅静态环境 B. 二维定位 C. 需已知地图 D. 粒子滤波

  11. 创建 ROS 工作空间与功能包步骤? A.mkdir -p ~/catkin_ws/src B.catkin_init_workspace C.catkin_create_pkg D.catkin_make & source

  12. 差速运动控制正确描述? A. 轮速控制直行转向 B. 两轮 / 四轮适用 C. 无复杂转向机构 D. 转弯半径固定

  13. ROS 分布式通信必需步骤? A. 同一路由器 B. 配置.bashrc C. 两端均开 roscore D.ping 测试

  14. SLAM 常用环境感知传感器? A. 激光雷达 B.RGB-D C.IMU D. 超声

  15. move_base 导航框架正确描述? A. 全局 + 本地规划器 B. 全局用 Dijkstra/A* C. 本地用 DWA/TEB D. 不支持动态避障

  16. 麦克纳姆轮正确描述? A.45° 辊子 B. 可横向移动 C. 狭小空间灵活 D. 转弯半径大

  17. 多机协同技术? A. 分布式通信 B. 任务分配 C. 群体智能 D. 集中式控制

  18. 能耗管理有效策略? A. 路径优化 B. 低功耗硬件 C. 动态调状态 D. 增加负载

  19. 系统可扩展性考虑? A. 硬件接口 B. 软件架构 C. 算法通用性 D. 外观

  20. 深度学习目标检测性能影响因素? A. 数据集质量 B. 模型复杂度 C. 计算平台 D. 摄像头位置


二、判断题(共 10 题,每题 2 分,共 20 分)

  1. 传感器精度足够高即可完全保证定位精度
  2. 路径规划算法越复杂导航效果越好
  3. PID 可完全满足高精度轨迹跟踪
  4. 摄像头越多识别准确率一定越高
  5. ROS 节点仅能通过话题通信
  6. 静态环境 SLAM 地图一定比动态更准
  7. 多传感器融合可完全消除误差
  8. 增加电池容量即可解决能耗问题
  9. 外观设计对性能无直接影响
  10. 数据集越大深度学习性能一定越好

三、设计题(2 题,每题 10 分,共 20 分)

场景:两轮差动机器人从教室座位区起点运送资料到讲台目标点 (1) 机器人需包含哪些硬件模块及功能? (2) 机器人需包含哪些软件模块及功能?


四、实践题(2 题,每题 10 分,共 20 分)

场景:阿克曼底盘倒车入库 / 出库 (1) 用 TEB 算法实现倒车入库的程序流程图 (2) 倒车入库成功的关键影响因素并解释


重难点与复习要点(结合 zhangrelay 博客梳理)

一、核心考点模块(考试全覆盖)

1. ROS 基础与通信(选择 + 判断必考)

  • 必背指令:工作空间创建、初始化、编译、环境配置
  • 关键消息:Odometry(位姿)、Twist(速度)、LaserScan(激光)
  • 分布式通信:同网段、ROS_MASTER_URI/ROS_IP、单主节点、ping 连通
  • CMakeLists.txt:管理依赖、编译规则

2. 运动控制模型(必考)

  • 差速:轮速差转向、无转向机构、半径可调
  • 阿克曼:转向机构、内侧转角更大、需差速器
  • 麦克纳姆:45° 辊子、全向移动、横向滑移
  • PID:基础闭环,无法完全保证高精度

3. SLAM 建图(高频)

  • GMapping:激光 + 里程计→二维栅格图
  • Cartographer:图优化、低资源、高精度、主流 2D
  • RTAB-Map:RGB-D、闭环检测、支持 3D
  • 传感器组合:激光 + IMU + 里程计最常用

4. 自主导航框架(核心)

  • move_base = 全局规划器 + 本地规划器
  • 全局:Dijkstra、A*
  • 本地:DWA、TEB(动态约束、轨迹优化、支持倒车)
  • 定位:AMCL(粒子滤波、需地图、支持动态环境

5. 系统设计与实践(大题)

  • 两轮差速硬件:底盘、驱动、主控、电源、激光、IMU、里程计、通信
  • 软件:驱动、SLAM、定位、规划、控制、避障、调度
  • TEB 倒车:动力学约束、参数调优、定位、地图、库位尺寸

二、高频易错点(判断 / 选择必拿分)

  • 传感器≠绝对定位;算法复杂度≠效果;PID≠完美跟踪
  • 摄像头数量≠准确率;ROS 通信≠只有话题
  • 动态环境降低 SLAM 精度;融合≠消除误差
  • 电池≠解决能耗;外观间接影响性能;数据大≠效果好

三、大题答题模板

两轮差速机器人设计

  • 硬件:感知层、驱动层、决策层、电源层
  • 软件:底层驱动、SLAM 建图、AMCL 定位、全局 / 本地规划、运动控制、避障

TEB 倒车入库

  • 流程:启动→建图 / 定位→全局路径→TEB 规划→动态避障→泊车
  • 关键:TEB 参数、动力学约束、定位精度、地图分辨率、库宽 / 车长比

四、复习优先级

  1. ROS 操作 + 三种运动模型
  2. SLAM 算法对比 + move_base 框架
  3. 硬件 / 软件模块设计
  4. TEB 倒车流程与影响因素

一、ROS 核心(选择 + 判断必考)

1. 基础指令(必背)

  • 创建工作空间:mkdir -p ~/catkin_ws/src
  • 初始化:catkin_init_workspace
  • 创建功能包:catkin_create_pkg
  • 编译:catkin_make
  • 生效环境:source devel/setup.bash

2. 关键消息类型

  • 位置 / 里程计:nav_msgs/Odometry
  • 速度控制:geometry_msgs/Twist
  • 激光数据:sensor_msgs/LaserScan
  • 字符串:std_msgs/String

3. 分布式通信(必考)

  • 机器人为主机:
    • ROS_MASTER_URI=http://机器人IP:11311
    • ROS_IP=机器人IP
  • 必须:同一路由器、ping 通、只开一个 master

4. CMakeLists.txt 作用

  • 定义依赖关系、编译规则、链接库
  • 不负责启动节点、不负责可视化

二、运动控制(全题型覆盖)

1. 差速底盘

  • 原理:左右轮速差 → 转向
  • 优点:无复杂转向机构、转弯半径可调
  • 适用:两轮 / 四轮差速机器人

2. 阿克曼底盘

  • 原理:转向机构 + 内侧轮转角 > 外侧轮
  • 必须:差速器
  • 典型:汽车、 Ackermann 小车

3. 麦克纳姆轮

  • 结构:辊子45°
  • 能力:全向移动、横向滑移
  • 适用:狭窄空间、高精度移动

4. PID 控制

  • 作用:基础速度 / 位置闭环
  • 局限:不能完全满足高精度轨迹跟踪

三、SLAM 建图(高频选择)

1. GMapping

  • 数据:激光雷达 + 里程计
  • 输出:二维栅格地图
  • 特点:经典 2D、依赖里程计

2. Cartographer

  • 核心:图优化
  • 特点:低资源、高精度、2D 为主
  • 支持:多传感器、多平台

3. RTAB-Map

  • 支持:RGB-D 摄像头、3D 建图
  • 核心:全局贝叶斯闭环检测
  • 特点:实时、大场景

4. 常用传感器

  • 激光雷达、RGB-D、IMU、超声波

四、自主导航(核心大题)

1. move_base 框架

  • 全局规划器:Dijkstra、A*(找最短路径)
  • 本地规划器:DWA、TEB(动态避障 + 轨迹优化)
  • 功能:全局路径 + 本地轨迹 + 避障

2. TEB 本地规划器(倒车入库必考)

  • 核心:动态约束下的轨迹优化
  • 支持:倒车、曲线、动力学限制
  • 适用:阿克曼、差速、全向底盘

3. 定位:AMCL 蒙特卡洛

  • 原理:粒子滤波
  • 前提:已知地图
  • 适用:二维、动态环境
  • 错误说法:只能用于静态环境

五、硬件 / 软件模块(设计题满分模板)

1. 两轮差速机器人硬件

  1. 主控单元:运行 ROS、算法决策
  2. 驱动模块:控制电机转速
  3. 底盘执行:差速电机、轮子
  4. 感知传感器:激光雷达、IMU、里程计
  5. 通信模块:WiFi / 串口
  6. 电源系统:电池、稳压

2. 软件模块

  1. 底层驱动:电机、传感器驱动
  2. SLAM 建图:建二维栅格地图
  3. AMCL 定位:实时位姿估计
  4. 路径规划:全局 + 本地
  5. 运动控制:PID / 差速控制
  6. 避障系统:动态障碍物处理

六、TEB 倒车入库(实践题满分)

1. 程序流程图

  1. 启动 ROS 主节点
  2. 加载地图 + 启动 AMCL 定位
  3. 启动 move_base + TEB 本地规划器
  4. 设置入库目标点
  5. 全局路径规划
  6. TEB 轨迹优化(含倒车、转向约束)
  7. 动态避障
  8. 到达目标、泊车停止

2. 成功关键因素

  1. TEB 参数配置:最大倒车速度、加速度、转弯半径
  2. 定位精度:AMCL 粒子收敛、无跳变
  3. 地图质量:无偏移、无缺失
  4. 动力学约束:匹配阿克曼底盘模型
  5. 库位尺寸:宽度 > 车宽 + 安全余量
  6. 障碍物:无动态干扰

七、高频易错判断(必拿 20 分)

  1. 传感器再高也不能完全保证定位
  2. 算法越复杂导航效果不一定越好
  3. PID不能完全满足高精度跟踪
  4. 摄像头越多准确率不一定越高
  5. ROS 通信不只有话题(服务、动作)
  6. 静态 SLAM更准但不是绝对
  7. 多传感器融合不能消除误差
  8. 电池大不能解决所有能耗问题
  9. 外观间接影响性能(风阻、重心)
  10. 数据集大性能不一定越好(质量更关键)

八、zhangrelay 博客强调的复习优先级

  1. ROS 指令 + 分布式通信
  2. 差速 / 阿克曼 / 麦克纳姆运动模型
  3. SLAM 三大算法对比
  4. move_base + TEB 导航
  5. 硬件 / 软件模块设计
  6. TEB 倒车入库流程与参数
  7. 判断题陷阱
相关推荐
嵌入式×边缘AI:打怪升级日志13 小时前
模块驱动学习计划 — 从视频到实践的路线图
学习
IronMurphy13 小时前
AI Agent 学习day4 从 RAG 检索到 Function Call:一文理解大模型问答系统的完整链路
人工智能·学习·c#
魔法阵维护师13 小时前
从零开发游戏需要学习的c#模块,第二十九章(经验值与升级系统)
学习·游戏·c#
WangN213 小时前
Unitree RL Lab - G1 29DOF 关节顺序说明【通识】
人工智能·机器学习·机器人
chenxy0213 小时前
Biopython学习笔记
笔记·学习
啄缘之间13 小时前
10.【学习】SPI & UART 验证环境与测试用例
开发语言·经验分享·学习·fpga开发·测试用例·verilog
咸甜适中13 小时前
rust语言学习笔记Trait(十三)Borrow、BorrowMut(借用)
笔记·学习·rust
凌云若寒13 小时前
SENTINEL软件
学习·sentinel·产品经理·制造·软件需求
Chloeis Syntax14 小时前
JavaEE初阶学习日记(3)---网络初认识
java·网络·笔记·学习