使用机器人操作系统进行多机器人编程技术实践(ultiobotrogrammingia)极简版安装配置案例:httpsblogcsdnneth腾讯云开发者社区

ROS2机器人操作系统简介2021英文字幕版本

使用机器人操作系统ROS2和机器人中间件框架系统RMF进行多机器人系统集成,高层规划及其应用等。

上图所示机器人按规划路径进行物流运输或场地巡逻任务

引用:rmf_demo

专用名词:

机器人操作系统(ROS)是用于构建机器人应用程序的一组软件库和工具。从驱动程序到最新算法,再到强大的开发人员工具,ROS可以满足下一代机器人项目的需求,而且都是开源的。

自从ROS于2007年启动以来,机器人技术和ROS社区已发生了许多变化。 ROS 1,最初只是“ ROS”,开始是Willow Garage PR2机器人的开发环境。主要目标是为用户提供PR2进行新颖的研发项目所需的软件工具。同时,ROS 1开发团队知道PR2既不是世界上唯一的机器人,也不是最重要的机器人,因此开发团队也希望ROS 1对其他机器人也有用途。最初的重点是定义抽象级别(通常通过消息接口),该级别将允许许多软件在其他地方重用。

ROS 1满足了PR2案例的需求,并且在各种机器人上也得到广泛应用。其中包括类似于PR2的机器人,还包括各种尺寸的轮式机器人,腿足式的人形机器人,工业机械手臂,户外地面车辆(包括自动驾驶汽车),空中车辆,地面车辆等。 ROS 1的采用也发生了令人惊叹的转变,主要是最初关注者由学术研究界转向其以外的领域。基于ROS 1的产品已进入市场,包括制造生产机器人,农业机器人,商业清洁机器人等。政府机构也正在密切关注ROS在其现场系统中的使用;例如,美国国家航空航天局(NASA)有望在部署到国际空间站的Robonaut 2上运行ROS。

所有这些应用程序无疑以出乎意料的方式发展了ROS平台。尽管使用情况良好,但ROS 1团队相信开发人员可以通过直接应对新用例来更好地满足更广泛的ROS社区的需求。因此,ROS 2诞生了。

ROS 2项目的最初目标是适应不断变化的形势,利用ROS 1的优点并改善有问题的部件。但是,机器人开发者也希望保留ROS 1的存在,以继续工作并不受ROS 2的开发的影响。因此,ROS 2被构建为一组并行的软件包,可以与ROS 1并排安装并与它们互操作(例如,通过消息桥)。

在撰写本博文时,已经达到了第13个也是最后一个正式的ROS 1版本Noetic Ninjemys,并且是ROS 2的第一个LTS版本Foxy Fitzroy。

简要了解ROS 1 Noetic Ninjemys和ROS 2 Foxy Fitzroy,请参考如下博文:

在网络上可以找到大量且不断增长的ROS 2资源。一个很好的入门方式是浏览学习ROS 2的网页索引页面,以及后续博文中的ROS 2详解。祝学习ROS2之旅轻松愉快!

RMF的起源

想象一下,在这个我们生活的世界中,来自不同公司和制造商的机器人可以在同一设施中共存;优雅地共享重要资源,例如走廊,电梯(电梯),门和其他基础设施,以实现更高效的整体系统。想象一下,通过一种允许任何机器人可靠受控和安全的方式使用共享资源的方式集成到一起。想象一下,在共享走廊中没有机器人困境的世界。今天,使用称为RMF的惊艳系统可以实现这些想法。

如今,生产环境中的当前一代机器人能够提供服务,包括批量和单件流量交付,清洁,消毒,安全性,监控等等。这些多样化的用例很可能意味着针对每个任务的最佳机器人将来自不同的机器人提供商或系统集成商。这种现代的现实状况对于使用适当的通用软件框架来管理这些异构资源并确保有效地利用不同平台上的信息以提高整体系统效率至关重要。

