机动教学周(开学前机动周)
备机动周教学准备
- 熟悉JetAuto智能小车(含Pro版)的模块构成与功能,检查设备与器材;
- 确认教学软件、NoMachine远程桌面及ROS运行环境可用;
- 准备实训材料与工单、课程配套教材资料;
- 平衡学生分组,拟定分组名单。
机动教学周(开学前机动周)
备机动周教学准备
- 熟悉JetAuto智能小车(含Pro版)的模块构成与功能,检查设备与器材;
- 确认教学软件、NoMachine远程桌面及ROS运行环境可用;
- 准备实训材料与工单、课程配套教材资料;
- 平衡学生分组,拟定分组名单。
课程认知与实训安全
标学习目标
- 对照JetAuto与Pro版实物,指出Jetson Nano控制系统、3D深度相机、激光雷达、麦克纳姆轮等主要硬件模块的名称及功能;
- 按照实训室安全规范,正确完成设备取放和通电检查;
- 填写设备认识记录表,准确记录JetAuto主要模块名称及功能。
识一、硬件结构介绍
1. JetAuto产品简介
JetAuto是幻尔科技面向ROS教育场景开发的入门型轮式机器人,搭载NVIDIA Jetson Nano作为核心计算平台,配备高性能磁编码电机、旋转云台、激光雷达、3D深度相机、7寸液晶显示屏等,可实现运动控制、建图导航、路径规划、追踪避障等功能。

2. 硬件模块介绍
- ① Jetson Nano控制系统:包含扩展板和开发板,是机器人的"大脑",负责运行ROS系统和算法程序;
- ② 3D深度相机:可获取RGB彩色图像和深度图像,用于视觉识别和距离测量;
- ③ 激光雷达:360度全方位精确测距与避障,用于建图导航;
- ④ 麦克纳姆轮:采用ABAB组合方式,可实现全方位移动(前后左右横移及原地旋转);
- ⑤ 7寸液晶显示屏:触摸调试与系统显示;
- ⑥ 六路麦克风阵列:用于声源定位与语音控制。


护二、实训安全规范
- ① 设备取放规范:双手托底轻拿轻放,避免碰撞和跌落;
- ② 通电检查流程:确认电源开关关闭后再连接电源,开机前检查电池电量是否充足;
- ③ 电池充电与使用注意事项:使用专用充电器,注意正负极方向,充电时观察指示灯状态(红灯充电、绿灯充满);
- ④ 紧急情况处理:发现异常立即断电并报告教师。
操三、实操环节:设备认识
- 实训室用电安全:不得私接电源,湿手不触碰电气设备;
- 设备取放需双手轻拿轻放,避免碰撞和跌落;
- 电池使用规范:注意正负极方向,充电时专人看护。
对照实物认识硬件模块
对照JetAuto与Pro版实物,逐一认识Jetson Nano控制系统、3D深度相机、激光雷达、麦克纳姆轮、液晶显示屏、麦克风阵列等硬件模块。
填写设备认识记录表
准确记录各模块名称、功能及所在位置,完成设备认识记录表。
设备取放练习和通电检查
按照实训室安全规范,完成设备取放练习和通电检查流程。确认电源开关关闭后再连接电源,检查电池电量。
观察电池充电过程
观察电池充电过程,记录充电前电压、充电指示灯状态(红灯充电中、绿灯已充满)。
单实操工单:课程认知与实训安全⭳下载工单
一、硬件模块认识记录
| 序号 | 模块名称 | 功能描述 | 是否找到 |
|---|---|---|---|
| 1 | Jetson Nano控制系统 | 运行ROS系统和算法程序 | |
| 2 | 3D深度相机 | 获取RGB彩色图像和深度图像 | |
| 3 | 激光雷达 | 360度全方位精确测距与避障 | |
| 4 | 麦克纳姆轮 | 全方位移动(ABAB组合) | |
| 5 | 7寸液晶显示屏 | 触摸调试与系统显示 | |
| 6 | 六路麦克风阵列 | 声源定位与语音控制 |
二、安全规范检查清单
| 检查项 | 是否完成 |
|---|---|
| 双手托底轻拿轻放设备 | |
| 确认电源开关关闭后再连接电源 | |
| 检查电池正负极方向正确 | |
| 观察充电指示灯状态(红→绿) |
评四、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守实训室安全要求,规范取放设备 | 54321 | 54321 | 54321 |
| 设备认识 | 准确指出各硬件模块名称及功能 | 54321 | 54321 | 54321 |
| 工单完成 | 设备认识记录表填写完整准确 | 54321 | 54321 | 54321 |
| 团队协作 | 分工明确、互相配合 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:实训安全承诺与分组名单(1学时)
JetAuto与ROS入门 - 配件安装与开关机
标学习目标
- 对照实物指认JetAuto的车身结构、电池、开关及各接口位置;
- 规范完成电池充电检查、上电操作和开关机流程;
- 完成无线手柄配对并使用手柄遥控小车行驶。
装一、配件安装说明
JetAuto配件包括深度相机、天线、7寸液晶屏等,各模块通过Jetson扩展板接口连接。
- 深度相机安装:将相机前侧扣入支架凸起孔槽,用M3x6圆头螺丝固定,连接线穿入下方椭圆孔,插入Jetson主板2号接口。
- 天线安装:顺时针拧紧即可。
- 7寸液晶屏安装:用M4x6螺丝固定在屏幕支架上,HDMI线接屏幕HDMI接口,电源线必须接屏幕CTOUCH接口(否则无触控),另一端分别接Jetson主板5号接口和底部集线器。




电二、电池与充电
使用专用充电器为18650电池充电,注意正负极方向,切勿装反;充电时观察指示灯状态,红灯表示充电中,绿灯表示已充满;充电时间约1小时。
开三、开关机流程
开机:连接电池,按下电源开关,等待系统启动,7寸液晶屏进入系统桌面后可开始操作。
关机:通过系统菜单选择关机,等待系统关闭后再断开电源。
柄四、无线手柄配对
- 将手柄接收器插入JetAuto任意USB接口(须在开机前插入);
- 自备两节7号干电池装入手柄(注意正负极);
- 打开手柄开关,红绿两LED灯同时闪烁;
- 等待几秒自动配对,成功后绿灯常亮。
注意:开机后30秒内未连接或5分钟无操作,手柄进入睡眠模式,按START键唤醒。

操五、实操环节:安装与遥控
- 电池使用安全:注意正负极方向,充电时专人看护;
- 手柄操作规范:轻推摇杆,避免猛推损坏电机;
- 配件插拔规范:USB接口对准后轻轻插入,禁止强行插拔。
配件安装与接线检查
对照实物完成配件安装与接线检查:确认深度相机连接线插入Jetson主板2号接口,天线已拧紧,液晶屏HDMI线接5号接口、电源线接CTOUCH接口。
电池充电与上电操作
检查电池正负极方向,放入专用充电器充电,观察指示灯由红变绿;将充满的电池装入电池盒,开关拨到ON,按下电源开关开机。
无线手柄配对
将手柄接收器插入USB接口,装入7号电池,打开手柄开关等待自动配对,确认绿灯常亮。
手柄遥控小车行驶
使用手柄遥控小车行驶:左摇杆控制移动方向(前后左右),右摇杆控制左转右转,轻推可实现低速移动。
记录开机流程和手柄配对过程
填写整机认识记录表,记录开机流程和手柄配对过程。
单实操工单:配件安装与开关机⭳下载工单
一、配件安装检查表
| 序号 | 配件名称 | 接口位置 | 是否安装正确 |
|---|---|---|---|
| 1 | 深度相机 | Jetson主板2号接口 | |
| 2 | 天线 | 顺时针拧紧 | |
| 3 | 液晶屏HDMI线 | Jetson主板5号接口 | |
| 4 | 液晶屏电源线 | CTOUCH接口 |
二、开关机流程记录
| 操作步骤 | 观察现象 | 是否完成 |
|---|---|---|
| 装入电池并拨到ON | ||
| 按下电源开关 | ||
| 等待系统启动 | ||
| 手柄配对成功(绿灯常亮) |
评六、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守充电安全与设备操作规范 | 54321 | 54321 | 54321 |
| 配件安装 | 正确完成配件安装与接线检查 | 54321 | 54321 | 54321 |
| 开关机操作 | 规范完成充电、上电和开关机流程 | 54321 | 54321 | 54321 |
| 手柄配对 | 成功完成无线手柄配对和遥控操作 | 54321 | 54321 | 54321 |
| 工单完成 | 整机认识记录表填写完整准确 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:整机认识与开关机流程记录(1学时)
JetAuto与ROS入门 - Jetson主板与扩展板
标学习目标
- 对照实物指认Jetson Nano开发板的各主要接口及扩展板的功能模块;
- 规范完成电源、显示与网络的连接并观察开机流程;
- 记录常用Linux命令的执行结果。
芯一、Jetson Nano开发板认识
Jetson Nano是NVIDIA推出的AI计算平台,搭载四核ARM Cortex-A57处理器和128核Maxwell GPU,可运行Linux系统和ROS框架,将实时计算机视觉应用到各种深度神经网络模型。使用前需注意系统镜像版本与SDK安装。Jetson Nano通过扩展板与各传感器、执行器连接。
Jetson Nano 核心架构详解
NVIDIA Jetson Nano 是一款面向边缘AI的小型嵌入式计算平台:
- CPU:四核ARM Cortex-A57 @ 1.43GHz - 负责系统调度和通用计算
- GPU:128核NVIDIA Maxwell架构 - 加速深度学习和计算机视觉
- 内存:4GB LPDDR4 - 运行Ubuntu系统和ROS程序
- 操作系统:Ubuntu 18.04 + ROS Melodic
- 连接方式:通过扩展板(载板)连接电机、舵机、相机、雷达等传感器
Jetson Nano将AI推理能力带到边缘设备,适合机器人、自动驾驶等场景的实时计算需求。
板二、扩展板功能图解
扩展板是连接Jetson Nano与各硬件模块的桥梁,主要接口包括:
- 1. 电源适配器接口:12.6V 2A供电
- 2. 串行总线舵机接口:连接总线舵机,驱动转动并读取状态
- 3. 电源线接口:"+"接正极,"-"接负极
- 4. PWM舵机接口
- 5. 电源开关:开启/关闭设备
- 6. 蜂鸣器:可通过编程发声
- 7. KEY1按键:长按切换局域网模式与直连模式
- 8. KEY2按键:长按重启JetAuto
- 9. 串口:用于延伸拓展
- 10. 5V/3.3V供电接口
- 11. GPIO扩展接口
- 12. IIC接口

