深入理解ROS中的Topics, Services和Actions(含示例)
不知道听谁说的:之后的人工智能会和机器人强烈结合,是下一个十年的技术趋势。
“ROS – 机器人操作系统 机器人操作系统 (ROS) 是一套软件库和工具,可帮助您构建机器人应用程序。从驱动程序到先进的算法,以及强大的开发者工具,ROS 可满足您下一个机器人项目的所有需求。而且它完全开源。”
ROS 和 ROS 2 简介
- ROS(机器人操作系统) 是一个灵活的机器人软件开发框架。它提供工具、库和约定,用于简化在各种机器人平台上构建复杂且可靠的行为。
- ROS 2 是 ROS 的下一代版本,解决了实时性能、安全性和多平台支持等问题。其底层使用 DDS(数据分发服务)实现可扩展且可靠的通信。
可以到官网学习:ros.org
ROS 中的核心通信概念
- Topics(主题) – 用于节点间异步传输流式数据。
- Services(服务) – 用于同步的请求/响应通信。
- Actions(动作) – 用于带反馈和可取消的长时间运行任务。
1. Topics(主题)
什么是 Topics?
- Topics 提供发布/订阅通信模式。
- 一个节点发布数据,其他节点订阅。
- 非常适合用于持续流数据(如传感器数据)。
主要特点
通信模式 | 发布 / 订阅 |
---|---|
方向 | 单向 |
同步性 | 异步 |
典型用途 | 图像、激光、IMU、状态信息 |
示例代码
# 发布者(Publisher) pub = rospy.Publisher('/chatter', String, queue_size=10) pub.publish("你好,世界!") # 订阅者(Subscriber) def callback(msg): rospy.loginfo(msg.data) sub = rospy.Subscriber('/chatter', String, callback)
2. Services(服务)
什么是 Services?
- 提供一种同步、请求-响应的通信方式。
- 适用于执行一次性任务,并获得返回值。
- 客户端请求,服务器响应。
主要特点
通信模式 | 请求 / 响应 |
---|---|
方向 | 双向 |
同步性 | 同步(阻塞) |
典型用途 | 获取传感器快照、配置设置、参数查询 |
示例代码
# 服务端(Server) def handle_add(req): return req.a + req.b service = rospy.Service('add_two_ints', AddTwoInts, handle_add) # 客户端(Client) rospy.wait_for_service('add_two_ints') add = rospy.ServiceProxy('add_two_ints', AddTwoInts) resp = add(1, 2)
3. Actions(动作)
什么是 Actions?
- 适合需要反馈、持续时间较长并可中断的任务。
- 如导航、机械臂运动等。
- 由客户端发送“目标”,服务器处理并定期反馈进度。
主要特点
通信模式 | 目标 / 状态 / 反馈 |
---|---|
方向 | 双向 |
同步性 | 异步 + 反馈机制 |
典型用途 | 导航、移动、长任务控制 |
示例代码
# 发送目标 client = actionlib.SimpleActionClient('move_base', MoveBaseAction) client.wait_for_server() goal = MoveBaseGoal() goal.target_pose.header.frame_id = "map" goal.target_pose.pose.position.x = 1.0 client.send_goal(goal) client.wait_for_result() # 服务器 def execute_cb(goal): # 执行任务 feedback = MoveBaseFeedback() result = MoveBaseResult() server.set_succeeded(result) server = actionlib.SimpleActionServer('move_base', MoveBaseAction, execute_cb, False) server.start()
ROS 中 Action 和 Service 的区别
特性 | Service(服务) | Action(动作) |
---|---|---|
通信模式 | 请求 / 响应 | 目标 / 反馈 / 结果 |
是否同步 | 是(阻塞) | 否(非阻塞) |
任务持续时间 | 短 | 长时间运行 |
支持反馈 | 否 | 是 |
可取消 | 否 | 是 |
适用场景 | 快速查询或配置 | 需要进度反馈的长任务,如导航 |
类比
- Service 类似于调用函数并等待返回结果
- Action 类似于在后台启动任务并持续检查进度
结语
- Topics、Services 和 Actions 是 ROS 中进行节点间通信的三大机制。
- 合理选择通信方式将帮助构建更加稳定、高效的机器人系统。
ROS (Robot Operating System) 机器人操作系统
英文:ROS Topics, Services and Actions Explained with Clear Examples
本文一共 830 个汉字, 你数一下对不对.扫描二维码,分享本文到微信朋友圈
The post 深入理解ROS中的Topics, Services和Actions(含示例) first appeared on 小赖子的英国生活和资讯.
相关文章:
- 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
- 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
- 花钱让人换汽车钥匙的电池真是个智商税 今天想不到我这么聪明的人也被人狠狠的收了一把智商税. 今天被收智商税了, 去 Tesco 换车钥匙的电池. . 才发现如此的简单, 那人直接2分钟搞定2个, 然后收了我25英镑. . 服了. . 我还以为很复杂…… 网友说 “1....
- 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...
- HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
- 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...
- 推荐英国三文鱼的烹饪方法 Tesco超市里都有卖三文鱼, 我最喜欢的是这种没有被烟熏过的. 产地挪威, 生的. 昨天圣诞节特价, 原价 24 镑, 半价只要 12 镑. 果断买了一盒. 其实我最喜欢生吃, 沾着介末吃, 老婆也很喜欢,...
- Are you with me ? 周一到周五 早上7:30左右起床 洗漱5分钟后就开车上班 7:55 左右 能到公司. 每天开车我就听着 广播 KissFM – 后来了解到这是 英国比较有名的 总部在伦敦 的FM广播电台 主要是...