news 2026/9/19 8:14:53

机器人系统ros2期末速通2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器人系统ros2期末速通2

6. Action(动作):带反馈、可取消的长任务

6.1 核心概念(先搞懂是什么)

Action 是 ROS2 里专门处理耗时久、需要中间反馈、还能随时取消的任务的通信方式。

  • 专业名词拆解
    • Goal(目标):你给 Action 下达的任务(比如 “导航到 (1,2) 点”)。
    • Feedback(反馈):任务执行中持续返回的状态(比如导航时 “距离目标还有 0.5 米”“当前速度 0.2m/s”)。
    • Result(结果):任务完成后返回的最终状态(比如 “导航成功”/“导航失败,原因:目标点不可达”)。
    • Cancel(取消):任务执行中可以中断(比如导航时突然改主意,取消本次导航)。
  • 对比 Service(服务):Service 是 “一问一答”,只能等任务结束才返回结果,中间没反馈、也不能取消(比如问 “机器人当前位置?”,立刻回答,这适合用 Service)。

6.2 考点提炼(考试直接用)

题型核心答案
单选题(6-1)Action 比 Service 的优势:支持反馈与取消(答案 B)
简答题(6-2)导航适合 Action 的原因:1. 导航耗时较长;2. 需要持续反馈(距离、进度);3. 可能需要取消(临时避障 / 改目标)。
场景题(6-3)导航无反馈 / 无结果的排查点(记 4 个即可):1. action server 是否存在 / 激活(比如 nav2 没启动);2. TF 坐标树是否完整(map→odom→base_link);3. 传感器 / 代价地图正常吗(比如激光雷达 /scan 话题没数据);4. 目标点是否在不可达区域(比如在墙里)。

6.3 常用命令(记下来,考到直接写)

bash

运行

ros2 action list # 列出所有正在运行的Action ros2 action info <action名> # 查看某个Action的详细信息(比如类型、服务器) ros2 action send_goal <action名> <目标类型> "目标参数" # 发送Action目标(比如导航目标)

7. Interface(接口):msg/srv/action 定义与自定义

7.1 核心概念(先搞懂是什么)

Interface 是 ROS2 中不同节点之间 “沟通的语言”,分三种:

  • 专业名词拆解
    • msg(消息):单向通信(比如传感器数据、机器人速度指令),对应 Topic(话题)通信。例:geometry_msgs/msg/Twist(机器人速度指令,包含线速度和角速度)。
    • srv(服务):双向一问一答,对应 Service(服务)通信。例:std_srvs/srv/Empty(空服务,只请求不传数据,比如 “让机器人停止”)。
    • action(动作):带反馈 / 取消的长任务,对应 Action(动作)通信。例:nav2_msgs/action/NavigateToPose(导航动作,包含目标、反馈、结果)。

7.2 考点提炼(考试直接用)

题型核心答案
单选题(7-1)查看 Twist 消息结构:ros2 interface show geometry_msgs/msg/Twist(答案 B)
简答题(7-2)自定义接口编译时声明依赖的文件:1. package.xml:加 build_depend(编译依赖)和 exec_depend(运行依赖);2. CMakeLists.txt:find_package 找依赖 + rosidl_generate_interfaces 生成接口 + ament_export_dependencies 导出依赖。
场景题(7-3)自定义 msg 编译过但运行找不到的排查点:1. 有没有 source 当前工作空间的 setup.bash(source install/setup.bash);2. Python 包是否正确安装、entry_points 配置对不对;3. 是不是被其他工作空间的同名接口覆盖了;4. 有没有忘记加ament_export_dependencies(rosidl_default_runtime)

7.3 关键操作(理解即可,考试考概念)

  • 查看接口结构:ros2 interface show <接口类型>(比如ros2 interface show geometry_msgs/msg/Twist)。
  • 自定义接口核心:必须在package.xmlCMakeLists.txt里声明依赖,否则编译 / 运行会报错。

8. QoS(服务质量):控制数据传输的规则

8.1 核心概念(先搞懂是什么)