扩展板接口功能详解
扩展板是Jetson Nano与外部硬件之间的桥梁,主要功能模块如下:
| 接口 | 功能 | 说明 |
|---|---|---|
| 12.6V电源接口 | 主供电 | 连接12.6V 2A电源适配器,为全系统供电 |
| 总线舵机接口 | 舵机控制 | 连接串行总线舵机,可驱动转动并读取位置状态 |
| KEY1按键 | 网络模式切换 | 长按切换局域网模式与直连模式 |
| KEY2按键 | 系统重启 | 长按重启JetAuto,用于系统卡死时恢复 |
| GPIO扩展 | 通用IO | 可编程控制外部设备,支持数字输入/输出 |
| IIC接口 | 总线通信 | 连接IIC协议传感器,如IMU、OLED屏等 |
| 蜂鸣器 | 声音提示 | 通过GPIO编程控制,用于报警或提示 |
启三、开机流程
连接12.6V电源适配器,打开电源开关,等待系统启动,7寸液晶屏进入Ubuntu系统桌面后可开始操作;可外接键盘鼠标进行操作。
令四、常用Linux命令演示
教师演示打开终端(Ctrl+Alt+T),使用以下基础命令:
| 命令 | 功能 | 示例 |
|---|---|---|
| ls | 查看文件列表 | ls -la |
| cd | 切换目录 | cd /home |
| pwd | 查看当前路径 | pwd |
| ifconfig | 查看网络IP地址 | ifconfig |
操五、实操环节:接口标注
- 电源连接安全:确认电源适配器规格为12.6V 2A,极性正确后再通电;
- 静电防护:操作前释放静电,避免触碰电路板金手指;
- 接口插拔规范:对准接口方向后轻轻插入,禁止带电插拔。
标注Jetson Nano主板各接口
对照实物标注Jetson Nano主板各接口名称:USB接口、HDMI接口、网口、摄像头接口(CSI)、电源接口、SD卡槽等。
识别扩展板功能模块
逐一对照电源适配器接口、舵机接口、电源开关、蜂鸣器、KEY1/KEY2按键、GPIO扩展接口、IIC接口等,记录各接口名称和功能。
完成电源连接
确认电源开关处于关闭状态,连接12.6V电源适配器。
完成显示与网络连接
连接HDMI线至液晶屏,连接网线或准备无线网络。
观察开机流程
打开电源开关,等待系统启动,记录液晶屏显示桌面所需时间。
使用Linux命令
打开终端(Ctrl+Alt+T),使用ls、cd、pwd、ifconfig等命令并记录执行结果。
单实操工单:Jetson主板与扩展板认识⭳下载工单
一、Jetson Nano主板接口标注
| 序号 | 接口名称 | 功能 | 是否找到 |
|---|---|---|---|
| 1 | USB接口 | 连接USB外设 | |
| 2 | HDMI接口 | 连接显示屏幕 | |
| 3 | 网口 | 有线网络连接 | |
| 4 | 摄像头接口(CSI) | 连接CSI摄像头 | |
| 5 | 电源接口 | 连接电源适配器 | |
| 6 | SD卡槽 | 插入系统SD卡 |
二、扩展板功能模块识别
| 序号 | 模块名称 | 功能 | 是否找到 |
|---|---|---|---|
| 1 | 电源适配器接口 | 12.6V 2A供电 | |
| 2 | 串行总线舵机接口 | 连接总线舵机 | |
| 3 | PWM舵机接口 | 连接PWM舵机 | |
| 4 | 电源开关 | 开启/关闭设备 | |
| 5 | 蜂鸣器 | 可通过编程发声 | |
| 6 | KEY1按键 | 切换网络模式 | |
| 7 | KEY2按键 | 重启JetAuto | |
| 8 | GPIO扩展接口 | 延伸拓展 |
三、Linux命令执行记录
| 命令 | 执行结果摘要 | 是否完成 |
|---|---|---|
| ls | ||
| cd | ||
| pwd | ||
| ifconfig |
四、开机流程观察记录
| 步骤 | 操作内容 | 耗时(秒) | 备注 |
|---|---|---|---|
| 1 | 连接12.6V电源适配器 | ||
| 2 | 打开电源开关 | ||
| 3 | 等待系统启动 | ||
| 4 | 液晶屏显示桌面 |
评六、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守电源连接和静电防护规范 | 54321 | 54321 | 54321 |
| 接口标注 | 准确标注Jetson Nano各接口名称 | 54321 | 54321 | 54321 |
| 扩展板识别 | 正确识别扩展板功能模块 | 54321 | 54321 | 54321 |
| Linux命令 | 正确使用ls、cd、pwd、ifconfig命令 | 54321 | 54321 | 54321 |
| 工单完成 | 接口标注与开机记录表填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:接口标注与开机记录表(1学时)
JetAuto与ROS入门 - ROS基础与可视化工具
标学习目标
- 说出ROS的作用与节点、话题、消息等基本术语的含义;
- 启动教师提供的示例程序并观察节点运行状态;
- 使用rostopic list、rostopic echo命令观察话题消息变化。
识一、ROS简介
ROS(Robot Operating System,机器人操作系统)是用于机器人开发的通用框架,提供硬件抽象、底层设备控制、进程间通信、包管理等功能。ROS不是一个真正的操作系统,而是运行在Linux之上的中间件,核心特点是节点间的消息通信机制。Ubuntu 18.04对应ROS Melodic版本。

词二、基本术语
- 节点(Node):ROS中的可执行进程,每个节点负责一个特定功能,如键盘控制节点发布速度指令、电机驱动节点订阅指令驱动电机、摄像头节点发布图像数据;
- 话题(Topic):节点之间发布/订阅的异步通信渠道,如/jetauto_controller/cmd_vel速度指令话题、/image图像话题;
- 消息(Message):话题中传输的数据格式,如Twist消息包含线速度linear和角速度angular。
ROS通信机制详解(节点-话题-消息)
ROS的核心是发布-订阅(Publish-Subscribe)通信模式,各组件含义如下:
| 概念 | 类比 | 作用 |
|---|---|---|
| 节点 Node | 进程 | 一个独立运行的功能模块(如键盘控制、电机驱动、摄像头采集) |
| 话题 Topic | 通信频道 | 节点间异步传输数据的"管道"(如 /jetauto_controller/cmd_vel 速度话题) |
| 消息 Message | 数据格式 | 话题中传输的具体数据结构(如 Twist = linear + angular) |
| ROS Master | 注册中心 | 负责节点注册与发现,帮助发布者和订阅者建立连接 |
典型示例:键盘控制节点发布 /jetauto_controller/cmd_vel 话题 -> 电机驱动节点订阅 /jetauto_controller/cmd_vel -> 收到速度指令后驱动电机运动。
这种解耦设计使得不同节点可以独立开发和运行,只需约定好消息格式即可通信。
令三、常用命令
| 命令 | 功能 | 示例 |
|---|---|---|
| rostopic list | 列出当前所有活跃话题 | rostopic list |
| rostopic echo | 实时显示指定话题的消息内容 | rostopic echo /jetauto_controller/cmd_vel |
| rosnode list | 列出所有运行中的节点 | rosnode list |
| rosmsg show | 查看消息结构 | rosmsg show geometry_msgs/Twist |
具四、可视化工具
- rqt_graph:计算图可视化工具,可查看节点与话题的连接关系;
- rqt_image_view:图像查看工具,显示相机回传的图像话题;
- rqt_console:日志输出工具箱;
- rqt_plot:数据绘图工具。
运行方式:终端输入rosrun rqt_后按Tab键展开可用指令。



操五、实操环节:ROS命令体验
- 设备操作规范:远程桌面连接后不得随意修改系统配置;
- 软件运行环境检查:确认ROS环境已正确安装,执行 source /opt/ros/melodic/setup.bash;
- 命令操作规范:在正确目录下执行命令,Ctrl+C正确终止程序。
启动JetAuto并连接远程桌面
使用NoMachine远程连接JetAuto,打开终端。
运行教师提供的示例程序
停止APP自启服务:systemctl stop start_app_node.service;启动移动控制服务:roslaunch jetauto_controller jetauto_controller.launch
systemctl stop start_app_node.service
使用rostopic list查看话题列表
记录当前所有活跃话题名称,找出/jetauto_controller/cmd_vel速度话题。
rostopic list
使用rostopic echo观察消息变化
在手柄或键盘控制小车移动时,观察终端实时输出的线速度linear和角速度angular数值变化。
rostopic echo /jetauto_controller/cmd_vel
使用rosnode list查看所有运行中的节点
记录所有运行中的节点名称。
rosnode list
使用rqt_graph查看节点关系图
在新终端输入rosrun rqt_graph rqt_graph,观察节点与话题的连接关系,截图或手绘记录计算图结构。
rosrun rqt_graph rqt_graph
关闭程序并恢复APP自启服务
按Ctrl+C关闭程序,恢复APP自启服务。
sudo systemctl start start_app_node.service
单实操工单:ROS基础入门⭳下载工单
一、ROS基本术语对照表
| 术语 | 英文 | 含义 | 是否理解 |
|---|---|---|---|
| 节点 | Node | ||
| 话题 | Topic | ||
| 消息 | Message | ||
| 发布 | Publish | ||
| 订阅 | Subscribe |
二、ROS命令执行记录
| 命令 | 执行结果摘要 | 是否完成 |
|---|---|---|
| rostopic list | ||
| rostopic echo /jetauto_controller/cmd_vel | ||
| rosnode list | ||
| rqt_graph |
评六、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守远程桌面和命令操作规范 | 54321 | 54321 | 54321 |
| 概念理解 | 能说出节点、话题、消息的概念及关系 | 54321 | 54321 | 54321 |
| 命令操作 | 能正确使用rostopic、rosnode等命令 | 54321 | 54321 | 54321 |
| 工具使用 | 能使用rqt_graph观察节点关系图 | 54321 | 54321 | 54321 |
| 工单完成 | ROS术语对照表和命令记录填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:ROS基础术语对照表(1学时)
机动教学周(国庆假期顺延)
10月1日—10月7日为国庆假期,本周(10月7日 周三)不安排教学。
下一周教学内容从第8周继续。
底盘运动控制 - 麦轮原理与遥控控制
标学习目标
- 说出麦克纳姆轮的结构特点与全方位移动原理;
- 使用键盘控制JetAuto完成前进、后退与转弯;
- 使用无线手柄遥控小车并观察麦克纳姆轮的横移、旋转动作与速度反馈。
轮一、麦克纳姆轮工作原理
JetAuto底座采用麦克纳姆轮(麦轮),根据45度辊子朝向分为A轮(左旋)和B轮(右旋),二者互为镜像。JetAuto采用ABAB组合方式,可实现全方位移动。
麦轮由轮毂和辊子构成,轮毂轴与辊子转轴呈45度角,通过4个麦轮的不同正反转组合实现前进、后退、横移和旋转。




麦克纳姆轮全向移动原理详解
麦克纳姆轮(Mecanum Wheel)是实现全向移动的核心机构,其原理如下:
- 结构:轮毂轴与辊子转轴呈45度角,辊子可自由旋转
- A轮(左旋):辊子朝向左上45度
- B轮(右旋):辊子朝向右上45度,与A轮互为镜像
- ABAB组合:左前A、右前B、左后B、右后A,对称排列
- 受力分解:每个辊子受力可分解为纵向分力+横向分力
- 四轮协同:通过不同正反转组合,合力方向可实现任意方向移动
运动方向表:
| 运动方向 | 左前轮 | 右前轮 | 左后轮 | 右后轮 |
|---|---|---|---|---|
| 前进 | 正转 | 正转 | 正转 | 正转 |
| 后退 | 反转 | 反转 | 反转 | 反转 |
| 右横移 | 反转 | 正转 | 正转 | 反转 |
| 左横移 | 正转 | 反转 | 反转 | 正转 |
| 右旋转 | 正转 | 反转 | 正转 | 反转 |
| 左旋转 | 反转 | 正转 | 反转 | 正转 |
键二、键盘控制
操作步骤:
- 通过NoMachine连接JetAuto远程桌面,打开终端;
- 停止APP自启服务:
systemctl stop start_app_node.service - 启动移动控制服务:
roslaunch jetauto_controller jetauto_controller.launch - 新开终端,启动键盘控制:
roslaunch jetauto_peripherals teleop_key_control.launch robot_name:="/"
按键说明:W短按切换为前进持续前进,S短按切换为后退持续后退,A长按左转,D长按右转。关闭玩法按Ctrl+C,恢复APP服务:sudo systemctl start start_app_node.service。

柄三、手柄控制
将手柄接收器插入USB接口(须在开机前插入),装入7号电池,打开手柄开关等待自动配对(绿灯常亮表示配对成功)。
操作步骤同键盘控制前两步,启动手柄控制:roslaunch jetauto_peripherals joystick_control.launch
左摇杆控制移动方向,右摇杆控制左转右转,轻推可实现低速移动。SELECT键开启/关闭机械臂控制模式。

操四、实操环节:底盘控制
- 小车运行安全:清理场地障碍物,确保有足够空间;
- 速度控制:初次操作使用低速,避免高速碰撞;
- 手柄操作规范:轻推摇杆,避免猛推损坏电机。
启动JetAuto并连接远程桌面
使用NoMachine连接,打开终端。
停止APP自启服务并启动移动控制服务
执行systemctl stop start_app_node.service和roslaunch jetauto_controller jetauto_controller.launch
systemctl stop start_app_node.service
运行键盘控制程序
执行roslaunch jetauto_peripherals teleop_key_control.launch robot_name:=/ ,使用W/S/A/D键控制小车前进、后退、左转、右转。
roslaunch jetauto_peripherals teleop_key_control.launch robot_name:=/
观察并记录麦克纳姆轮的横移动作
使用手柄左摇杆推动左右方向,观察四轮如何组合实现横向移动。
观察并记录麦克纳姆轮的旋转动作
使用手柄右摇杆推动左右,观察四轮如何实现原地旋转。
切换到手柄控制
执行roslaunch jetauto_peripherals joystick_control.launch,遥控小车行驶,对比键盘控制与手柄控制的差异。
roslaunch jetauto_peripherals joystick_control.launch
观察速度反馈数据
新开终端,执行rostopic echo /jetauto_controller/cmd_vel,用手柄遥控小车移动,观察并记录线速度linear.x和角速度angular.z的实时反馈数据。
rostopic echo /jetauto_controller/cmd_vel
关闭程序并恢复APP自启服务
按Ctrl+C关闭程序,恢复APP自启服务,填写底盘动作测试记录。
sudo systemctl start start_app_node.service
单实操工单:底盘运动控制⭳下载工单
一、麦轮运动观察记录
| 运动方向 | 左前轮转向 | 右前轮转向 | 左后轮转向 | 右后轮转向 | 是否观察到 |
|---|---|---|---|---|---|
| 前进 | |||||
| 后退 | |||||
| 右横移 | |||||
| 左横移 | |||||
| 右旋转 | |||||
| 左旋转 |
二、控制方式对比记录
| 对比项 | 键盘控制 | 手柄控制 |
|---|---|---|
| 操作灵敏度 | ||
| 速度反馈观察 | ||
| 操作便捷性 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守场地清理和速度控制安全规范 | 54321 | 54321 | 54321 |
| 麦轮原理 | 能说出麦轮结构特点和全向移动原理 | 54321 | 54321 | 54321 |
| 键盘控制 | 能使用键盘控制小车前进、后退、转弯 | 54321 | 54321 | 54321 |
| 手柄控制 | 能使用手柄遥控小车并观察横移、旋转与速度反馈 | 54321 | 54321 | 54321 |
| 工单完成 | 底盘动作测试记录填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:底盘动作测试记录(1学时)
底盘运动控制 - 速度控制与轨迹行驶
标学习目标
- 使用rostopic pub命令发布线速度和角速度参数控制小车运动;
- 运行示例程序完成矩形与圆形轨迹行驶;
- 调整线速度、角速度参数并对比不同参数下的运动效果。
速一、速度控制原理
通过订阅jetauto_controller移动控制节点,发布速度话题/jetauto_controller/cmd_vel控制小车运动。
- 线速度linear:以机器人为第一视角,X正方向为前方,Y正方向为左边,单位m/s,范围建议-0.7~0.7
- 角速度angular:Z正值逆时针旋转,负值顺时针旋转,单位rad/s,范围建议-3.5~3.5