如果没有针对整体高效的机器人系统的计划,那么最终用户在向单个系统或平台提供商承诺时可能会面临重大但隐藏的风险。隐藏的风险可能会迫使最终用户限制用户从该特定提供商那里选择将来的解决方案,以最大程度地降低运营风险并避免多余的集成成本。随着机器人部署范围的扩大和规模的扩大,这个问题更加严重,使客户感到除了留在当前供应商之外,没有其他好的选择。

除了与不同提供商进行扩展部署而增加的成本风险之外,共享资源(例如电梯,门口,走廊,网络带宽,充电器,运营中心屏幕“不动产”)和人力资源(例如IT人员)也存在内在冲突和维护技术人员。随着机器人规模的扩大,运营团队考虑管理大型的,异构的,多供应商的机器人环境变得更加麻烦。

这些问题陈述是RMF开发的基本动力。从历史上看,ROS的开发主要集中在单个机器人上或附近运行的软件。 RMF旨在在更高的抽象层上运行,以创建与建筑基础设施系统,企业服务,物联网设备和人机界面互操作的网络化机器人团队。

使用RMF使开发者的选择、设备和未来不再受限。

感谢新加坡政府为启动这个雄心勃勃的研发项目“开发标准化机器人中间件框架-RMF详细设计和通用服务,大规模虚拟测试场基础设施以及仿真建模”的愿景和支持。该项目得到卫生部和国家资源计划的支持博文表达的任何观点,发现和结论或建议均为RMF作者的观点,并不反映NR2PO和MOH的观点。

那什么是RMF?

RMF是在ROS 2之上构建的可重用,可伸缩的库和工具的集合,这些库和工具可实现任何类型的机器人系统的异构团队的互操作性。 RMF利用与基础设施,环境和自动化的标准化通信协议,在这些基础设施,环境和自动化中部署机器人来优化关键资源(即机器人,电梯,门,通道等)的使用。它通过资源分配和通过RMF核心防止共享资源之间的冲突为系统增加了智能,这将博文的后续内容中进行详细介绍。

RMF具有足够的灵活性和鲁棒性,几乎可以在任何通信层上运行,并且可以与任何数量的IOT设备集成。 RMF的体系结构设计为允许随着环境中自动化水平的提高而具有可伸缩性。系统和用户可以通过API和可自定义的用户界面通过多种方式与RMF进行交互。一旦部署到环境中,RMF将通过允许共享资源和最小化集成来节省成本。这就是机器人开发人员和机器人客户一直在寻找的东西。简而言之,RMF架构如下:

RMF之神奇魔法?

RMF设计的原则之一是尽可能简化和标准化消息传递。 在下图的RMF Core中,可以看到当前所有复杂的交互和协调,归纳为14条标准消息:

在博文的后续章节中,将更详细地探讨每个功能领域,但是此时还需要介绍一些对RMF开发和集成有用的实用程序。

此案例演示了RMF在各种环境中的功能。该库是与RMF进行工作和集成的最佳入门指南。

Traffic Editor是用于创建和注释在RMF中使用的平面图的GUI。通过流量编辑器,可以创建用于RMF的流量模式,并引入仿真模型来增强虚拟仿真环境。 .yaml文件可以轻松导出并在Gazebo中使用。

Free Fleet是一个开放源代码的机器人队列管理系统,适用于没有自己的队列管理器或者更愿意使用并为开源队列管理实用程序做出贡献的机器人开发人员。

机器人开发人员梦寐以求的SOSS! SOSS可以轻松地在各种消息格式和类型之间传递消息,包括ROS 1,ROS 2,WebSocket,REST,FiWare,DDS,OPC-UA等。

该可视化工具是基于rviz的rmf_core可视化工具和控制面板。它旨在成为RMF或RoMi-H开发人员的功能工具。

医疗保健机器人中间件(RoMi-H)是RMF的医疗保健特定实现。该仪表板是一个Web应用程序,可提供对RoMi-H系统的整体可视化和控制。与前面提到的时间表可视化程序相比,仪表板在设计上更加“友好操作员”。

创建并共享开放源代码和可自由分发的仿真设施,加速仿真工作。

