ROS2Foxy功能包不断完善,Gazebo新版Ignition Robotics功能也更加丰富!

这里参考GSoC 2020 Ignition gazebo:

(ROS2课程将更新为Foxy+Ignition)

旧版课程专栏:https://blog.csdn.net/zhangrelay/category_9327597.html



以下内容为机器翻译学习笔记


新增Ignition Gazebo演示

这些教程如下:

建立自己的机器人

使用SDF 1.7构建两轮机器人

移动机器人

本教程说明了如何使用键盘箭头移动上一教程中构建的机器人。我们使用了Diff Drive插件,Triggered Publisher插件和KeyPublisher插件。

SDF世界

本教程说明了如何使用SDF构建我们的世界,以及如何向其中添加模型。

传感器演示

本教程说明了如何向我们的机器人以及世界上的其他模型添加传感器。我们引入了三种不同的传感器:IMU传感器,接触传感器和激光雷达传感器。

ROS 2集成

本教程说明了如何使用ros_bridge将ROS 2与Ignition集成在一起

演员演示

本教程说明如何将演员添加到我们的世界以及如何创建脚本动画

光学触觉传感器插件

触觉传感器是一种测量信息的设备,这些信息来自与周围环境的物理交互,例如手指或皮肤。我们不再关注市场上可用的触觉传感器的特定品牌和型号并对其进行仿真,而是将我们的目标和工作转向实现一种特定的传感器技术,例如光学触觉传感器。这些传感器通常由光源,可变形表面,镜头和照相机组成。使它们非常受欢迎的方面之一是,您可以应用现有的计算机视觉算法,以便从该数据中提取信息。

本教程的上一个屏幕截图中所见,我们使用了接触传感器和深度摄像头来模拟这种行为。当对象与前者接触时,表面法线将根据后者返回的值进行计算。重要的是要注意,来自接触传感器的值当前并未用于进行任何计算,而只是用于可视化接触,以作为一种快速的方法来检查插件是否正常工作。由于时间不足,我们无法合并来自这两个不同传感器的信息,无法提供更实际的测量结果。

以下是显示插件如何与模拟中不同模型交互的中间工作。请注意,插件如何能够可视化其所指向的对象的表面法线:

该插件还为表面法线变化很大的对象提供了丰富的信息,例如下面的电钻。它当前通过一个主题输出表面法线,可以使用该主题来推断信息,例如最佳抓握,要触摸的对象的哪一部分,甚至可以尝试猜测传感器正在触摸的内容!

但是,最终的实现只输出接触表面内部的法线,因此必须像触摸传感器那样实际触摸物体。与之前的屏幕截图不同,在下图中,使用更简单的几何体显示法线,以降低消息传输和标记渲染成本,从而提高性能。

过程

由于Ignition没有可用的相关工作,因此这也是一个探索性项目,我们不得不尝试新事物,提出想法并迭代设计。我们留下了一些我们认为可行的想法,但最终没有成功,不幸的是某些细节无法完成。

为了交流工作的最新进展,即使需要时电子邮件和Slack总是在那儿,我们每周召开一次会议。我相信导师和学生之间的交流确实很流畅,这无疑使该项目实现了其最重要的目标。

结论

触觉传感器能够感知与环境的物理相互作用。该GSoC项目旨在实现使用深度相机和接触传感器模拟光学触觉传感器的第一步。该插件可以:

  • 测量接触物体的表面法线。
  • 在IgnitionGazebo中可视化它们。
  • 通过主题访问它们。
  • 使用分辨率,可视化等参数调整插件。
  • 通过服务打开和关闭插件。

在Linux,macOS和Windows上提供跨平台支持,从而使仿真更易于访问。

传感器数据可视化项目涉及到将一种新型的传感器可视化添加到点火渲染库中。该视觉图像用于渲染从模拟激光雷达传感器收集的数据。它扩展了凉亭中存在的LaserVisual的功能,并为其添加了新功能。Ogre1和Ogre2中都存在可视化的实现。

一个新功能被添加到视觉上,用户可以选择是否只想看到射向特定障碍物的光线。这意味着用户可以在视觉上看到机器人所感知到的环境的相关信息,并避免了由于可视化激光雷达数据而造成的混乱,这对机器人毫无用处。之所以这样做,是因为当传感器光线显示得太靠近时,用户很难理解数据。