令二、命令行控制
操作步骤:
- 通过NoMachine连接JetAuto,打开终端;
- 关闭APP服务:
sudo systemctl stop start_app_node.service - 启动移动控制服务:
roslaunch jetauto_controller jetauto_controller.launch - 发布速度话题:
rostopic pub /jetauto_controller/cmd_vel geometry_msgs/Twist,按Tab键补齐参数 - 修改linear.x的值控制前进速度(如0.3为向前慢速),修改angular.z的值控制旋转速度(如1.0为逆时针旋转)
- 关闭玩法按Ctrl+C,恢复APP服务:
sudo systemctl start start_app_node.service
迹三、轨迹行驶
通过组合不同的线速度和角速度参数,可以实现:
- 矩形轨迹:直行(linear.x=0.3持续若干秒)+转弯(angular.z=1.5持续若干秒)交替执行
- 圆形轨迹:同时设置线速度和角速度(如linear.x=0.3, angular.z=0.5),小车将持续做圆周运动
调四、参数调试
调整线速度X值(如0.3、0.5、0.6)对比不同速度下的运动效果;调整角速度Z值(如0.5、1.0、1.5)对比不同转弯半径,记录参数与轨迹的关系。
操五、实操环节:轨迹行驶
- 小车运行安全:确保场地开阔,清除障碍物;
- 速度参数范围控制:线速度不超过0.7m/s,角速度不超过3.5rad/s,避免高速失控;
- 命令操作规范:修改参数后确认无误再回车执行,Ctrl+C及时停止。
启动JetAuto并连接远程桌面
使用NoMachine连接,打开终端。
停止APP服务并启动移动控制服务
执行sudo systemctl stop start_app_node.service和roslaunch jetauto_controller jetauto_controller.launch
sudo systemctl stop start_app_node.service
使用rostopic pub命令发布速度参数
输入rostopic pub /jetauto_controller/cmd_vel geometry_msgs/Twist后按Tab补齐,设置linear.x=0.3使小车前进,记录运动效果。
rostopic pub /jetauto_controller/cmd_vel geometry_msgs/Twist
完成矩形轨迹行驶
设置linear.x=0.3直行3秒,再设置angular.z=1.5旋转约2秒,重复4次形成矩形轨迹,记录每段参数和耗时。
完成圆形轨迹行驶
同时设置linear.x=0.3和angular.z=0.5,使小车持续做圆周运动,记录轨迹半径和运动时间。
调整参数对比效果
将线速度分别改为0.3、0.5、0.6,将角速度分别改为0.5、1.0、1.5,观察并记录不同参数下的运动效果和轨迹变化。
关闭程序并恢复APP自启服务
按Ctrl+C关闭程序,恢复APP自启服务,填写运动参数调试单。
sudo systemctl start start_app_node.service
单实操工单:速度控制与轨迹行驶⭳下载工单
一、线速度参数对比记录
| linear.x值 | 运动方向 | 观察现象 | 是否完成 |
|---|---|---|---|
| 0.3 | 前进 | ||
| 0.5 | 前进 | ||
| 0.6 | 前进 |
二、角速度参数对比记录
| angular.z值 | 旋转方向 | 转弯半径 | 是否完成 |
|---|---|---|---|
| 0.5 | 逆时针 | ||
| 1.0 | 逆时针 | ||
| 1.5 | 逆时针 |
三、轨迹行驶记录
| 轨迹类型 | 参数设置 | 运动效果 | 是否完成 |
|---|---|---|---|
| 矩形轨迹 | linear.x=0.3+angular.z=1.5 | ||
| 圆形轨迹 | linear.x=0.3+angular.z=0.5 |
评六、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守速度参数范围和控制安全规范 | 54321 | 54321 | 54321 |
| 速度控制 | 能使用rostopic pub发布速度参数 | 54321 | 54321 | 54321 |
| 轨迹行驶 | 完成矩形和圆形轨迹行驶 | 54321 | 54321 | 54321 |
| 参数调试 | 能调整参数对比不同运动效果 | 54321 | 54321 | 54321 |
| 工单完成 | 运动参数调试单填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:运动参数调试单(1学时)
深度相机认识与体验
标学习目标
- 说出深度相机的结构与作用;
- 启动相机节点并使用rqt_image_view观察RGB与深度图像;
- 使用rviz工具查看相机回传画面并完成距离读取小实验。
像一、深度相机认识
JetAuto搭载Astra Pro深度相机,可同时获取RGB彩色图像和深度图像。彩色图像记录物体的颜色和纹理信息;深度图像记录每个像素点到相机的距离信息,可实现距离测量、三维重建、障碍物检测等功能。深度相机通过USB接口连接Jetson Nano主板。


深度相机原理详解(Astra Pro)
Astra Pro深度相机采用红外结构光技术测距,工作原理如下:
- RGB彩色图:通过普通彩色CMOS传感器获取物体的颜色和纹理信息
- 深度图:通过红外结构光投射器发射红外散斑,由红外接收器捕获变形后的散斑图案,计算相位差得到距离
- 距离表示:深度图中不同距离显示为不同颜色,近处偏红色、远处偏蓝色
- 应用场景:距离测量、三维重建、障碍物检测、人脸识别、手势识别
与普通摄像头区别:普通摄像头只能获取2D彩色图像,深度相机还能获取每个像素的深度(距离)信息,实现3D感知。
服二、启动相机服务
在终端输入指令启动相机节点服务:roslaunch astra_camera astrapro.launch
服务启动后相机开始发布RGB和深度图像话题。

图三、使用rqt_image_view查看
输入指令打开图像查看工具:rosrun rqt_image_view rqt_image_view
在下拉框中选择对应话题查看图像:
- 选择
/rgb/Image话题查看RGB彩色图像 - 选择
/camera/depth/Image话题查看深度图像
深度图像中不同距离显示为不同颜色,近处偏红、远处偏蓝。

视四、使用rviz查看
输入指令启动rviz工具:rosrun rviz rviz
- 将Fixed Frame设置为
camera_link - 点击Add -> By topic -> 选择rgb -> Image -> OK查看彩色图
- 点击Add -> By topic -> 选择camera -> depth -> Image -> Image -> OK查看深度图
五、距离读取实验
在深度图像中,将物体放在不同距离(如30cm、50cm、80cm),观察深度图中对应像素的数值变化,实现距离读取。
操六、实操环节:相机体验
- 相机镜头保护:勿用手触碰镜头,使用后盖上镜头盖;
- USB接口插拔规范:在关机状态下插拔,禁止带电操作;
- 长时间使用注意散热,避免过热。
启动JetAuto并连接远程桌面
使用NoMachine连接,打开终端。
启动相机节点服务
执行roslaunch astra_camera astrapro.launch,等待服务启动成功。
roslaunch astra_camera astrapro.launch
使用rqt_image_view观察RGB图像
新开终端执行rosrun rqt_image_view rqt_image_view,在下拉框中选择rgb话题,观察彩色画面并截图记录。
rosrun rqt_image_view rqt_image_view
使用rqt_image_view观察深度图像
在下拉框中选择depth话题,观察深度画面,注意不同距离的颜色变化。
使用rviz查看相机画面
新开终端执行rosrun rviz rviz,设置Fixed Frame为camera_link,添加Image显示项查看RGB和深度图像。
rosrun rviz rviz
完成距离读取小实验
将物体分别放在30cm、50cm、80cm处,观察深度图中对应区域的数值变化,记录距离与像素值的关系。
关闭相机服务和查看工具
按Ctrl+C关闭相机服务和查看工具,填写深度相机观察记录。
单实操工单:深度相机认识与体验⭳下载工单
一、RGB与深度图像对比
| 图像类型 | 话题名称 | 观察内容 | 是否完成 |
|---|---|---|---|
| RGB彩色图像 | /rgb/Image | ||
| 深度图像 | /camera/depth/Image |
二、距离读取实验记录
| 实际距离 | 深度图颜色 | 像素数值 | 是否完成 |
|---|---|---|---|
| 30cm | |||
| 50cm | |||
| 80cm |
三、工具使用检查清单
| 工具 | 启动命令 | 是否掌握 |
|---|---|---|
| rqt_image_view | rosrun rqt_image_view rqt_image_view | |
| rviz | rosrun rviz rviz |
评七、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守相机镜头保护和USB插拔规范 | 54321 | 54321 | 54321 |
| 相机原理 | 能说出深度相机的结构和作用 | 54321 | 54321 | 54321 |
| 图像查看 | 能使用rqt_image_view查看RGB和深度图像 | 54321 | 54321 | 54321 |
| rviz使用 | 能使用rviz查看相机画面 | 54321 | 54321 | 54321 |
| 工单完成 | 深度相机观察记录填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:深度相机观察记录(1学时)
视觉识别项目 - 颜色识别与LAB阈值
标学习目标
- 使用LABTOOL工具调节LAB颜色空间阈值,准确设置红、蓝、绿三种颜色的识别范围;
- 按照操作流程运行color_detect.py颜色识别脚本,完成目标颜色的检测与轮廓标注;
- 对照图像处理流程(RGB转LAB、高斯滤波、二值化、腐蚀膨胀、轮廓查找),说明各环节作用;
- 记录颜色样本参数与识别结果,规范填写工作单。
色一、LAB颜色空间原理
LAB颜色空间是一种与设备无关的颜色模型,将亮度和色彩信息分离,广泛应用于机器视觉的颜色识别任务。LAB颜色空间由三个通道组成:
- L通道(亮度):取值范围0-255,表示像素的明暗程度,0为纯黑、255为纯白;
- A通道(绿到红):取值范围0-255,表示从绿色到红色的变化,数值越小越偏绿、越大越偏红;
- B通道(蓝到黄):取值范围0-255,表示从蓝色到黄色的变化,数值越小越偏蓝、越大越偏黄。
与RGB颜色空间相比,LAB颜色空间将亮度(L通道)与色彩信息(A、B通道)分离,使颜色识别受光照变化的影响大大减小,在室内外不同光线条件下均能保持较好的识别稳定性。

RGB转LAB颜色空间转换原理
RGB颜色空间是显示器最常用的颜色模型,由红(R)、绿(G)、蓝(B)三个通道组成,每个通道取值0-255。但RGB颜色空间存在以下局限:
- 亮度与色彩耦合:RGB三个通道都包含亮度信息,光照变化会同时影响三个通道,导致颜色阈值不稳定
- 设备相关性:不同显示设备的RGB值可能不同,颜色不具备一致性
- 颜色距离不均匀:RGB空间中相同数值差对应的视觉色差不一致
RGB转LAB的转换过程:
- 第一步 RGB → XYZ:通过线性矩阵变换,将RGB值转换为CIE XYZ颜色空间的值
- 第二步 XYZ → LAB:通过非线性变换(含立方根函数),将XYZ值转换为L、A、B三个通道值
LAB优势:分离亮度与色彩后,只需关注A、B通道即可判断颜色,L通道的变化(光照变化)不会干扰颜色识别。在OpenCV中使用cvtColor(img, cv2.COLOR_BGR2LAB)即可完成转换。
| 颜色空间 | 通道 | 亮度分离 | 光照抗干扰 | 适用场景 |
|---|---|---|---|---|
| RGB | R, G, B | 否 | 差 | 显示、图像采集 |
| LAB | L, A, B | 是 | 好 | 颜色识别、目标检测 |
调二、LABTOOL阈值调节
LABTOOL是JetAuto提供的可视化阈值调节工具,通过拖动滑块实时设置LAB颜色空间的上下限,可快速确定目标颜色的识别范围。
操作步骤
- 停止默认节点:停止APP自启服务,释放相机资源
sudo systemctl stop start_app_node.service - 启动相机:启动深度相机节点
roslaunch jetauto_peripherals astrapro.launch - 打开LABTOOL:在界面中打开LABTOOL工具,选择需要调节的颜色通道
- 拖动滑块设置阈值:分别调节L、A、B三个通道的上下限滑块,实时观察画面中目标颜色的二值化效果






LAB阈值调节技巧
调节LAB阈值时需要注意以下技巧:
- 先调A通道:A通道区分红绿色,红色物体A值偏大,绿色物体A值偏小
- 再调B通道:B通道区分蓝黄色,黄色物体B值偏大,蓝色物体B值偏小
- 最后调L通道:L通道控制亮度范围,适当放宽L通道范围可适应不同光照条件
- 观察二值化效果:目标区域应为白色,背景应为黑色,如有噪点可通过缩小阈值范围或后续腐蚀膨胀处理
参考阈值(不同环境需微调):
| 颜色 | L范围 | A范围 | B范围 |
|---|---|---|---|
| 红色 | 100-255 | 150-255 | 70-200 |
| 绿色 | 100-255 | 0-120 | 100-200 |
| 蓝色 | 100-255 | 100-200 | 0-120 |
测三、颜色检测脚本
设置好LAB阈值后,运行颜色检测脚本完成目标颜色的自动检测与轮廓标注。
运行方式
- 进入脚本目录:
roscd jetauto_example/scripts/color_detect/ - 运行检测脚本:
python3 color_detect.py

图像处理流程
color_detect.py脚本的图像处理流程如下,每个环节都有明确的作用:
| 步骤 | 处理环节 | OpenCV函数 | 作用 |
|---|---|---|---|
| 1 | RGB转LAB | cvtColor(COLOR_BGR2LAB) | 将颜色与亮度分离,降低光照影响 |
| 2 | 高斯滤波 | GaussianBlur | 平滑图像,降低噪声干扰 |
| 3 | 二值化 | inRange | 根据LAB阈值生成二值掩膜,提取目标颜色区域 |
| 4 | 腐蚀 | erode | 消除二值图像中的小噪点 |
| 5 | 膨胀 | dilate | 填补目标区域内部的空洞 |
| 6 | 轮廓查找 | findContours | 定位目标物体的外轮廓,用于标注和面积计算 |
图像处理各环节详解
1. RGB转LAB:使用cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)将BGR图像转换为LAB颜色空间,使颜色识别不受光照变化干扰。
2. 高斯滤波:使用cv2.GaussianBlur(lab, (5,5), 0)对图像进行高斯模糊,卷积核大小一般为3x3或5x5,有效降低图像噪声。
3. 二值化(inRange):使用cv2.inRange(lab, lower, upper)将LAB图像中落在阈值范围内的像素设为255(白色),范围外的设为0(黑色),生成二值掩膜图像。
4. 腐蚀(erode):使用cv2.erode(mask, kernel, iterations=1)对二值图像进行腐蚀操作,消除面积较小的白色噪点。
5. 膨胀(dilate):使用cv2.dilate(mask, kernel, iterations=1)对二值图像进行膨胀操作,连接目标区域内部的断裂,填补空洞。
6. 轮廓查找(findContours):使用cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)查找二值图像中的轮廓,通过cv2.drawContours()或cv2.rectangle()在原图上标注目标位置。
操四、实操环节:颜色识别
- 相机镜头保护:勿用手触碰镜头,使用后盖上镜头盖;
- 设备操作规范:停止APP服务后再启动相机节点,避免资源冲突;
- 命令操作规范:在正确目录下执行脚本,Ctrl+C正确终止程序后关闭终端。
启动深度相机节点
通过NoMachine连接JetAuto远程桌面,打开终端。先停止APP自启服务,再启动深度相机节点。
sudo systemctl stop start_app_node.service
roslaunch jetauto_peripherals astrapro.launch
打开LABTOOL设置红/蓝/绿阈值
打开LABTOOL工具,分别针对红色、蓝色、绿色物体调节L、A、B三个通道的上下限滑块,观察二值化画面中目标区域变为白色、背景变为黑色,记录每种颜色的阈值参数。
运行color_detect.py
新开终端,进入脚本目录并运行颜色检测脚本。
roscd jetauto_example/scripts/color_detect/
python3 color_detect.py
放置不同颜色物体观察识别效果
在相机前方分别放置红色、蓝色、绿色物体,观察画面中是否正确标注目标颜色的轮廓框,记录识别是否成功及标注效果。
记录参数
将红、蓝、绿三种颜色的LAB阈值参数和识别结果填写到工作单中,包括L/A/B各通道的上下限值和是否识别成功。
关闭程序
按Ctrl+C关闭color_detect.py和相机节点,恢复APP自启服务。
sudo systemctl start start_app_node.service
单实操工单:颜色识别与LAB阈值⭳下载工单
一、LAB阈值参数记录表
| 颜色 | L下限 | L上限 | A下限 | A上限 | B下限 | B上限 | 是否识别成功 |
|---|---|---|---|---|---|---|---|
| 红色 | |||||||
| 蓝色 | |||||||
| 绿色 |
二、图像处理流程检查清单
| 处理环节 | OpenCV函数 | 作用说明 | 是否理解 |
|---|---|---|---|
| RGB转LAB | cvtColor | ||
| 高斯滤波 | GaussianBlur | ||
| 二值化 | inRange | ||
| 腐蚀 | erode | ||
| 膨胀 | dilate | ||
| 轮廓查找 | findContours |
三、颜色识别效果观察记录
| 目标颜色 | 轮廓是否标注 | 识别是否准确 | 备注 |
|---|---|---|---|
| 红色 | |||
| 蓝色 | |||
| 绿色 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守相机和设备操作规范 | 54321 | 54321 | 54321 |
| 阈值调节 | 准确设置LAB颜色阈值 | 54321 | 54321 | 54321 |
| 脚本运行 | 成功运行color_detect.py | 54321 | 54321 | 54321 |
| 效果观察 | 记录不同颜色识别结果 | 54321 | 54321 | 54321 |
| 工单完成 | 数据记录完整准确 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:颜色样本与识别结果记录(1学时)
视觉识别项目 - 二维码与AprilTag标签识别
标学习目标
- 使用qrcode_creater.py生成二维码,并运行qrcode_detecter.py完成二维码检测与框选;
- 按照操作流程启动AprilTag检测节点,在rviz中查看标签ID识别结果;
- 对照tags.yaml配置文件,说明standalone_tags与layout参数的修改方法,完成自定义标签添加;
- 记录标签识别测试数据,规范填写工作单。
码一、二维码生成与检测
二维码(QR Code)是一种矩阵式二维条码,可存储文本、网址等信息。JetAuto提供了二维码生成和检测脚本,可快速实现二维码的创建与识别。
操作步骤
- 进入二维码脚本目录:
cd jetauto_ws/src/jetauto_example/scripts/qrcode/ - 生成二维码:
python3 qrcode_creater.py,输入要编码的内容,脚本将生成二维码图片并保存 - 检测二维码:
python3 qrcode_detecter.py,脚本调用wechat_qrcode_WeChatQRCode检测器,对画面中的二维码进行矩形框标注并解码输出




二维码检测原理详解
qrcode_detecter.py脚本使用OpenCV的微信二维码检测模块进行检测,工作流程如下:
- 检测器初始化:调用
cv2.wechat_qrcode_WeChatQRCode()创建检测器,加载预训练模型文件 - 图像采集:订阅相机话题,实时获取RGB图像帧
- 二维码定位:检测器扫描图像,定位二维码的三个定位图案(左上、右上、左下的回字形方块)
- 矩形框标注:使用
cv2.rectangle()在检测到的二维码周围绘制矩形框 - 解码输出:解析二维码中的数据内容,将解码结果输出到终端并在画面上显示
二维码结构:标准QR Code由定位图案、定位校正图案、数据区域和静区组成,支持数字、字母、汉字、二进制等多种数据类型。
签二、AprilTag标签识别
AprilTag是一种专为机器人视觉设计的视觉基准标签系统,通过黑白方块编码实现快速检测和高精度定位,广泛用于机器人位姿估计和导航。
操作步骤
- 启动AprilTag检测节点:
roslaunch jetauto_example apriltag_detect_demo.launch - 打开rviz,在Camera窗口中查看识别结果
- 将AprilTag标签放在相机前方,观察识别到的标签ID

AprilTag标签原理详解
AprilTag是一种视觉基准标签(Fiducial Marker),其工作原理如下:
- 编码方式:每个AprilTag由黑白方块组成,内部方块的不同排列组合代表不同的ID编号
- 快速检测:采用优化的图像处理算法,能够在低分辨率图像中快速检测标签位置
- 高精度:可精确计算标签相对于相机的位姿(位置和姿态),包括平移和旋转
- 抗干扰强:对光照变化、旋转、缩放有较好的鲁棒性
- 应用场景:机器人定位与导航、相机标定、增强现实、物体追踪
与二维码的区别:AprilTag专为机器视觉设计,检测速度更快、位姿估计更精确,但数据容量较小(仅存储ID);二维码数据容量大,但检测速度较慢且不提供位姿信息。
| 对比项 | AprilTag | 二维码(QR Code) |
|---|---|---|
| 设计目的 | 机器人视觉基准 | 信息存储与传递 |
| 检测速度 | 快 | 较慢 |
| 位姿估计 | 支持 | 不支持 |
| 数据容量 | 小(仅ID) | 大 |
| 抗干扰性 | 强 | 中等 |
配三、tags.yaml配置
AprilTag检测节点通过tags.yaml配置文件管理标签信息,可通过修改该文件添加自定义标签。
配置文件参数说明
- standalone_tags参数:用于添加自定义标签,每个标签需配置标签ID(id)和物理尺寸(size,单位米),例如添加ID为0、尺寸为0.08米的标签;
- layout参数:用于配置标签布局,可设置标签组的排列方式和相对位置,适用于多标签协同定位场景。
tags.yaml配置文件详解
tags.yaml文件的结构如下,包含两个主要部分:
1. standalone_tags(独立标签):
id:标签的唯一ID编号,必须与实际打印的AprilTag ID对应size:标签的物理边长,单位为米,须准确测量实际打印尺寸- 添加自定义标签时,在standalone_tags列表中新增一条记录即可
2. layout(标签布局):
- 定义多个标签之间的空间关系,用于标签板配置
- 可设置每个标签相对于标签板中心的平移和旋转参数
- 适用于需要多标签协同定位的复杂场景
修改方法:编辑tags.yaml文件,在standalone_tags下新增标签条目,保存后重新启动AprilTag检测节点使配置生效。
操四、实操环节:标签识别
- 相机镜头保护:勿用手触碰镜头,使用后盖上镜头盖;
- 设备操作规范:停止APP服务后再启动检测节点,避免资源冲突;
- 配置文件修改规范:修改tags.yaml前备份原文件,修改后确认格式正确再保存。
生成二维码
进入二维码脚本目录,运行qrcode_creater.py生成二维码,输入编码内容并保存二维码图片。
cd jetauto_ws/src/jetauto_example/scripts/qrcode/
python3 qrcode_creater.py
运行二维码检测
运行qrcode_detecter.py检测二维码,将生成的二维码放在相机前方,观察画面中的矩形框标注和解码输出结果。
python3 qrcode_detecter.py
启动AprilTag检测
停止APP自启服务,新开终端启动AprilTag检测节点。
sudo systemctl stop start_app_node.service
roslaunch jetauto_example apriltag_detect_demo.launch
在rviz查看识别结果
在rviz中打开Camera窗口,将AprilTag标签放在相机前方不同距离和角度,观察识别到的标签ID和位姿信息。
修改tags.yaml添加自定义标签
编辑tags.yaml配置文件,在standalone_tags参数中添加自定义标签的ID和尺寸,保存后重新启动AprilTag检测节点验证配置是否生效。
记录测试数据
记录二维码检测内容、解码耗时,以及AprilTag识别的标签ID、识别距离和角度,填写工作单。
单实操工单:二维码与AprilTag标签识别⭳下载工单
一、二维码检测记录表
| 序号 | 二维码内容 | 是否检测成功 | 解码耗时 |
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 |
二、AprilTag识别记录表
| 标签ID | 识别距离 | 识别角度 | 是否成功 |
|---|---|---|---|
三、tags.yaml配置检查
| 检查项 | 是否完成 |
|---|---|
| 找到tags.yaml配置文件 | |
| 了解standalone_tags参数结构 | |
| 了解layout参数结构 | |
| 成功添加自定义标签并验证 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守相机和设备操作规范 | 54321 | 54321 | 54321 |
| 二维码操作 | 生成与检测二维码 | 54321 | 54321 | 54321 |
| AprilTag识别 | 启动节点并查看结果 | 54321 | 54321 | 54321 |
| 配置修改 | tags.yaml参数修改 | 54321 | 54321 | 54321 |
| 工单完成 | 标签识别测试记录完整准确 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:标签识别测试记录(1学时)
视觉识别项目 - AR视觉与颜色跟随
标学习目标
- 启动AR视觉检测节点,在rviz Camera窗口中观察AR增强现实效果;
- 按照操作流程启动颜色跟随节点,使用语音指令"小幻小幻"唤醒并说"追踪红色"实现颜色目标跟随;
- 对照PID控制原理,说明舵机角度调整与摄像头跟随颜色目标的实现方法;
- 记录跟随任务参数调试数据,规范填写工作单。
增一、AR视觉检测
AR(Augmented Reality,增强现实)技术将虚拟三维物体叠加到真实场景中,实现虚实结合的视觉效果。JetAuto通过识别视觉标记(如AprilTag),在标记位置叠加三维虚拟物体,实现AR增强现实效果。
操作步骤
- 停止APP自启服务:
sudo systemctl stop start_app_node.service - 启动AR视觉检测节点:
roslaunch jetauto_example ar_detect_demo.launch - 在rviz中打开Camera窗口,观察AR增强现实效果
- 将视觉标记放在相机前方,观察标记位置叠加的三维虚拟物体

