专栏首页机器人课程与技术ROS2机器人笔记20-08-18

ROS2机器人笔记20-08-18

仿真的小贴纸

如何用图形化界面而非代码在仿真环境中配置机器人模型?模型通常为刚体,弹性物体或者柔性物体仿真十分消耗资源!

建立urdf模型的最简单方法是在专用的CAD软件中建立模型,然后将其导入。使用如下教程即可:

如果不采用这种方式,使用xacro构建urdf,SDF如何???(URDF不支持封闭运动链,而SDF支持???)

在Gazebo中建立世界并不是那么困难。只需打开Gazebo,然后导入模型并将其放置在所需的位置,然后生成.world文件。

一般而言,只能使用传感器插件,而无法自定义虚拟传感器!仿真传感器和真实传感器的差异性也会体现在算法参数上。

紫外线消毒机器人

COVID-19大流行引起了人们对紫外线消毒的新兴趣。自1960年代以来,医院一直使用UV-C光,尤其是254nm范围内的UV-C对病人出院后的房间进行消毒。UV-C已显示出对多种病原体有效的功效。中和不同病原体所需的辐照度差异很大,细菌,尤其是像C.diff之类的“超级细菌”,需要最多的能量和时间。幸运的是,像流感和SARS-CoV-2这样的单链病毒所需的功率相对较小(减少2个对数,即杀灭率达到99%时约为6mJ /cm²)。

为了有效地消毒室内空间,例如酒店房间,仓库和学校,必须在空间中四处移动光源。这对于有效性和效率是必要的:避免阴影,并且因为光的强度随距离呈二次方降低。然而,由于UV-C光对人体有害,所以不可能有人将光源推动或携带穿过空间。这就是产生让机器人执行此任务的想法。

DDS

ROS1和ROS2之间的最大区别之一是基于插件的体系结构替换了单个中间件(roscore)。这使ROS2可以使用各种中间件(RMW)实现。目前,所有这些RMW实现都基于DDS。可以在ROS2设计文档中阅读所有有关详细信息 。

随着时间的流逝,支持RMW实现发生了变化,并引入了新的方案。当前是默认值FastRTPS(重命名为FastDDS,在Foxy发布之后)。最新的选项是CycloneDDS使用 Eclipse Cyclone DDS。Cyclone DDS最近获得了很多好评 。

RMW实现 由于ROS2仍处于积极开发中,因此在RMW实现之间进行选择仍然是一个挑战。FastDDS服务发现有一些问题。CycloneDDS才不到两年的历史,仍处于非常活跃的开发中,并且没有完整的功能,但具有很高的性能。 幸运的是,通过简单地设置RMW_IMPLEMENTATION环境变量,在RMW实现之间进行切换非常容易。 在实现之间切换时,请确保服务停止: ros2 daemon stop 调试问题 尽管FastDDS几乎是开箱即用的,但整个服务问题都困扰着设置/获取参数将RMW_IMPLEMENTATION设置为 rmw_cyclonedds_cpp。注意到服务发现并没有更好。然后我注意到在机器人上设置了RMW_IMPLEMTATION-拼写错误。现在一切都应该一切正常! 错误 在机器人上,发现效果很好,服务也很出色-但是笔记本电脑看不到一半或更多的节点。重新启动启动文件导致经常丢失不同的节点! 开始调试并发现了ddsperf工具。如果在MacOSX上使用ROS2,则需要阅读有关如何安装ddsperf的问题。 多个网络接口 配置指南指出,网络适配器的选择更喜欢非链接本地接口,但是显然在检测到以这种方式配置以太网接口时,某些事情使它陷入了困境。 解决方法是NetworkInterfaceAddress在 CYCLONEDDS_URI环境变量中设置一个: export CYCLONEDDS_URI='<CycloneDDS><Domain><General><NetworkInterfaceAddress>wlp2s0</NetworkInterfaceAddress></General></Domain></CycloneDDS>' 如果容易出现拼写错误,并且想要确保实际上正在运行预期的RMW接口,建议使用以下命令: ros2 doctor --report | grep middleware 几秒钟后,应该看到: middleware name    : rmw_cyclonedds_cpp 实际上在bashrc中设置了一个别名,以便which_rmw运行该命令。确定使用Cyclone DDS作为新的默认值后,还将RMW_IMPLEMENTATION和CYCLONEDDS_URI 设置添加到了机器人的bashrc中。 在解决配置问题后,CycloneDDS似乎是尝试过的少数RMW实现中最稳定的。实际上还没有对性能进行过正面测试。

在MacOSX上的ROS2

Blender FreeCAD Gazebo SDF URDF

双四元数

ros-$ROSDISTRO-dual-quaternions-ros



~~


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ROS2编程基础课程--中间件

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    zhangrelay
  • ROS(indigo)ABB机器人MoveIt例子

    版权声明:本文为zhangrelay原创文章,有错请轻拍,转载请注明,谢谢... ht...

    zhangrelay
  • 在Win10中使用Gazebo9+进行机器人仿真

    还有一些小伙伴反馈我博客翻译或者搬运过程有缺失,为了防止误导,尽力避免此类情况出现:

    zhangrelay
  • JVM笔记-HotSpot的算法细节实现

    迄今为止,所有收集器在根节点枚举这一步骤都是必须暂停用户线程的。即便是号称停顿时间可控、或者(几乎)不会发生停顿的 CMS、G1、ZGC 等收集器,枚举根节点时...

    WriteOnRead
  • Retrofit笔记 | 基本使用步骤

    UserMgrService service = retrofit.create(UserMgrService.class);

    凌川江雪
  • 【学习】R语言与机器学习学习笔记(2)决策树算法

    算法二:决策树算法 决策树定义 首先,我们来谈谈什么是决策树。我们还是以鸢尾花为例子来说明这个问题。 观察上图,我们判决鸢尾花的思...

    小莹莹
  • R中t()转置后为什么会变成字符型数据

    数值型数据全部变成了字符型,怎么回事?其实是因为cluster那一列数据并不是数值型,而是字符型。因为这一列代表某一群细胞,如cluster0.所以才会出现这个...

    生信编程日常
  • ElasticSearch(7.2.2)-es之批量导⼊数据

    cwl_java
  • Android解析WindowManager(三)Window的添加过程

    前言 在此前的系列文章中我们学习了WindowManager体系和Window的属性,这一篇我们接着来讲Window的添加过程。建议阅读此篇文章前先阅读本系列的...

    用户1269200
  • 使用sklearn随机森林算法实现手写数字识别

    随机森林(random forest)是2001年提出来同时支持数据的回归与分类预测算法,在具体了解随机森林算法之前,首先看一下决策树算法(Decision T...

    OpenCV学堂

扫码关注云+社区

领取腾讯云代金券