普通视图

发现新文章,点击刷新页面。
昨天以前首页

深入理解ROS中的Topics, Services和Actions(含示例)


不知道听谁说的:之后的人工智能会和机器人强烈结合,是下一个十年的技术趋势

“ROS – 机器人操作系统 机器人操作系统 (ROS) 是一套软件库和工具,可帮助您构建机器人应用程序。从驱动程序到先进的算法,以及强大的开发者工具,ROS 可满足您下一个机器人项目的所有需求。而且它完全开源。”

ROS 和 ROS 2 简介

ros-robot-operating-system 深入理解ROS中的Topics, Services和Actions(含示例) 学习笔记 机器人 ROS

ROS: Robot Operating System 机器人操作系统

  • 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 个汉字, 你数一下对不对.
深入理解ROS中的Topics, Services和Actions(含示例). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 深入理解ROS中的Topics, Services和Actions(含示例) 学习笔记 机器人 ROS
The post 深入理解ROS中的Topics, Services和Actions(含示例) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 花钱让人换汽车钥匙的电池真是个智商税 今天想不到我这么聪明的人也被人狠狠的收了一把智商税. 今天被收智商税了, 去 Tesco 换车钥匙的电池. . 才发现如此的简单, 那人直接2分钟搞定2个, 然后收了我25英镑. . 服了. . 我还以为很复杂…… 网友说 “1....
  4. 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...
  5. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
  6. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...
  7. 推荐英国三文鱼的烹饪方法 Tesco超市里都有卖三文鱼, 我最喜欢的是这种没有被烟熏过的. 产地挪威, 生的. 昨天圣诞节特价, 原价 24 镑, 半价只要 12 镑. 果断买了一盒. 其实我最喜欢生吃, 沾着介末吃, 老婆也很喜欢,...
  8. Are you with me ? 周一到周五 早上7:30左右起床 洗漱5分钟后就开车上班 7:55 左右 能到公司. 每天开车我就听着 广播 KissFM – 后来了解到这是 英国比较有名的 总部在伦敦 的FM广播电台 主要是...

自动生成Excel索引

作者 xrspook
2025年5月30日 08:22

当年今日

我要对一堆的本地eml文件做一个索引,应该用什么方式表达呢?一开始我想到的是做一个html的网页。上面需要表达的信息包括:分类、时间、附件个数、发件人、邮件主题以及文件路径。文件路径应该是一个超链接,我点击这个网页的超链接,就能到达那个文件,可能是直接打开文件。有没有一种方式是打开资源管理器直接锚定到那个文件但不打开呢?一开始我是这么设想的,但后来网友告知,在浏览器层面没办法打开这些文件,因为安全性的原因,浏览器没有打开文件的权限。如果那是一个txt文件,那么你可以直接在浏览器里打开,如果是一个图片,也能打开,但是如果那是一些其它后缀的文件,理论上是打不开的,哪怕你在浏览器里以资源管理器索引的方式打开了文件夹的目录,当你点击某个后缀文件的时候,会弹出一个窗口让你下载。一整个下午我就在这里兜圈子,总感觉是不是有一种方式能够让浏览器弹出资源管理器锚定到那个文件,哪怕不打开文件本身。我一开始天真地觉得,在浏览器里面点超链接就能直接打开eml文件,因为那个后缀的文件我已经设定了默认打开方式是雷鸟。事实证明,我只是一个下午都在白费力气而已。

普通a开头的超链接是无法打开eml文件的,我想到了Excel里面的超链接。Excel的超链接可以直接链接到某个文件。它跟浏览器不一样。不会在Excel里面打开那些东西,哪怕那些个txt或者一个图片,会直接打开文件。所以我就尝试在Excel里给eml文件做一个超链接,结果发现。当我点击那个超链接的时候,会弹出一个窗口,告诉我这么干不安全,但是我依然可以选择是继续打开那个文件,之后雷鸟就会启动,那个eml文件就被打开了。所以简单来说,实际上在Excel里面是直接可以打开eml文件的,不过打开的时候会有一个令人烦恼的弹窗,可能在某些地方进行设置,可以把那个安全提醒的弹窗去掉,但我觉得没有必要。如果你不想被那个弹窗烦恼,你可以右键那个单元格的链接地址,直接贴到任何一个资源管理器地址栏,回车就打开了。操作是有点烦,但起码不会像浏览器那样,打不开或者非让你下载不可。

折腾了一个下午之后,我发现原来我的目标居然是把那个邮件索引做在Excel文件里。Excel的版本可以做的,和之前的功能没有区别,更强大的地方在于如果是在Excel文件里,排序很方便,搜索也很方便。

