轻量级开源ROS 的机器人设备(一)
一、提要
计算设备的持续发展,尤其是嵌入式系统,引入了增强机器人软件的新机会。本论文的目标是开发一种快速原型机器人通信可以在廉价的嵌入式系统上运行的框架,同时仍然具有本机与现有广泛使用的高级框架兼容,通常运行在功能强大的计算机上。
我们创建了 µROSnode,这是一个开源通信框架,具有小型代码和内存占用,能够在最新的高级微控制器上运行,并且与流行的 ROS 机器人框架具有原生兼容性,它遵循发布/订阅方法。开发人员,经常习惯到现在的 ROS,依然可以为它写高级软件,用不平凡的能够直接连接到运行µROSnode 的硬件模块。该框架是用 ANSI C89 编写的,几乎所有编译器都支持针对嵌入式系统,并且可以很容易地与其他系统集成常见的编程语言。代码库被划分为特定用途的模块并广泛记录,以提高易用性和维护。为了协助用户开发基于 µROSnode 的软件,我们开发了代码生成器和静态堆栈分析工具。我们执行了一些简单的基准测试来确定最大传输和具有可变大小消息的主题的接收吞吐量,运行在Raspberry Pi 和一个 STM32F407 微控制器(ARM-CM4 内核)。双方
平台每秒可以达到数千条消息如果消息相当小或即时处理,则无需太多努力。
我们还测量了 ROS 对程序和工作记忆的使用情况turtlesim 克隆,它很容易适应 STM32F407 的严格资源限制。一个现有的机器人,其硬件/软件架构是围绕一个CAN 总线,通过廉价的 CAN-to-Ethernet 连接到 ROS在 STM32F407 上运行 µROSnode 的网关。
二、概括
计算设备的不断发展,尤其是嵌入式系统,为改进机器人软件带来了新的机会。本论文的目的是开发一个机器人通信框架快速原型设计,可以在廉价的嵌入式系统上工作,保持与流行的现有框架之一的本机兼容性高级,通常在高级计算机上运行。我们创建了 µROSnode,一个开源通信框架内存占用小,可在最新的高级微控制器上运行,并与流行的 ROS 框架原生兼容,遵循发布/订阅方法。开发人员,现在经常习惯于到ROS系统,可以继续为它开发软件,用不直接与功能硬件模块连接的微不足道的可能性通过 µROSnode
该框架是用 ANSI C89 编写的,几乎所有的都支持嵌入式系统的编译器,可以轻松集成来自其他编程语言。代码分为模块特定且广泛记录的任务,以提高易用性维护。为了帮助用户开发基于
µROSnode,我们开发了一个代码生成器和工具静态堆栈分析。
我们做了简单的基准测试来确定单个主题的最大传输和接收容量,按大小发送消息变量,在 Raspberry Pi 和 STM32F407 微控制器(ARM CM4 内核)上。两个平台都达到了容量每秒数千条消息,无需任何特别的努力,以防万一小消息或即时处理。
我们还测量了项目中的就业情况和中心记忆ROS的turtlesim的克隆,很容易遵守严格的限制
STM32F407 的。一个现有的机器人,其硬件/软件架构是围绕CAN 总线,通过 CAN-to-Ethernet 网关连接到 ROS其中 µROSnode 在 STM32F407 上运行。
三、系统介绍
机器人研究带来了高度的创新。许多新的想法未来的机器人产品每年都在构思,针对广泛的
领域,并且需要多学科技能。因此,研究人员需要快速构建和评估新想法,无需花费太多时间
组成整个机器人的每个子系统的开发。
机器人由通常属于一组标准的机械、电气和软件组件的部件组成。虽然机电一体化部件已经
可长期使用,从而提供完善的接口,正在进行的计算设备的发展,尤其是嵌入式系统,引入了
增强机器人软件的新机会。
提出了几个软件框架来构建机器人通信系统、人工智能、运动控制等,协助研究人员在机器人软件的快速发展中。
本论文的目标是开发一种快速原型机器人通信可以在廉价的嵌入式系统上运行的框架,同时仍然具有本机与现有广泛使用的高级框架的兼容性,通常在功能强大的计算机上运行。这将允许开发低成本硬件模块能够与最先进的高级框架之一进行通信,以增强快速原型开发周期低水平的一面。
我们创建了 µROSnode,这是一个开源通信框架,具有小型代码和内存占用,能够在最新的微控制器上运行,以及与流行的 ROS 机器人框架具有原生兼容性。这框架是用 ANSI C89 编写的,几乎所有的编译器都支持针对嵌入式系统,并且可以很容易地与其他系统集成常见的编程语言。代码被划分为特定目的模块和广泛的文档,以提高易用性和维护性。
BSD 许可证的选择使其成为自由软件,任何人都可以修改并可用于商业产品。代码生成器和静态堆栈分析工具协助开发用户应用程序,使重复减轻了编码,并在资源受限的平台上使用了内存受到控制。一组基准测试证明了它在低成本嵌入式系统,以及真实机器人的演示项目很容易开发。
我们首先分析了机器人领域对快速原型制作的要求。最直观的方法是将一些现成的零件组装在一起,然后对它们应用高级行为。虽然机电一体化零件经常共享一个大致通用的界面,机器人软件仍在大力发展。然而,有一些被广泛接受的软件框架可以帮助机器人软件的快速发展。ROS [22] 是当今最流行的框架,提供了一个巨大的存储库预制软件包,支持高性能 (C++) 和高级/脚本(Python、Lisp)语言;通过 XML-RPC 进行通信,TCP(TCPROS)和UDP(UDPROS);一个自动编译工具链通过严格的文件系统结构;许多其他机器人的兼容性包装器构架。
Orocos [4] 遵循严格的软件工程规则和开发周期,并且针对实时机器人;它的运行时架构是基于 CORBA 的。
LCM [12] 是一个轻量级的高性能系统,用于通过 UDP 进行进程间的低延迟通信。R2P [2] 是用于构建机器人电子设备的混合硬件/软件框架小而便宜的硬件模块,通过强大的通信CAN 总线,并支持硬实时应用。
最先进的提供的框架要么非常擅长软件,要么通信或硬件级别,但没有框架可以帮助在将所有这些混合在一起。此外,高级机器人软件通常在相当强大的计算机上运行,而硬件是驱动的通过工业处理器或微控制器,它们无法管理巨大的计算负载。
既然如此,我们概述了我们的研究策略,以开发一个框架可用于将高级机器人软件与硬件连接起来。这框架应该占用空间小,架构简单,这样它就可以适合当今的微控制器。由于大多数嵌入式系统不拥有与通用计算机一样先进的编译器工具链支持,或工作站做,编程语言的选择是有限的。有仅对针对嵌入式系统架构的 C 和 C++ 的成熟支持,而其他语言是实验性的或仅与少数平台兼容。
为了获得最大的兼容性和性能,我们选择了 ANSI C (a.k.a ISOC89)。与 C++ 相比,它有一些限制,但编译器支持仍然是成熟的黑莓;所有 C89 功能都可用,而一些 C++ 功能(例如,RTTI 和异常)必须在资源受限的平台上禁用。
但是,仍然可以为 C++ 编写包装器,甚至为其他更高级的语言(Python、Java、C#等)。
由于 ROS 是开发高级机器人应用程序最广泛接受的框架,因此我们选择开发轻量级通信框架,µROSnode,它对 ROS 协议具有原生支持,并且可以甚至可以在基于最新微控制器的廉价嵌入式系统上运行。这用户,通常是如今习惯于 ROS 的机器人研究人员,仍然可以编写软件,具有直接与硬件接口的重要功能通过 IP 网络协议(例如,通过以太网)连接的模块。
为了协助用户开发基于 µROSnode 的软件,我们还开发了代码生成器和静态堆栈分析工具。编码生成器还创建所需的主题和服务处理函数存根作为所涉及数据类型的(取消)编组函数。堆栈分析器是在开发应用程序时有助于控制堆栈使用内存受限的平台,例如分配给主题的堆栈大小和服务处理程序线程池。
然后,我们对我们的工作进行了定量和定性分析,以证明它的有效性。目标平台是一个以太网板,由STM32F407 微控制器(ARM-CM4 内核),资源紧张受限,以及 Raspberry Pi 模型 B(ARM-11 内核),这是一种流行的极低成本的嵌入式计算机。
对于定量分析,我们执行了一些简单的基准测试来确定我的可变大小的最大传输和接收吞吐量话题。这两个平台每秒都可以达到数千条消息如果消息很小(小于 500 B,常见对于简单的传感器)或可以即时处理。缓冲大消息(超过 1 kB)时,整体性能急剧下降,而不是由于我们的框架本身,但由于两者的预期限制目标处理器和 100 Mb/s 以太网链路。
在第一块板上,我们还测量了程序和工作的使用情况ROS turtlesim 克隆的内存。结果证明,一个功能齐全的µROSnode 实现对程序内存的影响相当小,使用优化编译时小于 40 kB; XML-RPCTCPROS 线程池在最坏的情况,考虑到此类协议的复杂性,这是合理的和他们的管理。
定性分析包括开发基于 µROSnode现实生活机器人的固件,全向三轮车 Triskar2,它通过与某些通信的 CAN 到以太网网关进行控制R2P 板。感谢代码生成器、文档齐全的 API 和简单的软件架构,开发不需要太多努力,事实上,整个固件是由一个不到一周的时间编写和测试的单系统。
正如实验结果所证明的,µROSnode 拟合了高级和低级机器人软件框架。它足够轻巧在具有良好性能的现代微控制器上运行基本任务和低内存要求。它的开发周期通过简单的软件架构、开发工具的帮助和广泛的 API文档。与 ROS 的原生兼容性确保了其在以下情况下的有效性用相当便宜的机器人组件构建机器人原型µROS 节点。
未来的工作可能包括 C++ 支持,通过围绕 C 编写包装器实现,或作为独立的 C++ 版本。可以添加 UDPROS低延迟应用和无线连接效率。现有产品可以通过构建专有的 ROS 硬件适配器使 ROS 做好准备运行 µROSnode,或者编写一个自定义的基于 µROSnode 的固件,如果产品已经具备以太网或 Wi-Fi 功能。 µROSnode 可用于廉价的嵌入式系统,可用于低成本的教育或与 ROS 相关的娱乐产品。
(未完待续)
米兰大学资料:
2013_04_Zoppi.PDF (polimi.it)