不知道听谁说的:之后的人工智能会和机器人强烈结合,是下一个十年的技术趋势。
“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
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK