ROS发展神速,必须天天学习,否则落后太多。

具体参考链接:https://discourse.ros.org/t/new-robust-pre-trained-semantic-segmentation-models-cvpr-20/15607

具体参考链接:https://discourse.ros.org/t/quadruped-robot-controller/15625

具体参考链接:https://ubuntu.com/blog/simulate-the-turtlebot3

具体参考链接:https://github.com/aws-samples/aws-robomaker-sample-application-pr2-hospital


~如下为机器翻译~


2020年使用ROS2需要做的五件事

在过去的几个月中,我一直在使用ROS2。正如我之前提到的,似乎没有太多运行ROS2的真正机器人。我们有一个鸡到蛋的问题,其中工具尚未完全为真正的机器人所用,但是直到人们开始在真正的机器人上使用ROS2为止,没人知道真正的痛点。

在ROS2中可以完成很多事情。但是实现所有这些的时间有限-因此,我们需要关注那些使机器人及其开发人员能够“生存”的过程。

我经常被问到ROS2是否已准备就绪。我很长一段时间的回答是“不”。此时,我将其升级为“也许取决于您在做什么”。这篇文章描述了我认为对大多数机器人专家来说答案是“好”的五件事。我实际上希望这个职位的年龄很差,并且所有这些事情都会在ROS2中发生。

RVIZ,rcl2cli的自动QoS

服务质量(QoS)可能是ROS1和ROS2之间最大的变化-也是我所知最多的问题。ROS2 Foxy版本向命令添加了一个 --verbose选项,ros2 topic info这是朝正确方向迈出的重要一步。这使您可以快速诊断发布者和订阅者何时使用不兼容的QoS。

rosbag2在ROS2 Foxy中有了巨大的升级:它会自动确定服务质量(QoS)的正确设置,以便它始终连接到您要记录的发布者(请注意:如果多个发布者正在使用不同的QoS发布到同一个主题它可能不起作用-但实际上,是谁干的?)。

现在,我们需要RVIZ2和命令行实用程序(CLI)中的该功能。这些是调试工具,因此它们需要能够在大多数情况下“正常工作”。

由于大多数时候您都使用RVIZ2连接到传感器数据,该数据通常以非默认QoS(传感器数据配置文件)发布,因此,RVIZ在所有内容上都使用默认QoS(与传感器不兼容)绝对是傻瓜个人资料)。 默认情况下,即使是像锁定主题这样简单的事情也将不起作用。

这不是一个容易的问题。这将涉及对RVIZ的重大更改以及对较低级别的软件包(如)的更改message_filters,但是我敢肯定,这是一个最大的,物尽其用的改进,它将使ROS2更适合于机器人开发人员。

文献资料

好的,我听起来像是一个破记录(或者您8岁的移动操纵器上吱吱作响的脚轮),但这确实很重要。

我不仅在这里谈论缺少教程。在2011-2014年代(当社区经历了巨大的增长时),ROS使之成为新开发者的福音所在,其中之一就是非常精美且最新的Wiki。如果您想查找有关软件包的信息,可以转到wiki.ros.org/package_name-文档就在那里(或者如果不是,您有个很好的主意,认为该软件包尚未准备就绪)时间)。使用ROS2,我们还没有一个集中的文档记录场所-我认为这阻碍了社区的发展。

还有“用户文档”的问题。假设专业的编程背景(几乎比ROS1文档还要多)编写ROS2的几乎所有内容。阅读源代码并不是您应该学习如何为激光扫描仪运行ROS驱动程序的方式

建立社区非常重要。修复错误的最佳方法是找到需要修复的开发人员。我只使用了ROS2几个月的时间-那时我已经修复了多个ROS2软件包中的六个错误,甚至还维护了urg_node和相关软件包的ROS2端口 。

订户连接回调

现在,我们将进入一个超级技术问题-但影响是巨大的-特别是对于那些进行感知的人(通常来说,这是机器人技术的很大一部分)。在ROS1中创建发布者时,您可以注册一个回调,只要订阅者连接或断开连接,该回调便会被调用。ROS2中尚不存在此功能,但我认为它对于真正的机器人系统至关重要。原因如下:

机器人可以生成大量传感器数据-特别是在将处理管道添加到混合中时。有时,您可能需要具有颜色和深度信息的高分辨率点云。有时您需要低分辨率的无色点云。当机器人系统执行多个任务时,尤其如此。例如,假设有一个既可移动又可操纵的机器人-用于导航环境,它需要高帧速,低分辨率的点云来避免碰撞。当移动操纵器到达目的地时,它希望切换到高分辨率点云来决定要抓取什么。

有时,您实际上无法发布所有可能的数据流,因为它会使硬件不堪重负(例如,如果要同时从大多数RGBD传感器提取深度,颜色和IR,则会使USB总线饱和)。

在ROS1中,您可以创建“惰性发布者”,以便这些密集型数据类型的创建者仅在有人监听时才创建和发布数据。连接回调将通知他们有人在听。在各种驱动程序以及image_proc和 depth_image_proc>程序包中缺少懒惰的发布者是构建高性能感知系统的真正挑战。当人们问我“ ROS2准备好了吗?”时,我最近的第一个问题是“您在做些什么?

需要明确的是,在某些情况下有一些解决方法。如果您要自己创建发布者,则可以:

  • 创建一个循环,以“轮询”是否有订阅者(使用get_subscription_count),就像我现在在openni2_camera软件包中所做的那样。
  • 使用参数动态重新配置正在运行的内容。尽管这在某些情况下可能行得通(甚至可能是某些用例的首选解决方案),但它可能导致系统更脆弱。
  • 通过对给定机械手的确切需求进行硬编码,重新构造系统,永远不需要懒惰的发布者。尽管其中一些可能会在更高的生产环境中发生,但它并不适合于代码重用和共享,而这正是ROS1的主要卖点之一。

请注意,我说,“如果您要自己创建发布器”。由于缺少订户连接回调,ROS1中大量依赖于其ROS2端口被破坏或损坏的软件包:

  • message_filters
  • image_transport
  • image_proc
  • depth_image_proc

相关答案.ros.org:

  • 订阅匹配中的ROS2发布者回调

开发人员参与

注意:在撰写这篇文章的那个月,已经回答了许多问题,所以我们已经到了!

我记得人们在开玩笑说ROS Answers的名字是错误的,因为那里没有答案,只有问题。实际上,这不是真的-除非您搜索 ROS2标签。

那里有很多非常好的问题。例如,文档中没有的东西,可能与大量用户有关。以下是一些示例:

  • rmw_serialize和反序列化线程安全吗?
  • 如何退订主题?
  • 为什么要在Python中使用destory_node
  • set(node_plugins)实际做什么?

ROS2开发人员,请注意:我们在该系统中拥有许多出色的功能,请帮助您的用户学习如何实际使用它们-也许他们甚至可以帮助您做出贡献!

您在ROS2上的机器人

可能还藏有许多其他错误/问题/等。您的机器人可能与我的机器人不完全相同-用例将有所不同。我们需要更多运行ROS2的机器人来挖掘事物。好消息是:您可以在同一系统上安装ROS1和ROS2,并轻松地来回切换。