接下来我没有做更多浪费时间的事情,直接去把这个问题丢给Deepseek,问它如何用Python的方式把批量的 eml文件信息输出到Excel。第1次给我的那个版本只能针对某个路径,但如果那个路径里面还有子文件夹会被忽略,所以后来我增加提问,所以Deepseek又给了我递归那个路径下所有文件夹的版本。默认的回答没有附件个数,所以最后我要加多了要计算每个邮件附件个数的功能。

事实证明Deepseek真的是一个好东西,因为它第1个版本的代码已经能输出大概差不多那种东西,但是不能完全符合我的要求,因为它认为重要的信息和我需要的信息以及排序始终有区别。把pandas里面的数据输出到Excel有好几种方式,但是有些输出方式出来的那个Excel文件我个人感觉很丑,所以我又花了半个下午的时间改成了以xlwings输出,这个东西比其它输出在格式调整方面有更大的调控空间,比如自适配行高和列宽。在其它引擎里可能需要一大段的代码,但是在xlwings里面就只需要一句autofit。之所以知道这个,是因为之前在学Python提高Excel工作效率的书里我已经接触过这个东西。

Deepseek的代码能解决核心问题,但细节调整还是得靠自己。从第1次叫Deepseek写代码到我最终得到我想要的那个Excel索引,花了不到24小时。

浅谈一下AI编程的现状

作者
2025年4月17日 01:00

最近试了试用各家的AI写了点Python程序和PHP,可以说效果是千差万别,有些AI写出来又快又好,有些就是思考了很久但是输出的内容有报错。首先声明一下这篇文章是纯人工写的,完全0AI(除了封面),然后就是具有时效性,可能过两天推出个新的大模型又把我某些卡壳的体验修复了,最后就是纯个人体验和感受不具备普遍性,仅供参考。 先大概展示一下我都做了些什么玩意出来,以及我人工介入的部分大概有多少。 结合自己的工作内容,一开始想给本院的HIS加装一个外挂型的AI润色工具,无奈在自己尝试多次以及请教AI后都没办法取到程序内的数据,文本框里的字都摘不出来。也许是因为这玩意是PowerBuilder做出来的上古产物,而它最适合的运行环境的Windows XP。 人工介入比例:50% 在外挂版失败后,

来源

Python极简美学:一行代码完成的26个日常任务

作者 Kevin
2024年6月23日 14:24
Python以其简洁优雅著称,能够用最少的代码行数实现强大的功能。本文将通过展示Python如何以一行代码来解决常见的编程任务,从而体验Python的极简美学。通过这些实例,不仅能够学习到Python的基础知识,还能掌握一些高效编码的小技巧。

小试自定义GPT

作者 Liyun
2024年1月12日 09:09

最近不是在折腾LLM嘛,于是就试了两条路子:用openai的api,以及直接在openai的界面里面创建GPT。

前者没啥特别的,chatgpt的api做的很成熟了,from openai import OpenAI 之后直接在python里面调用几个现成的函数就好了。可选的参数其实也不多,主要就是prompt写的好一点就行。我的要求也不高,试了试基本满足。此外我还用到了微软 azure api,也很方便,两者一结合基本一个app就搓出来了,只是暂时还只能在命令行运行,没写前端ui罢了。

后者就麻烦了。我想着自己写前端ui还挺麻烦的,就想偷个懒直接在GPT里面弄弄看看行不。结果呢,现在这个版本实在是太挫了,只支持最最基本的action,虽然可以调用其他api,但还没研究出来怎么实现用户上传的文件扔到action api call里面。搜了搜他们的论坛也没啥结果,然后心累就到此为止了。

最后贴一下如何在openai 的GPT里面调用azure api。主要是api key那里实在是反用户直觉,我找了好久……一定要选 custom 然后把自定义的名字设为 Ocp-Apim-Subscription-Key 才可以。贴个图。

自定义 action -> authentication -> custom header name

当然azure api的文档做的也很差就是了,经常搜出来的是过时的文档,试一试都是404错误。哎,时间都花在这些琐碎的调试bug上了。

最后的结论是,在现在这个阶段,openai GPT的多模态做的还是太封闭,只适用于比较基础的交互需求,得等到后面允许自定义编程更丰富一些才可以。想做的稍稍复杂一点,写ui是逃不掉的了。web版还可以写个python+js凑和一下(flask这么轻量级的web开发框架真的是效率提升利器),app版xcode看了半天发现也是一等一的复杂……说好的ai改变程序开发呢?叹口气……

❌
❌