标题 | 基于ROS的机器人导航系统架构设计 |
范文 | 李胜 摘要:目前,由于机器人的快速发展,在机器人开发中,代码复用和模块化的需求越来越强烈,构建一个灵活性较高的机器人架构成为一个研究热点。基于ROS框架,以主控制器(树莓派3B)+嵌入式控制板(STM32控制板)为基础设计了一种可用于机器人多传感器组合导航的系统架构,为广大机器人研究人员提供了一套切实可行的多传感器组合导航方案。 关键词:机器人操作系统(ROS);机器人;导航;架构设计;节点 1概述 随着“工业4.0”蜚声全球,“智能化”也成为受到普遍认同的、未来各行各业发展的大趋势。《中国制造2025》规划的出台,更是使各种智能化技术得到了长足的发张。机器人技术作为智能化最为显著的代表,更是如此,机器人技术已从传统的工业领域拓展到教育娱乐、医疗服务等诸多领域中。而移动机器人是进行机器人教育与研究最常用的平台。目前,关于对机器人的研究大部分都集中在底层运动控制器结构和算法上,对于构建上层应用软件架构的研究较少。由于机器人技术的快速发展,代码复用和模块化需求越来越强烈。机器人操作系统(ROS)很好地适应这种需求,在机器人研究的许多方面都得到了运用,如文献中基于ROS实现的地图构建与导航,文献中提到的基于ROS实现的自主服务机器人等。本文详细介绍ROS的主要特点,并结合实际情况设计出一套基于ROS架构的便于调试与维护的机器人导航系统架构。 2ROS基础 机器人操作系统(Robot Operating System,ROS)是一个面向机器人的开源元操作系统fopen-source,meta-operating sys-tem)。它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、进程间消息传递和程序包管理等。其主要的特点包括5点:点对点设计、多语言支持、精简与集成、工具包丰富、免费并且开源。 ROS机器人软件操作平台,是由斯坦福大学fStanford Artifi-cial Intelligence Laboratory)和Willow Garage公司之间的合作开发,2008年之后,就单独由WillowGarage来推动ROS的发展了。 节点,消息,话题,服务是ROS系统中经常用到的概念,基于这些概念,ROS可以实现程序进程间的消息传递,管理硬件、底层的功能。 1)节点 节点主要执行计算处理。ROS被设计为细粒度的模块化的系统;一个机器人控制系统通常有很多节点组成。本文采用的ROS框架中,相机数据节点用来获取二维码信息f包括偏移角度和偏移距离等),陀螺仪节点用来获取角度数据,编码器用来获取里程数据,数据处理节点用来融合各个传感器数据,而机器人控制节点将数据处理的结果转换为机器人的状态。 2)消息 消息是数据在ROS中的表现形式,是节点之间的通信内容。不管是来自传感器的数据,还是算法的运算结果,都可以定义为消息。一个消息可以是一个简单的数据类型,也可以是自定义数据类型,同时,消息还支持嵌套的结构。 3)话题 消息以一种发布/订阅的方式传递。识别消息内容的名称则叫做话题。话题发布节点和话题订阅节点彼此独立,不需要检测对方的存在性和状态,发布节点只负责在特定的话题上发布消息,而订阅节点也只需要通过订阅特定话题来获得消息数据。有可能多个节点发布同一话题,也有可能多个节点订阅同一话题。有点类似于围绕共同主题的多人聊天室,每个人都可以自由地发表或者获取符合主题要求的信息。 4)服务 在ROS系统里,服务定义为一对消息结构,服務器响应客户机的请求,弥补了基于话题的发布/订阅模型不适用于同步传输模式的缺陷。 3硬件系统设计 如图2所示,该机器人采用六轮底盘结构,前后两对轮子为从动轮,用以维持小车平衡,中间那两只轮子为驱动轮和舵轮,分别由一个电机驱动,通过两驱动轮的差速实现转向。中间两轮各配备一个编码器,会对轮子的滚动进行计数,用以计算里程。 机器人硬件控制系统如图3所示,由主控制器、ARM控制器、智能相机、陀螺仪、直流电机组成。主控制器采用开源卡片电脑树莓派3B,搭载主频为1.2GHz,内含4个ARM Cortex A53核心64位架构的BCM2837处理器,配备1G内存、板载802.11b/g/n Wi-Fi和板载蓝牙4.1。安装Ubuntu MATE 16.04 LTS操作系统和ROS(kinetic版本)。由于树莓派3B开发板并没有串口,采用USB转串口的方式与智能相机、陀螺仪以及嵌入式控制板进行串口通信。嵌入式控制板采用高性能、低成本、低功耗的ARM Cortex-M3内核的STM32芯片。编码器采用计数器接口与嵌入式控制板(sTM32)连接与通信。嵌入式控制板(STM32)通过设定电压值驱动电机运转。智能相机通过扫描二维码经过特定算法处理获取机器人的偏移和偏角。陀螺仪获取角度信息,两编码器可以获取到机器人两轮各自的里程,处理后可以得到偏移和偏角信息。 4软件框架设计 在各种操作系统中,ubuntu对ROS支持最好,主控制器树莓派3B安装的是使用Mate桌面系统的ubuntu版本buntumate操作系统。该ROS版本采用官方推荐的kinetic版本。监控计算机安装与kinetic版本匹配的ubuntul6.06操作系统。在安装完桌面完整版的ROS后,ROS系统框架已经建立并创建一个连接所有进程的网络和安装了常用的功能包和库。 主控制器树莓派开发板相对于ARM控制器STM32控制板数据处理能力要强,尽可能将运算复杂,工作量大的任务交由主控制器来进行。与底层硬件通信方面,嵌入式比较有优势。将与底层硬件通信较多的任务(电机驱动、传感器数据采集等)交给ARM控制器。另外,由于智能相机以及陀螺仪的数据都是封装好的,并且采用的是非常常见的串口通信,可以直接连接主控制器。 机器人的软件框架构建在ROS系统之上,使用了ROS系统的特性,将软件框架分成多个独立的模块化程序,也就是“节点”。每个节点处理具体控制任务的某一部分。如果需要,这些节点可以独立于控制任务的其他节点被编写、编译和启动。通过ROS的“话题(Topic)”机制,节点与节点之间以点对点的方式交换消息、共享内存等等。机器人的系统使用TCP/IP通讯,实现节点间的数据传输和机器人的远程控制。 该机器人软件系统框架如图4所示,主要分为人机交互、传感器数据采集、数据优化、运动控制四部分。 1)人机交互 人机交互节点主要功能是为方便用户配置机器人参数,控制机器人运动以及监控机器人状态。 2)传感器数据采集 传感器数据采集节点包括相机数据采集节点、陀螺仪数据采集节点和编码器数据采集节点。相机数据采集节点借助官方Serial包通过串口通信获取智能相机通过扫描地面二维码提供的机器人偏移和偏角信息;陀螺仪数据采集节点获取陀螺仪提供的偏角信息;编码器数据采集节点获取编码器提供的偏移和偏角信息。这些数据采集节点将从传感器处获取到的信息发布成相关的话题信息供数据处理节点订阅。智能相机和陀螺仪内置处理板,会通过串口发送具有指定格式的数据,主控制器可以直接通过USB转串口通信获得。编码器由ARM控制器管理,编码器通过ARM控制器和主控制器的串口通信获得。 3)数据优化 智能相机在扫描到二维码时,才会有相机数据供运动控制节点调用,因为这样的局限性,更多的时候只能依靠编码器和陀螺仪的数据。与相机数据不同,编码器和陀螺仪数据随时可以供运动控制节点调用。相机数据存在时,数据优化节点将相机数据、陀螺仪数据、编码器数据进行加权優化;相机数据不存在时,则将陀螺仪数据和编码器数据进行卡尔曼滤波算法优化;无论相机数据是否存在,经过数据优化后,都将得到一个较为科学合理的机器人偏移和偏角信息。 4)运动控制 运动控制节点是整个软件框架中最基础的部分,它实现了软件信息到硬件信息的转换功能,具体来说,就是将数据优化节点提供的偏差和偏角信息通过串口通信发送给嵌入式控制板,嵌入式控制板对收到的信息作出响应,依据期望速度,根据偏移和偏角信息计算出为修正该偏差和偏角左右轮电机分别所需的速度,最终转化为左右轮电机的实际电压。同时,并通过PID算法对左右轮电机转速进行精确控制,确保机器人按指定的速度和方向运动。 5结论 本文基于开源机器人操作系统ROS设计了一个机器人导航系统架构。在该架构下,首先对多种传感器进行数据采集,然后进行多传感器组合导航的数据优化处理,以实现精准的控制机器人运动。本文为广大机器人研究人员,尤其是多传感器组合导航研究人员提供了一套切实可行方案。在本文设计的机器人架构之上,可以进行自主导航等更复杂应用的研究。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。