AR增强现实原理详解
AR增强现实技术的核心是将虚拟信息叠加到真实世界中,其工作流程如下:
- 标记检测:通过相机实时检测画面中的视觉标记(如AprilTag),获取标记的位置和姿态
- 坐标变换:计算标记在相机坐标系中的三维位姿(平移+旋转)
- 虚拟物体渲染:在标记对应的3D位置渲染虚拟物体(如立方体、模型等)
- 虚实叠加:将渲染的虚拟物体与真实相机画面合成,输出到rviz Camera窗口
应用场景:AR视觉可用于机器人交互、教学演示、辅助导航等场景。当相机识别到特定标记时,自动在标记位置显示虚拟信息,实现虚实结合的交互体验。
随二、颜色跟随
颜色跟随功能通过语音指令启动,JetAuto识别指定颜色的目标物体后,利用PID控制算法调整云台舵机角度,使摄像头持续跟随颜色目标移动。
操作步骤
- 启动颜色跟随节点:
roslaunch xf_mic_asr_offline voice_control_color_track.launch - 使用唤醒词"小幻小幻"唤醒语音控制系统
- 发出语音指令:"追踪红色"、"追踪绿色"或"追踪蓝色"
- 将对应颜色的物体放在相机前方移动,观察摄像头跟随效果




颜色跟随实现原理
颜色跟随功能结合了视觉识别与舵机控制,其实现流程如下:
- 语音唤醒与指令识别:通过六路麦克风阵列采集语音,识别唤醒词"小幻小幻"后进入指令模式,解析"追踪红色/绿色/蓝色"指令
- 颜色目标检测:使用LAB颜色空间阈值检测目标颜色,获取目标在画面中的质心坐标(centroid x, y)
- 误差计算:计算目标质心与画面中心的偏差(error = target_x - image_center_x)
- PID控制:根据偏差通过PID算法计算舵机角度调整量
- 舵机驱动:将PID输出转化为舵机角度指令,驱动云台舵机转动,使摄像头对准目标
注意:颜色跟随功能使用的舵机ID须为5,即云台水平旋转舵机。确保舵机接线正确且ID设置无误。
控三、PID控制原理
PID(比例-积分-微分)控制是工业自动化中最常用的控制算法,通过三个分量的组合实现对目标量的精确控制。在颜色跟随中,PID算法用于控制舵机角度,使摄像头平滑、准确地跟随颜色目标。
PID三个分量
| 分量 | 名称 | 作用 | 调节效果 |
|---|---|---|---|
| P | 比例(Proportional) | 与当前偏差成正比 | 决定响应速度,P越大响应越快但易超调 |
| I | 积分(Integral) | 累积历史偏差 | 消除稳态误差,I过大会导致振荡 |
| D | 微分(Derivative) | 反映偏差变化率 | 抑制超调,提高系统稳定性 |
PID控制算法在颜色跟随中的应用
在颜色跟随任务中,PID控制算法的工作原理如下:
控制目标:使颜色目标的质心始终位于画面中心,即偏差 error = target_x - image_center_x 趋近于0。
PID输出计算:
- 比例项 P:
Kp * error,偏差越大舵机调整量越大,决定跟随的响应速度 - 积分项 I:
Ki * Σerror,累积偏差消除稳态误差,防止目标偏移到一侧无法修正 - 微分项 D:
Kd * Δerror,偏差变化率抑制超调,使跟随过程更平滑 - 总输出:
output = Kp*error + Ki*Σerror + Kd*Δerror,转化为舵机角度调整量
参数调节建议:
- 先调P:逐渐增大Kp直到跟随响应速度合适,但不产生明显振荡
- 再调D:增大Kd抑制超调,使跟随过程更平滑
- 最后调I:如果有稳态偏差,适当增大Ki消除,但不宜过大
舵机要求:颜色跟随功能使用的舵机ID须为5(云台水平旋转舵机),确保舵机接线正确且ID已正确配置。
操四、实操环节:AR视觉与颜色跟随
- 舵机安全:确认舵机ID为5,避免错误驱动其他舵机造成损坏;
- 语音指令规范:在安静环境下清晰发音,避免误识别;
- 设备运行安全:颜色跟随时注意小车和云台运动范围,避免碰撞障碍物。
启动AR视觉检测
通过NoMachine连接JetAuto,停止APP自启服务,启动AR视觉检测节点。
sudo systemctl stop start_app_node.service
roslaunch jetauto_example ar_detect_demo.launch
观察AR效果
在rviz中打开Camera窗口,将视觉标记放在相机前方,观察标记位置叠加的三维虚拟物体效果,记录观察结果。
启动颜色跟随
按Ctrl+C关闭AR检测节点,新开终端启动颜色跟随节点。
roslaunch xf_mic_asr_offline voice_control_color_track.launch
语音唤醒
在安静环境下对准麦克风说"小幻小幻",等待系统唤醒成功提示后再进行下一步。
测试追踪红/绿/蓝色
依次说"追踪红色"、"追踪绿色"、"追踪蓝色",每次指令后将对应颜色的物体放在相机前方缓慢移动,观察摄像头是否跟随目标移动。
记录响应时间和跟随效果
记录每种颜色目标的唤醒是否成功、跟随响应时间(从移动目标到摄像头开始跟随的延迟)和跟随稳定性(是否平滑、有无丢失目标)。
关闭程序
按Ctrl+C关闭颜色跟随节点,恢复APP自启服务。
sudo systemctl start start_app_node.service
单实操工单:AR视觉与颜色跟随⭳下载工单
一、AR视觉观察记录
| 观察项 | 观察结果 | 是否完成 |
|---|---|---|
| AR检测节点是否启动成功 | ||
| 是否在rviz Camera窗口看到AR效果 | ||
| 标记位置是否叠加三维虚拟物体 |
二、颜色跟随测试表
| 目标颜色 | 唤醒成功 | 跟随响应时间(s) | 跟随稳定性 | 是否完成 |
|---|---|---|---|---|
| 红色 | ||||
| 绿色 | ||||
| 蓝色 |
三、PID参数记录
| 参数 | 含义 | 调试值 | 效果说明 |
|---|---|---|---|
| Kp | 比例系数 | ||
| Ki | 积分系数 | ||
| Kd | 微分系数 |
四、舵机配置检查
| 检查项 | 是否确认 |
|---|---|
| 舵机ID设置为5 | |
| 舵机接线正确 | |
| 云台水平旋转正常 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守舵机和设备运行安全规范 | 54321 | 54321 | 54321 |
| AR视觉 | 启动并观察AR效果 | 54321 | 54321 | 54321 |
| 语音控制 | 唤醒并发出跟随指令 | 54321 | 54321 | 54321 |
| 颜色跟随 | 观察跟随效果 | 54321 | 54321 | 54321 |
| 工单完成 | 跟随任务参数调试记录完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:跟随任务参数调试记录(1学时)
激光雷达与避障 - 雷达基础
标学习目标
- 对照三角测距法与TOF测距法,说明两种激光雷达测距原理的适用场景与区别;
- 按照操作流程启动雷达节点并在rviz中查看LaserScan点云数据,完成基本测距测试;
- 使用rviz工具添加/scan话题的LaserScan显示,观察雷达扫描点云分布并记录距离与角度数据;
- 记录雷达点云观察结果,规范填写工作单。
原一、激光雷达结构与原理
LiDAR(Light Detection and Ranging,激光雷达)通过发射激光束并接收反射信号来测量目标距离。JetAuto搭载的YDLIDAR G4是一款360度二维激光雷达,采用三角测距原理,广泛应用于机器人建图导航、避障等场景。
1. YDLIDAR G4产品简介
YDLIDAR G4是曳鹿科技推出的360度激光雷达扫描仪,测距范围可达0.1~16m,扫描频率5~12Hz,角分辨率0.5°~1.5°,适用于室内外机器人导航与避障。





2. 三角测距法
三角测距法是G4/A1等型号激光雷达采用的测距原理。激光发射器以一定角度发射激光束,激光照射到目标物体后产生散射光,经透镜聚焦到CCD(电荷耦合器件)传感器上形成光斑。根据几何三角定理,通过光斑在CCD上的位置即可计算出目标距离。

三角测距法成本低、结构简单,适合室内短距离测距场景,但在远距离时精度会下降。
3. TOF测距法
TOF(Time of Flight,飞行时间)法通过测量激光脉冲从发射到接收的飞行时间来计算距离。计算公式为 d = c × t / 2,其中c为光速(约3×10⁸m/s),t为往返飞行时间。TOF法测距远、精度高,但不适用于强光环境。

4. 雷达扫描与点云
激光雷达通过内部电机驱动激光发射器和接收器360度旋转扫描,持续采集各角度的距离数据,形成一圈完整的扫描点云数据。雷达将扫描数据通过/scan话题以LaserScan消息格式发布到ROS中。


三角测距法与TOF测距法对比详解
两种激光雷达测距原理各有优劣,适用于不同场景:
| 对比项 | 三角测距法 | TOF测距法 |
|---|---|---|
| 测距原理 | 激光经目标反射到CCD传感器,几何三角定理计算距离 | 测量激光脉冲飞行时间 d=c×t/2 |
| 测距范围 | 0.1~16m(短中距离) | 可达数十~数百米(远距离) |
| 测距精度 | 近距离精度高,远距离下降明显 | 全量程精度稳定 |
| 成本 | 成本低 | 成本较高 |
| 适用场景 | 室内机器人导航、避障、建图 | 室外自动驾驶、远距离测绘 |
| 代表产品 | YDLIDAR G4、A1 | YDLIDAR TG、RS-LiDAR |
| 强光影响 | 影响较小 | 不适用于强光环境 |
选型建议:室内教育机器人场景(如JetAuto)优先选择三角测距雷达,成本低且满足需求;室外远距离场景选择TOF雷达。
启二、雷达节点启动
启动雷达节点需要先停止APP自启服务,再启动机器人底层节点,最后启动雷达节点。
- 停止APP自启服务:
sudo systemctl stop start_app_node.service - 启动机器人底层节点:
roslaunch jetauto_slam jetauto_robot.launch - 启动雷达节点:
roslaunch jetauto_peripherals lidar.launch
雷达节点启动后,雷达开始旋转扫描,并通过/scan话题发布LaserScan类型的点云数据。可使用rostopic echo /scan查看原始数据,包含ranges数组(各角度距离值)和angle_min/angle_max(扫描角度范围)等字段。
视三、rviz点云观察
使用rviz可视化工具查看雷达扫描点云数据:
- 启动rviz:
rosrun rviz rviz - 设置Fixed Frame:在Global Options中将Fixed Frame设为
lidar_link - 添加LaserScan显示:点击 Add -> By topic -> 选择
/scan-> LaserScan -> OK - 观察点云分布:rviz中将显示雷达扫描到的点云,不同距离的点以不同颜色显示
在点云图中可以观察到周围障碍物的轮廓和距离分布。移动障碍物位置,观察点云的实时变化。

操四、实操环节:雷达点云观察
- 禁止直视雷达发射口:激光雷达发射的激光可能对人眼造成伤害,禁止直视雷达发射口;
- 设备运行安全:雷达旋转时不要用手触碰,避免夹伤;
- 接口插拔规范:USB接口在关机状态下插拔,禁止带电操作。
停止默认节点
通过NoMachine连接JetAuto,打开终端,停止APP自启服务。
sudo systemctl stop start_app_node.service
启动机器人底层节点
启动机器人底层通信节点,等待节点启动成功。
roslaunch jetauto_slam jetauto_robot.launch
启动雷达节点
新开终端,启动雷达节点,观察雷达开始旋转扫描。
roslaunch jetauto_peripherals lidar.launch
打开rviz添加LaserScan
新开终端启动rviz,设置Fixed Frame为lidar_link,点击Add -> By topic -> /scan -> LaserScan -> OK。
rosrun rviz rviz
放置障碍物观察点云变化
在雷达周围不同位置放置障碍物(如纸盒、书本),观察rviz中点云的实时变化,注意点云形状与障碍物位置的对应关系。
记录不同距离角度的测距数据
将障碍物分别放在30cm、50cm、100cm处,使用卷尺测量实际距离,对比雷达测量值,记录不同距离和角度下的测距数据并计算误差。
关闭程序
按Ctrl+C依次关闭rviz、雷达节点和机器人底层节点,恢复APP自启服务。
sudo systemctl start start_app_node.service
单实操工单:雷达点云观察⭳下载工单
一、测距数据记录表
| 序号 | 障碍物距离(cm) | 雷达测量距离(cm) | 角度(°) | 误差(cm) |
|---|---|---|---|---|
| 1 | 30 | |||
| 2 | 50 | |||
| 3 | 100 | |||
| 4 |
二、雷达参数记录表
| 序号 | 参数名称 | 参数值 | 是否记录 |
|---|---|---|---|
| 1 | 扫描范围 | ||
| 2 | 角分辨率 | ||
| 3 | 测距精度 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 禁止直视雷达发射口,遵守设备操作规范 | 54321 | 54321 | 54321 |
| 原理理解 | 能区分三角测距法与TOF测距法的原理和适用场景 | 54321 | 54321 | 54321 |
| 节点启动 | 正确启动雷达节点并查看/scan话题数据 | 54321 | 54321 | 54321 |
| rviz操作 | 能添加LaserScan显示并查看点云数据 | 54321 | 54321 | 54321 |
| 工单完成 | 测距数据记录表和雷达参数记录表填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:雷达点云观察记录(1学时)
激光雷达与避障 - 雷达避障应用
标学习目标
- 使用rosservice命令启动雷达报警(data:3)与雷达避障(data:1)功能,观察机器人避障行为;
- 按照操作流程启动lidar_app.launch与jetauto_controller.launch服务,调整报警距离与安全阈值参数;
- 对照lidar.py源码,说明雷达报警与避障模式的实现逻辑及/scan话题数据的处理方法;
- 分组测试不同障碍布置下的避障效果,规范填写避障任务测试单。
警一、雷达报警功能
雷达报警功能使机器人检测到前方物体时自动转向面对目标。通过rosservice命令启动雷达应用并设置运行模式。
1. 启动雷达报警
- 进入雷达应用:
rosservice call /lidar_app/enter "{}" - 设置报警模式:
rosservice call /lidar_app/set_running "data: 3"
启动机器人后,当雷达检测到前方有物体时,机器人会自动转向面对检测到的目标。