除了原始的Triangle-Strips,还添加了新的视觉类型,包括Ray-Lines和Points。添加这些内容的目的是使用户可以根据自己的应用程序选择想要查看的视觉效果。点的添加还增加了可视化模拟中的点的能力。光线线和点的渲染和更新速度比“三角形条纹”视觉类型要快。

另外,已经以面向用户的平面正方形的形式创建了新材料。这已在Ogre1中实现,并且Ogre2实现正在进行中。该材料用于表示点。用户可以使用API​​为每个点设置独立的颜色。它与RViz中PointCloud视觉的平面正方形视觉类型相同。

开发的视觉效果与ig​​n-gazebo集成为可加载的GUI插件。用户可以从GUI中选择要显示的传感器消息并设置视觉属性。下图显示了该插件的简要指南:

演示版

以下GIF演示了Lidar Visual的实现和使用。

可视类型可以在“三角带”,“射线”和“点”之间进行更改,如下所示。该应用程序有助于可视化模拟中传感器看到的点。

以下GIF演示了用于可视化数据的主题更改。更改主题后,视觉对象的坐标系也将更改,并且视觉对象的原点设置类似于传感器的原点。

当激光雷达视觉系统安装在移动底座上时,其行为如下所示。取消选中“显示不击中射线”复选框将删除激光雷达中未检测到任何障碍物的数据视觉。结果,它使用户更容易看到传感器在其视场中检测到的障碍物而没有额外的混乱。

结论和未来计划

在项目期间,能够实现大多数目标。但是,仍然存在诸如将PointCloud添加到渲染库之类的拉伸目标。

我非常感谢社区提供的改进功能,解决错误或实施新功能的反馈,这些功能将使用户可以轻松使用插件或库。

项目概况

绘图可视化工具

因此用户可以可视化来自模拟的各种类型的数据,例如“ 模拟物理数据”和“ 传输网络数据”,因此用户可以在模拟过程中绘制实体的组成以及当前已发布的运输主题的运输消息及其嵌套字段。

绘制UI

与2个插件交互使用“绘图”工具:

  • 用于传输绘图的Topic Viewer插件
  • 用于物理数据绘图的组件检查器插件

开发插件

  • Ign-gazebo插件,用于物理数据绘图
  • Ign-gui插件,用于绘制UI和传输图
  • Ign-gui插件到模型运输主题

物理数据绘图

  • Ign-gazebo插件,可以访问模拟物理数据
  • 用户通过EntityTree和ComponentInspector插件拖动特定的组件元素,并将其拖放到绘图工具中

主题查看器插件

  • Topic Viewer插件是ign-gui插件,它列出了所有当前发布的主题并为每个主题的结构建模,因此用户可以访问其字段和嵌套字段。
  • 可绘图字段可拖动以在绘图工具中使用
  • 实时动态更新主题

运输绘图和UI

  • Transport Plotting插件是一个ign-gui插件,它使用点火运输库来处理运输图
  • 用户从“ 主题查看器”插件中拖动要绘制的主题字段,并将拖放到要绘制的绘图工具中
  • 用户可以为每个图表拥有许多图表和许多绘图元素(字段或组件)
  • 用户可以在运行时删除绘图元素
  • 用户可以在绘图视图上滚动缩放
  • 用户可以每个图形导出CSV格式

CSV导出

二次开发技术

  • C++
  • ign-gui / ign-gazebo/ ign-transport
  • Qt和QML
  • gtest用于单元测试

未来的工作

  • 支持重复字段绘制
  • 导出为PDF和SVG格式

结论

绘图工具是一种可视化工具,用于绘制模拟物理数据和传输网络数据,与Ignition Simulator中的Topic Viewer和Component Inspector插件一起使用。

关于该项目

RViz 是针对使用ROS的机器人的3D可视化工具,无可否认,它是每个ROS开发人员在其机器人开发过程中的关键组成部分。随着ROS2的最新发展以及Gazebo将其重构为模块化库(即Ign库),现在正是为RViz提供当之无愧的改造的绝佳时机。

链接到项目;https://github.com/ignitionrobotics/ign-rviz 13