QoS 是 ROS2 中 “约定数据怎么传” 的规则,解决不同场景下的传输需求(比如要不要保证数据不丢、新订阅者能不能拿到历史数据)。

  • 核心 QoS 参数(必考)
    参数含义
    Reliability可靠性:RELIABLE(可靠,保证数据不丢,重传丢失的包);BEST_EFFORT(尽力而为,丢包不重传,速度快)。
    Durability持久性:VOLATILE(易失,新订阅者只能拿到订阅后的新数据);TRANSIENT_LOCAL(本地暂存,新订阅者能立刻拿到最新的历史数据)。
    History/Depth历史策略:KEEP_LAST (n)(只保留最后 n 条数据);KEEP_ALL(保留所有数据,少用)。

8.2 考点提炼(考试直接用)

题型核心答案
单选题(8-1)新订阅者立刻拿到最新地图:TRANSIENT_LOCAL(答案 B)
简答题(8-2)常用话题的 QoS 组合:1. /scan(激光雷达):BEST_EFFORT + KEEP_LAST (5~10)(高频、允许丢少量包,低延迟);2. /map(地图):RELIABLE + TRANSIENT_LOCAL(地图重要不丢包,新订阅者能拿到);3. /cmd_vel(速度指令):RELIABLE + KEEP_LAST (1)(指令要可靠,只需要最新的,避免积压)。
场景题(8-3)rosbag2 回放看不到数据的原因 + 处理:原因:回放端和订阅端 QoS 不匹配(比如回放用 RELIABLE,订阅用 BEST_EFFORT),导致数据匹配失败;处理:调整订阅端 QoS(传感器用 BEST_EFFORT,地图用 TRANSIENT_LOCAL),或用 QoS 覆盖配置文件。

8.3 记忆技巧

  • 传感器(/scan、/image):BEST_EFFORT(快,允许丢包)+ KEEP_LAST。
  • 关键数据(/map、/cmd_vel):RELIABLE(不丢包);地图额外加 TRANSIENT_LOCAL。

9. Parameter(参数):节点的配置项

9.1 核心概念(先搞懂是什么)

Parameter 是 ROS2 节点的 “配置参数”,比如机器人的速度上限、PID 参数、是否启用仿真时间,都可以用参数设置。

  • 专业名词拆解
    • declare_parameter:声明参数(ROS2 强制推荐!先声明 “参数名、类型、默认值”,再使用)。
    • 动态参数:运行时可以修改的参数(比如在线调 PID),修改时可以加回调函数校验。

9.2 考点提炼(考试直接用)

题型核心答案
单选题(9-1)启用仿真时间:use_sim_time(答案 A)
简答题(9-2)ROS2 推荐先 declare 再 set 的原因:1. 防止拼写错误导致 “悄悄创建不存在的参数”;2. 明确参数类型和默认值,避免类型错误;3. 方便用 launch/YAML/ 工具管理参数。
场景题(9-3)调 PID 后机器人抖动的安全机制:1. 参数回调中加范围限制 + 平滑(比如每次修改步长不超过 0.1,渐变生效);2. 关键参数加保护(修改需要确认 / 密码);3. 记录参数变更日志,支持回滚到上一次稳定值。

9.3 常用命令(记下来)

bash

运行

ros2 param list # 列出节点的所有参数 ros2 param get <节点名> <参数名> # 获取参数值 ros2 param set <节点名> <参数名> <值> # 设置参数值 ros2 param dump <节点名> # 导出节点所有参数到文件

10. Launch、Remap、Namespace:系统编排与多机器人

10.1 核心概念(先搞懂是什么)

  • Launch:ROS2 的 “启动脚本”,可以一次性启动多个节点、传参数、重映射话题、设置命名空间,不用手动一个个启动。
  • Remap(重映射):修改话题 / 服务 / Action 的名字(比如把机器人 1 的 /cmd_vel 改成 /robot1/cmd_vel)。
  • Namespace(命名空间):给节点 / 话题加 “前缀”,隔离多机器人的通信(比如机器人 1 的所有话题都放在 /robot1 / 下)。

10.2 考点提炼(考试直接用)

题型核心答案
单选题(10-1)重映射 /cmd_vel:launch / 命令行 remap(答案 B)
简答题(10-2)Namespace 在多机器人中的作用:1. 避免话题 / 服务 / Action 名冲突(比如两台机器人都有 /cmd_vel,加前缀后变成 /robot1/cmd_vel 和 /robot2/cmd_vel);2. 调试更清晰,能区分不同机器人的消息;3. 跨机部署时容易统一管理。
场景题(10-3)RViz 位姿跳变的原因 + 解决:原因:两台机器人的 TF 坐标系名冲突(都用 base_link、odom),导致 TF 树混乱;解决:给坐标系加前缀(比如 robot1/base_link、robot2/base_link),或设置 tf_prefix 参数,确保每台机器人的 TF 唯一。

