HRMRP(Hybrid Real-time Mobile Robot Platform,混合实时移动机器人平台)是笔者在2012年和实验室的小伙伴们一起从零开始设计、开发的一款机器人平台,其中大部分扩展电路、驱动和ROS相关的底层功能都是我们自己开发。该机器人平台具有软硬件可编程、灵活性强、模块化、易扩展、实时性强等特点,机器人的整体结构如下图所示。
HRMRP具备丰富的传感器和执行器,在该平台的基础上,可以现了机器人SLAM、自主导航、人脸识别、机械臂控制等功能。
总体架构设计
HRMRP的总体架构如下图所示。
1. 硬件层
(1)机械平台
HRMRP主体结构为铝合金材质,尺寸为316mm ×313mm ×342mm(高×宽×长),装配两个驱动轮与一个万向轮。驱动轮由两个30W的直流电机带动,转速可达83转/分钟,机器人最快速度1.5m/s。HRMRP还装有一个六自由度机械臂,可以完成三维空间内的夹取操作。
(2) 控制平台
嵌入式系统具备小型化、低功耗、低成本、高灵活性等显著的特点,电子技术的发展也促使可编程门阵列FPGA在嵌入式系统中得到了越来越广泛的应用,很大程度上改善了嵌入式系统硬件的灵活度与繁琐计算的实时化。
HRMRP的控制平台即基于Xilinx最新一代集成FPGA与ARM的SoC——Zynq。
Zynq由处理系统(Processor System,PS)与可编程逻辑(Programmable Logic,PL)两部分组成。其中PS基于ARM Cortex-A9双核处理器构建,包含常用的外设接口,例如网络、USB、内存控制器等。而PL由Xilinx的7系列FPGA构成,支持动态重配置,可以使用Verilog语言编程。
在HRMRP中,PS通过操作系统控制所有功能正常有序的实现,而PL作为协处理器,一方面可以对复杂运算做并行加速处理,另一方面可以进行I/O接口扩展,为多传感器和执行器设计统一的接口,提高系统硬件配置的灵活性。
(3) 传感器系统
在机器人核心传感器的选择上,HRMRP使用了高性价比、高集成度的微软Kinect 传感器。除此还装配有超声波、加速度、里程计、陀螺仪等多种传感器,确保机器人平台可以采集到丰富的传感信息。
2. 驱动层
驱动层的主要工作是采集或预处理硬件层的数据,下发操作系统层的指令,为底层硬件与上层功能模块提供相应的数据传输通道。由于我们采用“ARM+FPGA”异构控制平台,为配合硬件层功能,驱动层也分为两部分,分别放置于硬件的PS端和PL端。
PS端主要驱动连接到ARM处理器的外设,例如通过PS中的OpenNI驱动Kinect,并且提供PL端到PS端的接口。而在PL端中,利用可编程硬件的灵活性和并行处理能力,进行I/O扩展与算法的硬件加速,如下图所示。
在I/O扩展方面,传统的设计实现中,种类繁多的传感器、执行器对接口的要求各不相同,会占用大量I/O资源,增加处理器的负担。而在HRMRP的ARM+FPGA系统当中,通过定义一组标准的硬件接口,连接传感器和电机等外设,可使用编程逻辑取代繁杂的电路连接工作,满足各种不同需求的硬件外设。
在硬件加速方面,一般来说PS端适合常用接口的驱动、网络数据的处理等功能,而PL端适合于规律性的算法处理,在HRMRP中主要负责Kinect的数据预处理工作(这里我们将OpenNI中的部分代码放入FPGA中进行加速)。PS与PL相互配合,提高了系统数据处理的实时性。
3. 操作系统层
操作系统层是机器人平台的控制核心,集成了机器人的功能模块,负责行为控制、 数据上传、指令解析、人机交互等功能。为与ROS通信接口保持一致,使用Ubuntu作为操作系统,运行于Zynq的PS端ARM处理器之中。
ROS为用户的不同需求提供了大小和功能不同的多种安装包,为了减少ARM端的执行压力,HRMRP编译移植了仅包括ROS基本通信机制的核心库。继承了ROS的优势,机器人平台具备ROS通信以及功能包运行的能力,与上层网络指令无缝连接,结合开源软件库,极大地丰富了机器人的功能模块与应用范围。
HRMRP是一种较为典型的高性能、低成本机器人平台。与现在研究和应用中使用较为广泛的TurtleBot、Pioneer等机器人相比,HRMRP具有相似的结构与尺寸,同样可以完成多种多样的机器人应用;但是在接口的可扩展性、传感器的丰富度以及成本控制等方面,具备更好的综合性能。
SLAM与导航
在以上架构的基础上实现每个模块的具体功能,系统运行状态下的数据流图如下图所示。
HRMRP在室内环境下的SLAM建图效果如下图所示。
多机器人扩展
ROS作为一个分布式框架,从微观的角度讲,分布式体现在节点的布局和配置上,而从宏观的角度讲,这种分布式可以体现在多机器人、多主机集成的系统当中。在HRMRP机器人的基础上,我们试图提出一种多机器人实现的框架,如下图所示。
由于机器人架构多种多样,处理应用的能力也各不相同,在不同场合下的需求也有差异,我们设计了服务器层来提高机器人应用的计算能力,负责调度、分配多机器人应用中的任务,同时为用户提供友好、易用的人机交互界面。
分布的机器人节点与服务器都采用ROS框架设计,使用无线网络通信,可以快速集成ROS社区中丰富的应用功能。在多机器人系统当中,通过机器人之间的信息共享和与任务协作,可以让每个机器人在充分发挥自己能力的同时,获得更多额外的应用潜力。
机器人节点是应用的执行者与信息的采集者。在该系统中可以集成多种采用ROS框架的机器人,这里以HRMRP机器人平台为例,针对多机器人的框架也进行了测试,除HRMRP机器人之外,还使用树莓派制作了一个简单的小型机器人。
在实验中,HRMRP机器人在地图上自主导航前进,服务器负责应用的处理与显示,同时将HRMRP的位置信息转发给树莓派机器人;树莓派机器人收到信息后,紧跟HRMRP,效果如下图所示。