RMF的当前版本为1.0.2。 针对ROS Eloquent,并且针对Ubuntu Bionic 18.04 LTS发行了Debian二进制软件包。

RMF利用ROS和Gazebo-Ignition生态系统。 作为RMF安装过程的第一步,将必须设置它们的库。 由于当前的二进制发行版是针对Ubuntu Bionic的,因此在继续安装之前,请确保匹配系统和版本。 如果安装了ROS 2和Gazebo,则可以直接跳至“设置源和RMF的安装”部分。

确保语言环境支持UTF-8。 如果处于最小环境中(例如docker容器),则语言环境可能像POSIX一样最小。 可以通过直接在终端中运行区域设置来检查区域设置。

使用以下设置进行测试。 如果使用的是其他受UTF-8支持的语言环境,那应该没问题。 如下是关于如何切换到美国英语UTF-8语言环境的示例:

然后将库添加到源列表中:

sudo sh -c 'echo "deb [arch=

如果未使用ros-eloquent-ros-base安装ROS 2,则需要以下软件包来运行RMF演示:

sudo apt-get install ros-eloquent-ros2cli ros-eloquent-ros2run ros-eloquent-ros2launch

还需要将库添加到源列表中:

其次,将库添加到apt源:

更新:

sudo apt-get update

安装:

sudo apt-get install ros-eloquent-ament-cmake-catch2 ros-eloquent-building-gazebo-plugins ros-eloquent-building-map-msgs ros-eloquent-building-map-tools ros-eloquent-rmf-cmake-uncrustify ros-eloquent-rmf-dispenser-msgs ros-eloquent-rmf-door-msgs ros-eloquent-rmf-fleet-adapter ros-eloquent-rmf-fleet-msgs ros-eloquent-rmf-lift-msgs ros-eloquent-rmf-task-msgs ros-eloquent-rmf-traffic-msgs ros-eloquent-rmf-traffic-ros2 ros-eloquent-rmf-traffic ros-eloquent-rmf-utils ros-eloquent-traffic-editor

从Debian软件包中安装提供的RMF演示:

sudo apt-get install ros-eloquent-demos

安装完所有内容后,可以选择下载3D模型,从而完成模拟效果。 可以针对任何可用的演示执行此操作。 这是关于如何为机场航站楼模型执行此操作的示例:

ros2 run building_map_tools model_downloader rmf_demo_maps -s airport_terminal

了解有关正在运行的模型下载器工具的更多信息:

ros2 run building_map_tools model_downloader -h

最后运行这个的演示。 在这种情况下,启动机场航站楼仿真:

全景

生成机器人,请运行以下命令:

现在应该可以在Gazebo看到带有机器人的机场航站楼了:

局部

其他功能截图,如rviz2:

使用如下命令,启动机器人巡逻:

ros2 run rmf_demo_tasks request_loop -s magni_n09 -f magni_s07 -r magni -n 1

过程截图如下:

恭喜多机器人编程已经完全入门啦!至此已经了解RMF的全部含义。后续将进行更加丰富细致的内容学习,一起加油吧。

THE END
0.通过人工智能和机器人学习Python多亏了机器人应用程序,现在学习新的编程语言变得可能且简单。Python 是当今常用的编程语言。由于机器人应用程序,Python 变得相对容易理解。人工智能和机器人已经存在半个多世纪,并且它们的突破正在快速增加。对人工智能的需求空前高涨,如果您有兴趣了解更多关于人工智能和机器人技术的知识,那么您来对地方了。人工智能和机器jvzquC41yy}/lrfpuj{/exr1r16189f3h3;48<
1.工业机器人习题答案判断题选择题38.机器人编程语言中,撇号‘的注释功能只在当行起作用。(√) 39.数据只能用常数来表示。(×) 40.数据只能用变量来表示。(×) 41.数据可以用常数或变量来表示。(√) 42.变量名为M1的数值型变量必须先通过Def语句定义后才能引用。(×) 43.变量名为M1的数值型变量不需要定义,可以直接引用。(√) 44.变量名jvzquC41o0972mteu0tfv8iqe1<75963:::/j}rn