2. APP操作方式
也可通过手机APP操作:打开 WonderAi APP -> 激光雷达 -> 雷达警卫,进入雷达报警模式。
避二、雷达避障功能
雷达避障功能使机器人在前进过程中检测到前方障碍物时,自动左转或右转避开障碍物,实现自主避障行驶。
1. 启动雷达避障
- 进入雷达应用:
rosservice call /lidar_app/enter "{}" - 设置避障模式:
rosservice call /lidar_app/set_running "data: 1" - 停止运行:
rosservice call /lidar_app/set_running "data: 0"
避障模式下,机器人前进时若雷达检测到前方有障碍物,会自动选择左转或右转方向避开障碍物,继续前进。




2. APP操作方式
也可通过手机APP操作:打开 WonderAi APP -> 激光雷达 -> 雷达避障,进入雷达避障模式。
码三、源码分析
雷达报警与避障功能的核心实现在 lidar.py 源码文件中,主要逻辑如下:
- 话题订阅:lidar.py订阅
/scan话题,接收雷达发布的LaserScan点云数据,获取各角度的距离值; - 距离阈值判断:从ranges数组中提取前方一定角度范围内的最小距离值,与设定的报警距离/安全阈值进行比较;
- 报警模式(data:3):当检测到前方物体距离小于阈值时,计算机器人当前朝向与目标的角度差,控制机器人转向面对最近的目标物体;
- 避障模式(data:1):当检测到前方障碍物距离小于安全阈值时,分析左右两侧的空闲空间,选择空间较大的一侧转向避开障碍物;
- 停止模式(data:0):停止雷达应用,机器人停止运动。
lidar.py 核心逻辑详解
lidar.py 的数据处理流程如下:
- 1. 数据接收:通过
rospy.Subscriber('/scan', LaserScan, callback)订阅雷达数据,回调函数中获取 ranges 数组(各角度距离值) - 2. 前方区域提取:从 ranges 中提取正前方一定角度范围(如 -30°~+30°)的距离数据
- 3. 最小距离计算:计算前方区域的最小距离值 min_dist 及对应角度 min_angle
- 4. 模式判断:
- 报警模式:若 min_dist < 报警距离阈值,发布角速度指令使机器人转向 min_angle 方向面对目标
- 避障模式:若 min_dist < 安全阈值,比较左右两侧空间,向空闲侧发布转向指令;否则保持前进
- 5. 速度发布:通过
rospy.Publisher('/jetauto_controller/cmd_vel', Twist)发布速度指令控制机器人运动
关键参数:报警距离阈值、安全阈值、前方检测角度范围等参数可在源码中调整,以适应不同应用场景。
操四、实操环节:雷达避障应用
- 小车运动安全:机器人运动时保持安全距离,人员不要站在小车行驶路径上;
- 场地清理:确保场地开阔无危险障碍物,清除易碰撞物品;
- 紧急停止:出现异常立即按Ctrl+C停止程序,必要时手动扶住小车。
启动lidar_app和jetauto_controller
通过NoMachine连接JetAuto,打开终端,停止APP自启服务,启动雷达应用和移动控制服务。
sudo systemctl stop start_app_node.service
roslaunch jetauto_peripherals lidar_app.launch
新开终端:roslaunch jetauto_controller jetauto_controller.launch
进入雷达应用
新开终端,调用rosservice进入雷达应用。
rosservice call /lidar_app/enter "{}"
测试雷达报警(data:3)
设置运行模式为报警模式,在机器人前方放置障碍物,观察机器人是否自动转向面对目标。
rosservice call /lidar_app/set_running "data: 3"
测试雷达避障(data:1)
先停止当前模式(data:0),再设置运行模式为避障模式,观察机器人在前进过程中遇到障碍物时的避障行为。
rosservice call /lidar_app/set_running "data: 1"
调整障碍物布置测试
分组设置不同障碍物布置方案(单障碍物、多障碍物、窄通道等),测试避障效果,记录避障方向和距离。
停止运行(data:0)
测试完成后停止雷达应用运行模式。
rosservice call /lidar_app/set_running "data: 0"
关闭程序
按Ctrl+C关闭所有终端程序,恢复APP自启服务。
sudo systemctl start start_app_node.service
单实操工单:雷达避障应用⭳下载工单
一、避障测试记录表
| 序号 | 测试场景 | 障碍物数量 | 避障方向 | 避障距离(cm) | 是否成功 | 响应时间(s) |
|---|---|---|---|---|---|---|
| 1 | 单障碍物-正前方 | 1 | ||||
| 2 | 单障碍物-左前方 | 1 | ||||
| 3 | 多障碍物-前方两侧 | 2 | ||||
| 4 | 窄通道 | 2 |
二、运行模式记录表
| 序号 | 运行模式 | data值 | 功能描述 | 是否测试 |
|---|---|---|---|---|
| 1 | 报警模式 | 3 | ||
| 2 | 避障模式 | 1 | ||
| 3 | 停止模式 | 0 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 运动时保持安全距离,遵守场地清理规范 | 54321 | 54321 | 54321 |
| 报警功能 | 正确启动雷达报警模式并观察机器人行为 | 54321 | 54321 | 54321 |
| 避障功能 | 正确启动雷达避障模式并测试不同障碍布置 | 54321 | 54321 | 54321 |
| 源码理解 | 能说明lidar.py中报警与避障模式的实现逻辑 | 54321 | 54321 | 54321 |
| 工单完成 | 避障测试记录表和运行模式记录表填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:避障任务测试单(1学时)
语音控制体验
标学习目标
- 说明六通道麦克风阵列的工作原理与讯飞离线语音识别APPID配置流程;
- 运行voice_control_move.launch语音控制示例,使用"前进""后退""左转""右转""漂移""过来"等语音指令控制小车运动;
- 分组测试语音指令识别率,记录并分析识别结果。
麦一、麦克风阵列与讯飞配置
JetAuto搭载六通道麦克风阵列,配合讯飞离线语音识别引擎,可实现声源定位、降噪处理和语音指令识别功能。麦克风阵列通过USB接口连接Jetson Nano,将采集的音频数据发送至讯飞离线语音识别模块进行处理,识别结果通过ROS话题发布。


1. 讯飞离线语音识别APPID配置
使用讯飞离线语音识别需要配置专属的APPID,步骤如下:
- 登录讯飞开放平台,创建语音识别应用,获取APPID;
- 将APPID配置到
xf_mic_asr_offline功能包的配置文件中; - 下载对应的离线语音识别资源文件(msc.dll和asr纪录文件)到指定目录。






麦克风阵列波束成形(Beamforming)原理详解
六通道麦克风阵列通过波束成形技术实现声源定位和降噪:
- 多通道采集:6个麦克风同时采集声音信号,每个麦克风接收到的是声源信号与不同时延的叠加
- 波束成形:通过对各通道信号进行时延补偿和加权求和,增强目标方向的声音信号,抑制其他方向的噪声
- 声源定位:利用到达时间差(TDOA)算法,根据各麦克风接收到声音的时间差计算声源的方位角
- 降噪处理:波束成形后的信号信噪比显著提升,有利于后续语音识别的准确性
与传统单麦克风对比:
| 对比项 | 单麦克风 | 六通道麦克风阵列 |
|---|---|---|
| 声源定位 | 不支持 | 支持360度声源定位 |
| 降噪能力 | 弱 | 强(波束成形降噪) |
| 远场识别 | 差 | 好(有效距离更远) |
| 抗噪声干扰 | 差 | 好(空间滤波) |
JetAuto利用麦克风阵列的声源定位能力,"过来"指令可使小车向声源方向移动。
声二、唤醒与语音指令
语音控制系统采用唤醒词机制,需要先唤醒设备后才能进行语音指令交互。
1. 唤醒词
唤醒词为 "小幻小幻",说出唤醒词后,voice_play模块会进行语音反馈(如"我在"),表示设备已唤醒,可以接收语音指令。
2. 语音指令列表
| 序号 | 语音指令 | 功能说明 |
|---|---|---|
| 1 | 前进 | 控制小车向前行驶 |
| 2 | 后退 | 控制小车向后行驶 |
| 3 | 左转 | 控制小车向左转弯 |
| 4 | 右转 | 控制小车向右转弯 |
| 5 | 漂移 | 控制小车执行漂移动作 |
| 6 | 过来 | 利用声源定位,控制小车向声源方向移动 |

控三、语音控制示例
运行语音控制示例程序,体验语音控制小车移动功能:
- 停止APP自启服务:
sudo systemctl stop start_app_node.service - 启动语音控制示例:
roslaunch xf_mic_asr_offline voice_control_move.launch
启动后说出唤醒词"小幻小幻",听到语音反馈后说出语音指令(如"前进"),小车将执行对应动作。


注意事项:说话时音量适中,语速自然,与麦克风阵列保持适当距离(建议1~3米)。环境噪音较大时识别率可能下降。
操四、实操环节:语音控制体验
- 音量控制:说话时音量适中,避免过大音量损坏麦克风阵列;
- 安全距离:小车运动时保持安全距离,人员不要站在行驶路径上;
- 紧急停止:出现异常立即按Ctrl+C停止程序。
检查麦克风阵列连接
确认六通道麦克风阵列已通过USB接口正确连接到Jetson Nano,检查连接是否牢固。
确认APPID配置
检查 xf_mic_asr_offline 功能包中讯飞APPID是否已正确配置,离线语音识别资源文件是否存在。
启动语音控制示例
通过NoMachine连接JetAuto,打开终端,停止APP自启服务,启动语音控制示例程序。
sudo systemctl stop start_app_node.service
roslaunch xf_mic_asr_offline voice_control_move.launch
说唤醒词"小幻小幻"
面对麦克风阵列清晰说出唤醒词"小幻小幻",听到voice_play模块的语音反馈(如"我在")后表示唤醒成功。
依次测试6条语音指令
唤醒后依次说出"前进""后退""左转""右转""漂移""过来"6条语音指令,观察小车是否执行对应动作,记录每次测试结果。
测试不同距离和噪音下的效果
分别在近距离(1m)、中距离(2m)、远距离(3m)以及有环境噪音的情况下测试语音识别效果,记录识别结果。
统计识别率
每条指令测试5次,统计成功识别次数,计算识别率,分析影响识别率的因素。
关闭程序
按Ctrl+C关闭语音控制程序,恢复APP自启服务。
sudo systemctl start start_app_node.service
单实操工单:语音控制体验⭳下载工单
一、语音指令识别记录表
| 序号 | 指令 | 测试次数 | 成功次数 | 识别率(%) | 响应时间(s) | 备注 |
|---|---|---|---|---|---|---|
| 1 | 前进 | 5 | ||||
| 2 | 后退 | 5 | ||||
| 3 | 左转 | 5 | ||||
| 4 | 右转 | 5 | ||||
| 5 | 漂移 | 5 | ||||
| 6 | 过来 | 5 |
二、环境测试记录表
| 序号 | 测试距离 | 环境噪音 | 识别效果 | 是否完成 |
|---|---|---|---|---|
| 1 | 近距离(1m) | 安静 | ||
| 2 | 中距离(2m) | 安静 | ||
| 3 | 远距离(3m) | 安静 | ||
| 4 | 中距离(2m) | 有噪音 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 音量适中保持距离,遵守操作安全规范 | 54321 | 54321 | 54321 |
| 模块认识 | 了解六通道麦克风阵列原理与讯飞配置流程 | 54321 | 54321 | 54321 |
| 语音控制 | 成功唤醒并使用语音指令控制小车运动 | 54321 | 54321 | 54321 |
| 识别率测试 | 规范记录并分析语音指令识别率 | 54321 | 54321 | 54321 |
| 工单完成 | 语音指令识别记录表和环境测试记录表填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:语音指令识别记录(1学时)
建图与导航体验 - SLAM建图
标学习目标
- 阐述SLAM同步定位与建图的三个核心过程(预处理、匹配、地图融合);
- 按照操作流程启动Gmapping建图,使用键盘遥控完成场地建图并保存地图;
- 对照地图质量标准检验建图效果,记录地图质量问题。
原一、SLAM原理
SLAM(Simultaneous Localization and Mapping)即同步定位与建图,是移动机器人在未知环境中同时估计自身位姿并构建环境地图的核心技术。SLAM解决的是"鸡生蛋"问题:要建图需要知道位姿,要知道位姿需要有地图。
SLAM的三个核心过程:
- ① 预处理:优化激光雷达点云数据,去除噪声和离群点,为后续匹配提供高质量输入;
- ② 匹配:将当前激光扫描帧与已有地图进行匹配,确定机器人在地图中的位置和朝向;
- ③ 地图融合:将新扫描到的数据融合到已有地图中,持续更新和丰富栅格地图。