10.3 关键技巧

  • 多机器人核心:Namespace 隔离话题 + TF 坐标系加前缀,避免所有 “重名” 问题。
  • Remap 常用方式:在 launch 文件里写remap_rule=[('/原话题名', '/新话题名')],或命令行加--ros-args --remap /cmd_vel:=/robot1/cmd_vel

考试通关总结(必背)

核心考点速记

  1. Action:核心优势是支持反馈与取消,适合长任务(导航);排查导航问题先看 action server 和 TF。
  2. 接口:查看结构用ros2 interface show;自定义接口必须改package.xmlCMakeLists.txt,运行前要 source。
  3. QoS:地图用 TRANSIENT_LOCAL,传感器用 BEST_EFFORT,指令用 RELIABLE+KEEP_LAST (1);bag 回放问题多是 QoS 不匹配。
  4. 参数:启用仿真时间是use_sim_time;先 declare 再 set 避免错误;调参数要加范围 / 平滑 / 回滚保护。
  5. 多机器人:Namespace 隔离话题,TF 加前缀避免冲突;Remap 主要在 launch / 命令行设置。

答题技巧

  • 单选题:直接记答案(比如 Action 选 B、QoS 选 B、参数选 A、Remap 选 B)。
  • 简答题:按 “1、2、3” 分点答,和参考答案要点一致即可(不用多写,考点踩中就得分)。
  • 场景题:先答 “原因”,再答 “解决方法”,分点列,优先写参考答案里的要点(比如导航无反馈先查 action server 和 TF)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 0:00:21

Linux网络编程-UDP 广播原理与实战

一、UDP 广播核心概念 UDP 广播是指一台主机向所在子网&#xff08;同一局域网&#xff09;内的所有主机发送数据的通信方式&#xff0c;是 UDP 无连接特性的典型应用场景。 1.1 广播地址分类 类型格式 / 示例特点受限广播地址255.255.255.255① 不会被路由器转发&#xff1…

作者头像 李华
网站建设 2026/9/11 0:00:22

什么是RPKI

文章目录为什么需要RPKIRPKI是如何工作的RPKI功能扩展RPKI&#xff08;Resource Public Key Infrastructure&#xff0c;资源公钥基础设施&#xff09;是一种基于PKI&#xff08;Public Key Infrastructure&#xff0c;公钥基础设施&#xff09;的技术&#xff0c;专门用于验证…

作者头像 李华
网站建设 2026/9/16 1:05:55

销售额飙涨 2.5 倍,TACOS 直降 10 点!DeepBI 助力亚马逊卖家高效破局

亚马逊美国站卖家&#xff0c;谁没遇到过 “卖得多、赚得少” 的尴尬&#xff1f;深圳一家深耕美国站点的工厂卖家&#xff0c;就曾面临这样的困境——5月广告总销售额虽高&#xff0c;ACOS却高达30.58%&#xff0c;运营成本居高不下。直到邂逅DeepBI智能AI广告系统&#xff0c…

作者头像 李华
网站建设 2026/9/18 12:43:41

稠密、稀疏与MoE:大模型时代的三重架构革命

稠密、稀疏与MoE&#xff1a;大模型时代的三重架构革命当模型规模遇到物理极限&#xff1a;参数爆炸的困境想象一下建造一座摩天大楼。传统方法&#xff08;稠密模型&#xff09;就像用实心钢材建造每个楼层——结构坚固但极其沉重&#xff0c;很快会遇到地基承重极限。现代方法…

作者头像 李华
网站建设 2026/9/8 22:35:10

大数据情感分析:让广告更具情感吸引力

大数据情感分析&#xff1a;让广告从“无感”到“共情”的技术密码 一、引言&#xff1a;为什么你刷到的广告&#xff0c;总像在“喊口号”&#xff1f; 清晨地铁上&#xff0c;你刷到一条汽车广告&#xff1a;“XXSUV&#xff0c;动力强&#xff0c;空间大”——翻了个白眼划走…

作者头像 李华