ign-RViz是使用ign库(主要是ign-rendering和ign-gui)构建的。该应用程序继承了ign-gui库的材料设计和易于使用的用户界面,因此达到了现代应用程序的标准。所有插件都是使用GUI库提供的小部件框架开发的。Scene3D小部件用作由ign渲染库提供动力的主视口。渲染库提供了用于创建图形的统一API,同时为不同的渲染引擎提供了抽象。这与RViz的当前实现有所不同,后者使用自己的渲染抽象仅支持OGRE。通过使用点火库,维护变得更加容易,因为它可以确保将诸如错误修复或功能之类的所有更新从底层库传播到ignition-rviz。

可以通过显示类型或主题来加载插件。在上面的演示中,可以看到RobotModel及其TF。通过按主题加载插件,可以看到LaserScan数据。可以取消停靠,在所有插件的配置面板中移动以及更改其背景颜色以提高可见性。全局选项插件用于更改固定框架。

ign-rviz和显示插件系统的体系结构的详细说明可以在项目Wiki中找到:https://github.com/ignitionrobotics/ign-rviz/wiki

以下显示插件是为ign-rviz开发的:

显示插件

开发了以下显示插件

Name Description
Global Options Configure global options like changing fixed frame and scene background color.
 Axes Renders an axis at the origin of the target frame
 Image Displays Image received as sensor_msgs::msg::Image ROS message
 LaserScan Renders data from sensor_msgs::msg::LaserScan message as points in the world, drawn as points, rays and triangles
 Path Renders data from nav_msgs::msg::Path message as lines, arrows or axes
 PointStamped Renders data from geometry_msgs::msg::PointStamped message as spheres
 Polygon Renders data from geometry_msgs::msg::PolygonStamped message as lines
 Pose Renders data from geometry_msgs::msg::PoseStamped message as arrows or axes
 PoseArray Renders data from geometry_msgs::msg::PoseArray message as arrows or axes
 RobotModel RobotModelDisplay plugin renders robot model in the correct pose as defined by current TF transforms
 TF Displays the robot TF transform hierarchy

演示版

在这里,我们可以看到所有正在运行的可视化插件,它们的配置面板已正确拆分。可视化的数据为PoseArray(红色箭头),PoseStamped(像素),PointStamped(球体),PolygonStamped(球体),旋转青色环,Path(路径)为背面的绿线。

这是Turtlebot3的演示 1个航点模式下的模拟和Navigation2。摄像机的提要可以在左上方看到。可视化了RobotModel,LaserScan,机器人足迹为Polygon和机器人计划为Path。

结论和未来计划
在GSoC的学习过程中,我能够实现大部分目标,并且开发了一些常用的显示插件,但是还有一些重要的东西(如PointCloud和Costmap)尚不可用。除了增加对默认插件的支持之外,我还计划开发一些插件,例如机器人伸缩,绘图和原始主题数据显示。

ign-rviz将在不久的将来以二进制形式下载。直到您好奇的时候,您可以通过从源代码构建它来进行尝试。我非常感谢社区提供的任何反馈,并将解决所有出现的问题或错误。

我计划继续在社区中活跃起来,继续开发ign-rviz,同时为点火库和其他ROS程序包做出贡献。我要再次感谢我的导师@ahcorde以及Open Robotics的每个人都为我提供了这个难得的机会。这是一次很棒的学习经历,我期待继续与他们合作。