SLAM核心过程详解
SLAM是移动机器人领域的核心技术,其工作流程围绕三个核心过程展开:
| 核心过程 | 功能说明 | 关键技术 |
|---|---|---|
| 1. 预处理 | 优化激光雷达点云数据,去除噪声和离群点 | 滤波、降采样、去畸变 |
| 2. 匹配 | 将当前扫描帧与已有地图匹配,确定机器人位姿 | ICP、NDT、相关性扫描匹配 |
| 3. 地图融合 | 将新扫描数据融合到已有地图,更新栅格地图 | 占用栅格地图更新、贝叶斯滤波 |
SLAM分类:基于激光雷达的SLAM(如Gmapping、Cartographer、Hector SLAM)和基于视觉的SLAM(如ORB-SLAM、LSD-SLAM)。JetAuto使用激光雷达SLAM方案。
栅格地图:SLAM输出的地图为占用栅格地图(Occupancy Grid Map),将环境划分为网格,每个网格有三种状态:未知(灰色)、空闲(白色)、占用(黑色障碍物)。
算二、Gmapping算法
Gmapping是ROS中最常用的激光雷达SLAM算法之一,基于RBPF(Rao-Blackwellized Particle Filter)粒子滤波实现。其核心思想是将定位和建图分离,利用里程计进行位姿预测,再通过激光雷达观测修正位姿估计。
- 算法基础:基于RBPF粒子滤波,每个粒子代表一个可能的机器人轨迹及其对应的地图;
- 位姿预测:利用里程计数据预测机器人运动,通过运动模型更新粒子位姿;
- 观测更新:使用激光雷达数据计算粒子权重,权重越高表示位姿估计越准确;
- 低帧率要求:对激光雷达帧率要求低(5Hz即可),适合低配置设备;
- 适用场景:适合室内小规模环境建图,计算量适中。

RBPF粒子滤波原理详解
RBPF(Rao-Blackwellized Particle Filter)是Gmapping算法的核心,其基本思想是将联合SLAM后验概率分解为机器人轨迹后验和给定轨迹的地图后验。
- 粒子表示:每个粒子代表一个可能的机器人轨迹及其对应的地图
- 运动预测:利用里程计数据通过运动模型生成粒子,模拟机器人运动
- 观测更新:使用激光雷达观测数据计算粒子权重,权重越高表示该粒子代表的轨迹越可能正确
- 重采样:根据粒子权重进行重采样,淘汰低权重粒子,复制高权重粒子
- 自适应重采样:Gmapping采用自适应重采样策略,仅在粒子权重方差较大时才重采样,避免粒子退化
Gmapping优势:对激光雷达帧率要求低,计算量适中,适合室内小规模环境建图。
Gmapping局限:在大尺度或特征稀少环境中容易丢失定位,没有闭环检测,长走廊容易产生累积误差。
建三、键盘遥控建图
使用键盘遥控JetAuto在场地上行驶,激光雷达实时扫描环境数据,rviz中同步显示构建的地图。建图完成后使用map_saver保存地图文件。
1. 启动建图节点
在JetAuto终端中执行以下命令启动Gmapping建图节点:
roslaunch jetauto_slam slam.launch slam_methods:=gmapping
另开一个终端启动rviz可视化界面:
roslaunch jetauto_slam rviz_slam.launch slam_methods:=gmapping
2. 启动键盘遥控
再开一个终端启动键盘遥控控制节点:
roslaunch jetauto_peripherals teleop_key_control.launch
键盘控制说明:
- W - 前进
- S - 后退
- A - 长按左转
- D - 长按右转
3. 保存地图
建图完成后,在新终端执行以下命令保存地图:
rosrun map_server map_saver -f ~/map_01
该命令会在用户主目录下生成 map_01.pgm(地图数据)和 map_01.yaml(地图配置文件)两个文件。



操四、实操环节:SLAM建图
- 激光雷达工作时禁止直视发射口,激光可能对眼睛造成伤害;
- 遥控小车时注意周围环境,避免碰撞人员和设备;
- 建图过程中保持匀速行驶,速度过快会导致地图变形。
启动建图节点和rviz
通过NoMachine连接JetAuto远程桌面,打开终端,依次启动Gmapping建图节点和rviz可视化界面。
roslaunch jetauto_slam slam.launch slam_methods:=gmapping
roslaunch jetauto_slam rviz_slam.launch slam_methods:=gmapping
启动键盘遥控
新开终端启动键盘遥控节点,准备操控小车。
roslaunch jetauto_peripherals teleop_key_control.launch
操控小车在场地上建图
使用WASD键遥控小车在场地上匀速行驶,确保覆盖所有区域。建议沿墙壁边缘行驶,转弯时减速,避免剧烈运动。
观察rviz中地图实时更新
在rviz中观察地图实时构建过程,注意地图中黑色区域(障碍物)、白色区域(空闲)和灰色区域(未知)的变化。
完成建图后保存地图
确认地图覆盖完整后,在新终端执行map_saver命令保存地图文件。
rosrun map_server map_saver -f ~/map_01
检查地图质量
对照地图质量标准检查地图:无灰色未知区域、无虚假障碍物、墙壁边缘清晰、走廊区域连通、尺寸比例准确。记录发现的质量问题。
关闭程序
在建图终端和遥控终端中按 Ctrl+C 关闭所有节点,恢复系统服务。
sudo systemctl start start_app_node.service
单实操工单:SLAM建图⭳下载工单
一、建图过程记录表
| 建图算法 | 启动命令 | 小车操控方向 | 地图覆盖区域 | 是否完成 |
|---|---|---|---|---|
| Gmapping | roslaunch jetauto_slam slam.launch slam_methods:=gmapping | |||
| Gmapping | roslaunch jetauto_slam rviz_slam.launch slam_methods:=gmapping | |||
| Gmapping | roslaunch jetauto_peripherals teleop_key_control.launch |
二、地图质量检查表
| 检查项 | 说明 | 是否达标 |
|---|---|---|
| 无灰色区域 | 地图所有区域应为已知状态(黑色障碍或白色空闲) | |
| 无虚假障碍物 | 地图中不应出现实际不存在的障碍物 | |
| 边缘清晰 | 墙壁和障碍物边缘线条清晰,无毛刺和模糊 | |
| 走廊连通 | 走廊和通道区域地图连续,无断裂和缺口 | |
| 尺寸比例准确 | 地图与实际场地尺寸比例一致,无变形 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 雷达工作时禁止直视,遥控注意安全 | 54321 | 54321 | 54321 |
| SLAM原理 | 理解预处理、匹配、地图融合三个核心过程 | 54321 | 54321 | 54321 |
| 建图操作 | 正确启动Gmapping建图节点和rviz | 54321 | 54321 | 54321 |
| 遥控建图 | 完成场地建图并保存地图文件 | 54321 | 54321 | 54321 |
| 工单完成 | 建图过程记录表和地图质量检查表填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:地图保存与标注
建图与导航体验 - 自主导航
标学习目标
- 说明自主导航的五大组成部分(全局地图、自定位、路径规划、运动控制、环境感知);
- 使用Map Nav APP连接小车热点,设置初始位姿和导航目标点,完成自主导航;
- 观察路径规划效果,调整基本导航参数并记录导航体验结果。
导一、自主导航原理
自主导航是机器人从起点自主规划路径并行驶到目标点的过程。一个完整的自主导航系统由五大组成部分协同工作:
- ① 全局地图:使用SLAM建图保存的栅格地图,提供环境全局信息,是路径规划的基础;
- ② 自定位:通过AMCL(自适应蒙特卡洛定位)算法,实时估计机器人在地图中的位姿;
- ③ 路径规划:包括全局规划(使用Dijkstra或A*算法规划最优路径)和局部规划(使用DWA或TEB算法进行实时避障);
- ④ 运动控制:将规划的速度命令发送给底盘控制器,控制机器人跟踪规划路径行驶;
- ⑤ 环境感知:激光雷达实时扫描周围环境,检测动态障碍物,为局部规划提供感知数据。

位二、AMCL定位
AMCL(Adaptive Monte Carlo Localization)自适应蒙特卡洛定位,是ROS中最常用的2D激光雷达定位算法。它基于粒子滤波,用一组带权重的粒子来表示机器人位姿的概率分布。
- 粒子表示:每个粒子代表一个可能的位姿假设,包含位置和朝向;
- 运动预测:根据里程计数据通过运动模型更新粒子位姿;
- 观测更新:使用激光雷达观测数据计算粒子权重,更新位姿估计;
- 自适应机制:根据定位不确定性动态调整粒子数量,平衡精度与计算效率。











粒子滤波定位原理详解
AMCL(Adaptive Monte Carlo Localization)自适应蒙特卡洛定位,是ROS中最常用的2D定位算法,基于粒子滤波实现。
- 粒子集合:用一组带权重的粒子表示机器人位姿的概率分布,每个粒子代表一个可能的位姿假设(x, y, θ)
- 运动更新(预测):根据里程计数据,通过运动模型移动每个粒子,模拟机器人运动
- 感知更新(观测):使用激光雷达数据计算每个粒子的观测似然,更新粒子权重
- 重采样:根据更新后的权重重采样粒子,高权重粒子被复制,低权重粒子被淘汰
- 自适应机制:AMCL根据粒子集的分散程度动态调整粒子数量,在定位不确定时增加粒子,定位确定时减少粒子
| 参数 | 说明 | 典型值 |
|---|---|---|
| min_particles | 最少粒子数 | 100 |
| max_particles | 最多粒子数 | 5000 |
| odom_alpha1-4 | 里程计噪声参数 | 0.002-0.2 |
| laser_max_range | 激光最大匹配距离 | 20.0 |
定位流程:初始化粒子集 -> 运动预测 -> 观测更新 -> 重采样 -> 输出位姿估计
控三、APP导航操作
使用手机Map Nav APP连接JetAuto热点,通过可视化界面设置初始位姿和导航目标点,实现自主导航。
1. 启动导航节点
在JetAuto终端中执行以下命令启动导航功能包:
roslaunch jetauto_navigation navigation.launch robot_name:="/" master_name:='/' map:=map_01
2. 手机连接热点
- 手机连接JetAuto发出的WiFi热点:HW(密码:hiwonder)
- 打开Map Nav APP,设置Master URI:
http://192.168.149.1:11311/
3. 设置初始位姿和导航目标
- Set Pose:长按地图设置机器人初始位姿,拖拽绿色箭头调整朝向;
- Set Goal:长按地图设置导航目标点,拖拽红色箭头调整目标朝向。
设置目标点后,导航系统会自动规划路径并控制小车行驶到目标位置。



