找回密码
 立即注册
查看: 231|回复: 0

ROS 2与Unity合作提升自主机器人性能

[复制链接]
发表于 2023-2-11 15:07 | 显示全部楼层 |阅读模式
Unity在新版本中添加了ROS 2的官方支持,其强大的框架,加上模拟,将支持无数全新用例。


机器人操作系统(ROS)是从2007年开始开发机器人应用程序的流行框架。尽管最初是为了加速机器人研究而设计的,但它很快在工业和商业机器人中被广泛采用。ROS 2建立在ROS可靠框架的基础上,同时改进了对现代应用程序的支持,如多机器人系统、实时系统和生产环境。Unity目前已经将其对ROS生态系统的官方支持扩展到ROS 2。





现代机器人技术正在将其重点转向“自主性”,即研究和开发能够在没有人类开发者定义的严格规则的情况下做出决策的算法,而模拟算法则是通过实现比现实世界测试更大的灵活性和更快的实验时间来实现这一转变。在本篇文章中将演示如何模拟由Unity和ROS 2创建的自主移动机器人(AMR)的同时定位和映射(SLAM)以及导航功能。

ROS 2为现代机器人技术提供动力

虽然ROS仍然是机器人原型开发的优秀框架,但它已经接近生命周期的尽头,并且缺少一些在机器人系统中实现超越原型,全面生产和部署所必需的功能。ROS 2的技术路线图由行业专家委员会定义了明确的原则,以确保将ROS 2打造成为服务机器人最终用户的合适框架。ROS 2支持更多的操作系统和通信协议,并且设计得比ROS分类更加精确。

自主模拟供电

ROS 2的许多新兴用例都侧重于自动化。引入自主性意味着机器人做出的决策以及这些决策的结果不完全可以仅使用状态机和一组数学公式来进行预测,就像它们可能在许多工业机器人的案例中一样。与工业机器人相比,自主机器人的操作环境呈指数级增长。它所遇到的输入的排列远远超过了在受控的实验室环境中所能复制的水平。为了完全验证自主机器人的行为符合制造商的预期,制造商们也可以在机器人上进行编辑。在以Unity创建的模拟世界中,时间变得毫无意义,因此制造商们可以根据他们的需要对机器人进行:适当强度的模拟学习。

如果在模拟中期望机器人能够感知周边环境,那么该模拟必须在不对环境模拟拓扑和物理精度方面做出妥协的情况下实现对机器人身上的传感器进行精确建模才能实现。如果该环境中有其他干扰,即人或其他机器人,则模拟过程必须能够实现代理行为的建模,同时仍然保持其传感器模拟、拓扑展示和物理建模的准确性。为了让机器人在所有可能遇到的情况下都能充分得到锻炼,这个模拟需要运行很多很多次。这就意味着,要实现自主机器人模拟过程就需要工业机器人模拟不常用到的四个特点:灵活性、可扩展性、可量测性和保真度。而Unity正好位于所有这些需求的交叉点,目前Unity平台中已经包含了更多的功能来更好的支持自主机器人的开发。

通过Unity的Robotics软件包,用户将可以访问已经完成构建的接口,使与ROS或ROS 2的通信变得更加容易。用户将能够直接从Unity的URDF Importer导入带有机器人配置的URDF文件,并使用Unity高质量、高效的渲染管道和高性能、高精确度的物理模拟来训练他们的机器人。通过Unity的资产商店,用户可以浏览各种额外的预制环境和道具,以帮助他们为机器人的特定环境和任务建模。只需点击几下鼠标,模拟就可以构建并部署到任何主流操作系统上,如Windows 10、Mac OS和Linux等。通过使用C#脚本、Bolt可视化脚本或Unity资产库中可用的许多脚本和实用工具包,用户可以继续自定义特定模拟的功能,以适配特定的用例。

一键式ROS 2支持

事实上将Unity项目移动到ROS 2很简单。在ROS-TCP-Connector包中,Unity添加了一个下拉菜单,允许用户在ROS和ROS 2集成之间切换。更改协议后,Unity将根据用户选择的消息定义和序列化协议自动重新编译包。用户只需在自己的项目中进行这种更改,或者选择示例存储库中的Robotics-Nav2-SLAM,即可完成测试。





上图中的示例项目演示了如何使用Unity来模拟在ROS 2中运行的导航系统。导航的概念很简单,在自主机器人模拟的内容中变化不大。导航算法旨在找到一条直通下一步流程的道路。然而,要从我在什么地方到我要去什么地方,必须首先做SLAM——同时定位和制图。SLAM描述了一组算法,用来回答“我现在在哪里,我去过哪里?”作为感官和大脑之间处理管道的固有部分,人类一直在执行SLAM。对于自主机器人来说,执行精确的SLAM对于大多数现实环境来说仍然是一个具有挑战性的命题。一个自主移动机器人到底需要什么,才能让它始终知道自己在哪里,相对于它曾经去过的任何地方,这仍然是一个活跃的研究领域。对于给定的用例,真正能够回答这个问题的唯一方法就是进行多次模拟试验(对于传感器、算法等)。

在示例中,我们会发现这是一个简单的仓库环境,一个带有模拟雷达和电机控制器的Turtlebot 3移动机器人的完全铰接模型,以及一个用于构建图像的Dockerfile,该图像包含模拟练习Nav2和slam_toolbox堆栈所需的所有ROS 2依赖关系。





左图:在Unity中生成并发送的ROS 2消息的RViz显示。右图:TurtleBot 3在Unity中执行SLAM和自主导航。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 08:41 , Processed in 0.091288 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表