ROS2机器人笔记20-09-06相关推荐

  1. 【跃迁之路】【578天】程序员高效学习方法论探索系列(实验阶段335-2018.09.06)...

    [跃迁之路][578天]程序员高效学习方法论探索系列(实验阶段335-2018.09.06) @(跃迁之路)专栏 [跃迁之路]奖励金计划正式开始 从2018.7.1起,[跃迁之路]奖励金计划正式起航, ...

  2. 从腾讯朋友圈揭秘内部AI部门竞争关系,谁能像微信当年一样熬出头? By 微胖2017年11月10日 09:06 撰文 | 宇多田 在腾讯合作伙伴大会上,腾讯首席运营官任宇昕提出的「AI in All」

    从腾讯朋友圈揭秘内部AI部门竞争关系,谁能像微信当年一样熬出头? By 微胖2017年11月10日 09:06 撰文 | 宇多田 在腾讯合作伙伴大会上,腾讯首席运营官任宇昕提出的「AI in All」 ...

  3. 滴滴2016.09.06校招 在线笔试 - 2道编程题

    滴滴2016.09.06校招 在线笔试 - 2道编程题 1.连续子数组的最大和 题目描述 一个数组有N个元素,求连续子数组的最大和.例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3. ...

  4. 圆通速递:2022年1月快递产品收入36.19亿元 同比增长20.09%

    2月19日消息,圆通速递对外发布公告称,2022年1月快递产品收入36.19亿元,同比增长20.09%:业务完成量13.29亿票,同比增长4.84%.快递产品单票收入2.72元,同比增长14.55%. ...

  5. FD.io VPP 20.09版本正式发布:往期VPP文章回顾+下载地址+相关链接

    目录 下载RPM/DEB包 往期文章回顾与推荐 FD.io是一些项目和库的集合,基于DPDK并逐渐演化,支持在通用硬件平台上部署灵活可变的业务.FD.io为软件定义基础设施的开发者提供了一个通用平台, ...

  6. 服务器virsh不显示虚机,【openEuler 20.09】【虚拟化】virsh attach-interface热插rtl8139网卡后,虚拟机内部不显示,重启后才显示...

    [环境信息] Host: NAME="openEuler" VERSION="20.09" ID="openEuler" VERSION_I ...

  7. docker18.09.06 Centos安装教程

    一.安装准备 Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上 可以使用以下命令版本 uname -r 如果有旧版本则先删除 sudo yum remove ...

  8. 5500xt挖矿算力_(视频)静态计算 RTX 3080 的以太坊挖矿回本周期 白露矿业报告 (20.09.19)...

    知乎视频​www.zhihu.com 投资云算力,了解矿业知识,看白露矿业报告 文字稿如下: 各位观众老爷大家好,今天是 2020 年 9 月 19 日,欢迎收看今天的白露矿业报告,今天我把 IPad ...

  9. java 拦截器_Spring的春天来啦——百战Java课程更新(2019.09.06)

    百战程序员运营400天,课程突破10000节,周周有新课更新,保持行业领先,九大专业运营.注册人数突破70万人,超级VIP用户累计8358人.百战程序员,由50+专家.精英讲师组成课程研究院,根据市场 ...

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

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

最新文章

  1. 《Science》评选2017年十大科学突破,看看有哪些吧!
  2. leetcode算法题--最长公共子序列★
  3. python如何在循环中保存文件_Python中如何将爬取到的数据循环存入到csv文件中?...
  4. mssql sqlserver 不固定行转列数据(动态列)
  5. 32位系统是指地址_不起眼却很重要丨32位操作系统与64位操作系统详解(含查询教程)...
  6. POJ - 3624 (01背包问题)(动态规划-滚动数组)
  7. 冒泡排序算法详解之C语言版
  8. JavaWEB笔记 浏览器内核及分类
  9. css文本缩进两个字符,css如何设置首行缩进2个字符
  10. 如何防止亚马逊账号关联的一些建议值得卖家们收藏?
  11. 医保不用选也能报销的北京市医保定点专科和A类医院名单
  12. 深入浅出Linux操作系统搭建JavaEE环境(五)
  13. 渣基础:比照Hawstein学Cracking the coding interview(2)
  14. msbuild 语法_如何通过命令行 msbuild 编译项目
  15. 少儿编程教育政策大盘点!
  16. 如何在分割后保留分隔符?
  17. mysql查询不同老师所教不同课程_mysql数据库面试题(学生表_课程表_成绩表_教师表)...
  18. 阿里云ECS初始化及常用操作
  19. 防火墙的四项基本性能指标
  20. 众巢医学将运用ChatGPT提升患者管理服务能力和体验;美华国际探索ChatGPT开发在线人工智能健康咨询服务 | 美通企业日报...

热门文章

  1. Word:Excel表格复制到Word中超出边界
  2. 机械制图——常见的机件表达
  3. Java从键盘输入字符
  4. Android 开发:APN网络切换之CMNET
  5. 什么方法可以快速将文字转语音
  6. Java金典题目 -- 狼追兔子(环形)
  7. 金融工程的学习总结(截至2016年12月)
  8. CAD_随机三维纤维插件 圆柱体纤维
  9. Java初学者 定义水仙花类和判断闰年
  10. 11.18随堂测验:学习对象