操四、实操环节:自主导航
- 导航过程中禁止人员进入小车行驶路线,避免碰撞;
- 设置目标点前确认路径上无障碍物,确保行驶通道畅通;
- 小车异常运动时立即使用急停或 Ctrl+C 终止导航节点。
启动导航节点
通过NoMachine连接JetAuto远程桌面,打开终端,启动导航功能包并加载之前保存的地图。
roslaunch jetauto_navigation navigation.launch robot_name:="/" master_name:='/' map:=map_01
手机连接热点
手机连接JetAuto WiFi热点HW(密码hiwonder),确认手机与小车在同一局域网。
打开Map Nav APP
在手机上打开Map Nav APP应用,进入导航操作界面。
设置Master URI
在APP中设置Master URI为 http://192.168.149.1:11311/,连接ROS Master节点。
使用Set Pose设置初始位姿
长按地图上小车实际所在位置,设置初始位姿。拖拽绿色箭头调整朝向,确认后AMCL开始定位。
使用Set Goal设置目标点
长按地图上目标位置,设置导航目标点。拖拽红色箭头调整目标朝向,导航系统自动规划路径并开始导航。
观察路径规划和导航效果
在APP中观察小车行驶轨迹,注意路径规划的合理性和避障效果。记录导航过程中的参数和体验。
记录导航数据
记录初始位姿坐标、目标点坐标、规划路径长度、导航耗时等数据,填写导航参数记录表。
关闭程序
导航完成后在终端按 Ctrl+C 关闭导航节点,恢复系统服务。
sudo systemctl start start_app_node.service
单实操工单:自主导航⭳下载工单
一、导航参数记录表
| 测试序号 | 初始位姿坐标 | 目标点坐标 | 规划路径长度 | 导航耗时 | 是否到达目标 |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | |||||
| 3 |
二、导航体验评价表
| 评价项 | 说明 | 评价等级(1-5) |
|---|---|---|
| 路径规划合理性 | 规划路径是否最短合理,无绕远 | |
| 避障效果 | 能否有效检测并避开障碍物 | |
| 导航精度 | 到达目标点的位置准确度 | |
| 响应速度 | 路径规划和执行的速度 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 禁止人员进入行驶路线,规范操作 | 54321 | 54321 | 54321 |
| 导航原理 | 理解全局地图、自定位、路径规划等五大组成部分 | 54321 | 54321 | 54321 |
| AMCL理解 | 能说明粒子滤波定位的基本原理 | 54321 | 54321 | 54321 |
| APP操作 | 成功设置位姿和目标点完成导航 | 54321 | 54321 | 54321 |
| 工单完成 | 导航参数记录表和体验评价表填写完整 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:导航体验记录
综合任务:感知-判断-执行
标学习目标
- 整合视觉识别、雷达避障、语音控制与自主导航技术,完成"识别标签-导航到点-避障返航"综合任务;
- 按照分组分工(操作员、观察员、记录员、安全员)协作实施综合任务,记录关键参数并进行调试;
- 分析综合任务中各模块参数关联与调试方法,撰写综合任务分组方案。
务一、任务概述
综合任务将本学期所学的视觉识别、自主导航、雷达避障和语音控制四大模块整合,完成"识别标签-导航到点-避障返航"的完整任务流程。
完整任务流程:
- 语音唤醒启动任务 - 通过语音命令唤醒系统,启动综合任务流程;
- AprilTag识别标签获取ID - 深度相机识别AprilTag标签,获取标签ID作为导航目标参数;
- 根据ID确定导航目标点并启动导航 - 根据标签ID映射到预设的导航目标坐标,启动自主导航;
- 到达目标点后启动雷达避障返航 - 导航到达目标点后,切换到雷达避障模式,开始返航;
- 返航过程中避障并回到起始位置 - 返航过程中利用雷达实时避障,安全回到起始位置。


协二、模块协同
综合任务涉及四大模块的协同工作,各模块通过ROS话题和服务进行数据传递和功能切换。
1. 视觉模块
启动AprilTag检测节点,识别标签并获取ID:
roslaunch jetauto_example apriltag_detect_demo.launch
2. 导航模块
启动导航功能包,加载地图并准备导航:
roslaunch jetauto_navigation navigation.launch
3. 避障模块
启动雷达避障功能,通过服务调用控制启停:
rosservice call /lidar_app/set_running "data: 1"
4. 语音模块
启动语音控制节点,支持语音命令控制小车移动:
roslaunch xf_mic_asr_offline voice_control_move.launch
5. 参数传递关系
- 标签ID -> 导航目标坐标:视觉模块识别AprilTag获取ID,映射到预设导航目标坐标,传递给导航模块;
- 避障距离阈值 -> 运动控制:雷达避障模块根据距离阈值控制底盘运动,实现实时避障;
- 语音命令 -> 任务状态:语音模块接收语音命令,控制任务流程的启动和切换。


工三、分工与参数
综合任务采用分组协作方式,每组4人,按照以下角色分工:
| 角色 | 职责 | 关键任务 |
|---|---|---|
| 操作员 | 启动程序和APP | 负责各模块节点的启动、停止和切换操作 |
| 观察员 | 观察运动轨迹和模块状态 | 监控小车运动轨迹,观察各模块切换是否正常 |
| 记录员 | 记录关键参数 | 记录标签ID、导航坐标、避障距离、语音识别率等数据 |
| 安全员 | 监控安全和维护秩序 | 确保操作安全,准备紧急停止,维护现场秩序 |
关键调试参数:
- AprilTag识别距离和角度范围
- 导航目标点坐标映射(标签ID -> 坐标)
- 雷达避障距离阈值(通常0.3m-0.5m)
- 语音识别准确率和响应时间
操四、实操环节:综合任务
- 综合任务涉及多模块协同,操作前确认各模块节点正常启动;
- 导航和避障过程中所有人员保持安全距离,禁止进入行驶路线;
- 小车异常运动时立即由安全员执行紧急停止(Ctrl+C或急停按钮)。
启动视觉识别(AprilTag检测)
操作员启动AprilTag检测节点,确认相机正常工作并能识别标签。
roslaunch jetauto_example apriltag_detect_demo.launch
放置AprilTag标签记录ID
观察员在小车前方放置AprilTag标签,记录员记录识别到的标签ID。确认视觉模块正确识别并输出ID。
启动导航到目标点
操作员根据标签ID确定导航目标坐标,启动导航节点。使用Map Nav APP或命令行设置导航目标点。
roslaunch jetauto_navigation navigation.launch
到达后启动雷达避障返航
小车到达导航目标点后,操作员切换到雷达避障模式,启动返航程序。观察员监控避障过程中的运动轨迹。
rosservice call /lidar_app/set_running "data: 1"
语音控制辅助
在任务过程中使用语音命令辅助控制,测试语音识别率和响应速度。记录员记录语音识别结果。
roslaunch xf_mic_asr_offline voice_control_move.launch
记录三组测试数据
重复执行综合任务3次,记录每次测试的标签ID、导航目标坐标、避障距离阈值、语音识别率、是否完成任务和耗时等数据。
关闭所有程序
任务完成后,在各终端依次按 Ctrl+C 关闭所有节点,恢复系统服务。
sudo systemctl start start_app_node.service
单实操工单:综合任务⭳下载工单
一、综合任务参数记录表
| 测试序号 | 标签ID | 导航目标坐标 | 避障距离阈值 | 语音识别率(%) | 是否完成任务 | 耗时(s) |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
二、分工确认表
| 角色 | 姓名 | 职责 | 是否到位 |
|---|---|---|---|
| 操作员 | 启动程序和APP | ||
| 观察员 | 观察运动轨迹和模块状态 | ||
| 记录员 | 记录标签ID/导航坐标/避障距离/语音识别率 | ||
| 安全员 | 监控安全和维护秩序 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 安全规范 | 遵守安全要求,紧急停止准备到位 | 54321 | 54321 | 54321 |
| 任务理解 | 理解综合任务流程和模块关系 | 54321 | 54321 | 54321 |
| 模块协同 | 正确启动各模块并完成模块切换 | 54321 | 54321 | 54321 |
| 参数记录 | 记录关键参数数据完整准确 | 54321 | 54321 | 54321 |
| 团队协作 | 分工明确配合默契,沟通高效 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:综合任务分组方案
期末考核与课程总结
标学习目标
- 回顾JetAuto硬件认知、ROS基础、底盘控制、深度相机、视觉识别、雷达、语音控制、建图与导航等课程重点内容;
- 分组演示综合任务成果,展示参数记录与调试过程,进行自评互评与教师评价;
- 总结课程常见问题与设备维护要点,撰写个人学习总结。
顾一、课程回顾
本学期课程围绕JetAuto智能车平台,系统学习了从硬件认知到ROS编程、从传感器使用到综合应用的全流程内容。以下为各模块内容总结:
| 模块 | 主要内容 | 关键命令/操作 |
|---|---|---|
| JetAuto硬件认知 | Jetson Nano / 扩展板 / 麦轮底盘 / 深度相机 / 激光雷达 / 麦克风阵列 | 认识各模块接口和功能 |
| ROS基础 | 节点Node / 话题Topic / 消息Message / 服务Service | roscore, rosnode, rostopic, rosservice |
| 底盘控制 | 速度控制 / 键盘控制 / 手柄控制 / 麦轮运动学 | teleop_key_control.launch, joystick_control.launch |
| 深度相机 | RGB彩色图像 / 深度图像 / 点云数据 | astrapro.launch, rqt_image_view |
| 视觉识别 | 颜色识别 / AprilTag / 二维码 / AR / 颜色追踪 | color_detect, apriltag_detect, qrcode_detect |
| 雷达应用 | 雷达基础 / 报警 / 避障 | lidar.launch, lidar_app/set_running |
| 语音控制 | 语音识别 / 语音命令控制小车移动 | voice_control_move.launch |
| 建图与导航 | SLAM / Gmapping / AMCL / APP导航 | slam.launch, navigation.launch, map_saver |




展二、成果展示
各组依次演示综合任务成果,展示参数记录与调试过程,其他组进行互评。
1. 演示内容
- 任务演示:完整演示 AprilTag识别 -> 导航到点 -> 避障返航 全流程;
- 参数展示:展示综合任务参数记录表,包括标签ID、导航坐标、避障距离、语音识别率等数据;
- 调试汇报:汇报调试过程中遇到的问题和解决方案,分享调试经验;
- 互评环节:其他组对演示组进行评价,提出改进建议。
2. 展示要求
- 每组演示时间控制在5-8分钟;
- 需展示至少一组完整的测试数据;
- 汇报调试过程中遇到的关键问题及解决方法。
护三、设备维护与总结
1. 设备维护要点
- 相机镜头保护:使用后盖好镜头盖,避免指纹和灰尘,清洁时使用专用镜头布;
- 雷达发射口防护:避免遮挡和碰撞雷达发射口,存放时注意防护;
- 电池充电保养:长期不使用时定期充电存放,避免过充过放,存放于干燥环境;
- 线缆连接检查:定期检查各模块线缆连接是否松动,USB线和电源线接口是否氧化;
- 设备存放环境:存放于干燥、通风、避光的环境,避免高温高湿。
2. 常见问题排查
| 问题 | 可能原因 | 排查方法 |
|---|---|---|
| 节点启动失败 | ROS环境未配置/依赖缺失/端口占用 | 检查ROS环境变量,确认依赖包安装,检查端口占用 |
| 相机无图像 | USB连接松动/驱动未加载/节点未启动 | 检查USB连接,重新加载驱动,确认节点启动顺序 |
| 雷达无数据 | 雷达未上电/串口权限/数据线故障 | 检查雷达电源,设置串口权限,更换数据线 |
| 导航偏差 | 初始位姿不准/地图质量差/AMCL参数不当 | 重新设置初始位姿,检查地图质量,调整AMCL参数 |
操四、实操环节:成果展示与总结
- 演示过程中注意设备安全,避免碰撞和跌落;
- 演示前确认设备电量充足,各模块连接正常;
- 演示结束后按规范关闭设备,做好设备归位和维护。
各组准备演示资料
各组整理综合任务参数记录表、调试日志和演示方案,准备5-8分钟的成果展示。
分组演示综合任务成果
各组依次演示AprilTag识别 -> 导航到点 -> 避障返航完整流程,展示任务执行效果。
展示参数记录表
展示综合任务参数记录表,汇报三组测试数据的结果和分析结论。
汇报调试经验
汇报调试过程中遇到的关键问题(如标签识别失败、导航偏差、避障距离不当等)及解决方案。
其他组互评
其他组对演示组进行评价,提出优点和改进建议,填写互评分数。
填写综合评价表
完成自评、互评和师评,填写综合评价表和课程知识点自查表。
撰写个人学习总结
撰写个人学习总结,包括收获、不足和改进方向,课后提交。
单实操工单:成果展示与课程总结⭳下载工单
一、综合评价表
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 知识回顾 | 系统掌握课程重点内容 | |||
| 成果展示 | 清晰展示综合任务成果 | |||
| 评价完成 | 自评互评客观准确 | |||
| 总结撰写 | 个人学习总结要点齐全 | |||
| 设备维护 | 了解设备维护要点 |
二、课程知识点自查表
| 模块名称 | 掌握程度 | 关键操作命令 | 是否熟练 |
|---|---|---|---|
| JetAuto硬件认知 | |||
| ROS基础 | |||
| 底盘控制 | |||
| 深度相机 | |||
| 视觉识别 | |||
| 雷达应用 | |||
| 语音控制 | |||
| 建图与导航 |
评五、评价反馈
对照下表自评或互评,点击方格打分(每项 1-5 分)。
| 评价项目 | 评价标准 | 自评 | 互评 | 师评 |
|---|---|---|---|---|
| 知识回顾 | 系统掌握课程重点内容 | 54321 | 54321 | 54321 |
| 成果展示 | 清晰展示综合任务成果 | 54321 | 54321 | 54321 |
| 评价完成 | 自评互评客观准确 | 54321 | 54321 | 54321 |
| 总结撰写 | 个人学习总结要点齐全 | 54321 | 54321 | 54321 |
| 设备维护 | 了解设备维护要点 | 54321 | 54321 | 54321 |
评分说明:5=优秀 · 4=良好 · 3=合格 · 2=需改进 · 1=不合格。首次点击为5分,再次点击递减。
课后作业:个人学习总结