关键词:
ROS
嵌入式系统
分布式通信
低成本
摘要:
机器人行业近年来迅猛发展,但机器人产品开发周期较长,与市场对机器人的需求产生了矛盾。机器人操作系统ROS(Robot Operating System)以其实现代码的模块化,提高代码复用率,大大缩短了机器人开发周期的特点,在机器人行业逐渐占据重要地位。ROS是基于Linux内核的,所以对硬件性能有较高要求,低端的低成本硬件平台性能不足以运行Linux也就不支持ROS,因此难以整合到ROS的分布式通信系统之中。本文就是以此为出发点,设计和实现了一个基于STM32的低成本低功耗的兼容ROS通信标准的嵌入式实时机器人通信系统。该系统通过兼容ROS的发布/订阅功能,无缝地整合到ROS的分布式通信系统之中。而且该系统为应用的开发者预留了形式上类似于ROS的开发接口,便于ROS应用开发者快速上手。为了对ROS通信标准实现兼容,本文工作是建立在对ROS工作机制和实现细节充分分析的基础上,对该系统自底向上逐层次设计和实现的。硬件平台选用了低成本低功耗的STM32微控制器;操作系统选择低端嵌入式平台广泛使用的Free RTOS,在考虑到硬件性能的同时保证了系统的实时性;通信协议栈选用LWIP,功能强大且占用资源少。在STM32上移植好Free RTOS和LWIP的基础上,编写兼容ROS的消息中间件以实现对ROS的兼容。考虑到中间件的效率和稳定性,采用Free RTOS消息队列对中间件各部分进行解耦,实现异步;考虑到系统对消息的处理能力和资源利用率,将中间件设计为一个多任务模型实现并发;基于该系统运行完全是由消息驱动这一特点,采用回调机制对消息进行处理。之后对中间件的实现细节进行封装,为应用开发者预留类ROS API。最后基于预留的API编写了两个Demo用于验证该系统功能和测试该系统性能。功能测试中,两个Demo分别实现ROS消息的发布和订阅,并实现了与上位机的ROS通信;非功能测试采用Free RTOS的调试API和专用的嵌入式系统测试工具Tracealyzer,详细测试该系统运行中的堆栈使用和任务调度情况,证明该系统的稳定性,通过测试工具的时间戳对系统实时性进行测试,系统对消息的处理时间在十微秒级,能够满足实时性要求。综上,该系统为低端嵌入式设备提供了一种无缝融入ROS分布式通信系统的解决方案,在有低成本低功耗要求的机器人开发场景下具有很高的实用价值。