ROS2机器人笔记20-08-02相关推荐

  1. scala报错20/08/31 23:48:40 WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, 192.168.28.94, exec

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  2. YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.r

    YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.rep ...

  3. 在Ubuntu 18.04上用源码安装GVM 20.08

    写在前面 OpenVAS是为数不多的开源漏洞扫描工具之一.如果不是最好的,那也一定是前三名.后来,改名为GVM,并且以发行的年月作为版本号.到文章发表时,最新版是GVM 20.08,发行于2020年8 ...

  4. Kali Linux安装GVM 20.08(前OpenVas)

    Kali Linux安装GVM 20.8(前OpenVas) Kali Linux安装GVM 20.08(前OpenVas) 因为OpenVas此后正式变更为GVM后,我决定重新安装GVM,最新版本2 ...

  5. http://southpeak.github.io/blog/2014/08/02/reactiv

    2019独角兽企业重金招聘Python工程师标准>>> http://southpeak.github.io/blog/2014/08/02/reactivecocoazhi-nan ...

  6. VUE学习:vue基础20————动画02:动画

    提示: VUE学习:vue基础20----动画01:过渡 VUE学习:vue基础20----动画02:动画 前言 动画 动画 使用动画完成过渡效果 第三方动画库的使用 使用第三方库: 钩子函数 前言 ...

  7. [Leetcode] 面试题 08.02. 迷路的机器人

    [面试题 08.02. 迷路的机器人]   设想有个机器人坐在一个网格的左上角,网格 r 行 c 列.机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物).设计一种算法,寻找机器人从左上角 ...

  8. 时间:2014年3月27日20:08:01网站建表实战与优化意识

    建表: SNS社交网站: 会员表:member Mysql中没有布尔型,相当于tinyint类型 false 就是0 其他都是true 大小 字节 列名称 列类型 默认值 是否主键 4 编号id in ...

  9. ROS2机器人笔记20-12-04

    ROS2开发和推广的速度比预想要快很多,之前在博文: 从2050回顾2020,职业规划与技术路径(节选) 提及2020是商用机器人操作系统普及元年,本以为是刚刚开始,结果已经是遍地开花,日新月异已经不 ...

  10. ROS2机器人笔记20-10-03

    如果在自定义环境中,需要桥接ROS1和ROS2,通常不会很顺利,系统默认方式支持不佳,可以参考如下: 链接:https://www.allisonthackston.com/articles/brid ...

最新文章

  1. Oracle技术之和分区表相关的一点总结(三)
  2. Java实现内嵌浏览器
  3. java web.xml 监听器_十:JavaWeb中的监听器(一)
  4. 通过正则把文本里的链接加上a标签
  5. linux查看docker使用率,Linux系统非Docker环境如何限制CPU使用率
  6. 「 Modbus-RTU报文解析」解析03、06、10功能码报文示例
  7. OpenFOAM算例报错,浮点溢出错误,Floating point exception【汇总】
  8. ICPC 南昌现场赛 K:Tree(dsu on tree + 动态开点线段树)
  9. uni-app运行编译报错
  10. 北大青鸟消防设备类型编码_探测器该如何编码?即报警区域、探测区域的真正用途...
  11. Android -- I/O CALL SMS Layout
  12. element-ui 源码学习
  13. 分类与回归机器学习模型的评价指标
  14. Libiconv裁剪
  15. H3C 单路径网络中环路产生过程(3)
  16. 关于关系型数据库锁机制的理解
  17. 【3ds Max】FractureVoronoi碎裂插件生成破碎物体
  18. 【Arduino】一天入门Arduino语言 教程
  19. 云服务器超级鸟,超级鸟的自述_A3_新浪游戏_新浪网
  20. 爬虫 - 提高爬虫效率的方法

热门文章

  1. 使用yx-tiny命令行工具进行图片压缩
  2. 华为手机wifi不显示连接到服务器,华为手机无线网已经连接但不能用怎么办
  3. 金融分析:图形可视化plotly绘图思路—多子图教程
  4. 【微信小程序】组件之页面布局
  5. 禅意花园网页设计_CSS教程:15.1 “禅意花园”页面HTML结构分析
  6. 工程伦理2021年春季学期线上课程习题全部解答
  7. openni2结构简介
  8. STM32 中断向量表的位置 、重定向
  9. 【云原生 · Kubernetes】部署kube-apiserver集群
  10. SQL Server—T-SQL编程