当前位置:首页 期刊杂志

基于ROS的全向移动机器人控制系统的设计与实现*

时间:2024-07-28

张 鹏,高 放,双 丰,3

(1.中国科学院 合肥智能机械研究所,合肥 230031;2.中国科学技术大学 合肥物质研究院,合肥 230026;3.安徽工程大学 机械与汽车工程学院,安徽 芜湖 241000)

0 引言

国外研究移动机器人起步较早,在1966年至1972年研制出了自主移动机器人Shakey,该时期对移动机器人的研究主要集中在室内结构化环境中。随着计算机和传感器技术的发展,移动机器人的研究出现了新的高潮。80年代中期以来,一大批世界著名公司如美国通用电气、日本本田、索尼等开始研制移动机器人平台。美国adept公司与2005年研制出PatrolBot机器人并销入市场,该机器人可以在复杂环境中准确定位并进行路径规划,还能自动充电,目前已运用于酒店、医院、半导体行业等领域。

国内对移动机器人的研究起步较晚,始于1986年的863计划,经过30多年的发展,已经取得不小的进步。1994年,清华大学所研制的智能移动机器人THMR-V突破了全局路径规划、数据快速传输、传感器融合等关键技术。哈工大机器人集团研制的迎宾机器人具有为客户指引、语音互动、人脸识别、自主导航、自动避障等功能,适用于银行、机场、商店、餐厅、电信、展览馆等公共场所[1]。

随着当前机器人多样化的发展,开发工具和模块也逐渐增多,体系越来越复杂化,机器人软件不能有效复用,给机器人行业带来了严峻的挑战,为此ROS应运而生。ROS(Robot Operating System)是一个得到广泛使用的机器人系统的软件框架。ROS的基本理念是无需改动就能在不同机器人上复用代码。基于这些,我们就可以在不同的机器人上分享和复用已经实现的功能,而不需要做太多工作,避免了重复劳动。

近年来机器人技术获得了突飞猛进的发展,服务型室内移动机器人更是得到了广泛关注,各种类型的服务机器人公司也正如雨后春笋般涌现,商品化的服务机器人也开始进入千家万户[2]。服务机器人技术的发展主要受到以下几个方面的推动:人工智能的发展,让机器人变得能听会说[3];传感器技术的发展让机器人能够拥有更强大的感知能力[4-5];控制理论的发展让机器人的控制不再依赖精确的数学模型[6]。

相比机器人硬件技术的不断升级,机器人的软件开发与维护工作却显得力不从心。机器人的控制系统是一个极为庞大且复杂的系统。如果不能够设计一个合理的系统框架,那么各个模块的复用性与移植性就会降低,系统的维护工作也将会变得更为复杂。开源机器人操作系统ROS的出现很大程度上解决了这一难题[7-8]。

本文的主要研究工作是基于ROS机器人操作系统设计了一套低成本、高性能、易维护的移动机器人控制系统方案。并针对该方案设计了一套嵌入式硬件平台。通过一系列的仿真与实验,证明了该方案的可行性。

1 ROS介绍

ROS起源于斯坦福大学人工智能实验室与Willow Garage公司的机器人项目,是一个面向机器人的开源元操作系统,它的本质就是一个类Linux操作系统,具有与常规操作系统相似的功能,它能够提供常用的机器人传感器或者机器人电机的驱动,帮助实现硬件抽象,同时它也拥有多进程的概念,并提供进程间的相互通信机制,还能够像Linux操作系统一样提供常用的软件包与算法包,方便用户的安装与调用。此外,它还能够安装用于编译与编辑代码的相关开发工具包与库文件,可以用于编译程序获得可执行文件[9]。

1.1 ROS的特点

ROS最大的一个特点就是开源免费, ROS遵循BSD许可,所有发布在ROS中的源代码都是开源免费的,且允许商业或者非商业项目的修改及使用。也正是因为这一特点,才会有越来越多的用户涌入ROS的开发者行列中(如图1所示)。

图1 ROS用户数量历年发展状况

同时ROS支持多种编程语言,如:C++和Python,还提供了rosbridge协议以供研究人员进行跨平台开发。同时还为开发者提供了三维可视化工具(如rviz),以及物理仿真环境(如gazebo)等组件,为开发者带来了极大的便利。ROS为开发者提供了一种分布式的代码框架,各功能均以节点为单位,各节点允许单独设计并编译,并且在运行的时候松散耦合,节点间的交互基于TCP/IP协议,同一工程中的不同节点允许在不同的运算载体上运行,分散实时运算压力。同时这种设计也极大地提供了代码的复用性,可移植性,便于维护[10]。

1.2 缺陷与不足

基于ROS的移动机器人在以下几个方面表现出缺陷与不足:通信问题一直以来都是影响服务机器人应用的一大技术瓶颈,现有的基于ROS设计的移动机器人大多受限于同一局域网;现有的ROS运行平台多为PC机,功耗高,成本高;移动机器人的应用领域非常广泛,涉及餐饮、医疗、客户服务、安防等等,不同领域的机器人有不同的功能需求,需要设计一个合理的机器人系统框架以满足模块复用的需求。

2 物联网移动机器人平台

本文基于ROS设计了一个移动机器人平台(如图2所示),该平台基于分层控制的设计理念,将机器人平台的各个模块进行分层控制,层次间低耦合,功能明确,模块复用性好,且软硬件可拓展,具有较强的灵活性;同时该平台融合了较为成熟的物联网技术,解决了移动机器人的通信问题;运动方式采用三轮全向的结构,赋予机器人更灵活的运动能力[11]。

图2 三轮全向移动机器人实物图

2.1 系统框图

图3 移动机器人系统框图

本文所设计的移动机器人的系统框图如图3所示。这里将一个完整的移动机器人系统划分为三个层次:基于服务的用户应用层,基于ROS的信息处理与决策层和基于RTOS的运动控制执行层。下面将以远程移动视频监控机器人为例分析各个层次的作用及构成,以及层次间的交互流程。

2.1.1 用户应用层

如图4所示,在用户应用层中该平台融合了传统的物联网技术,其中终端设备为这一层的核心器件,本文采用的是华为海思的一款1080P的摄像头模组(如图5所示)。

图4 用户应用层系统框图

图5 华为海思网络摄像头模组

模组外接一个wifi模块,通过wifi连接的方式访问网络,并把设备挂载到云端。用户可通过自主设计的上位机(如图6所示)来登陆访问已挂载到云端的设备,并与其进行信息交互,这里的信息主要指视频流数据和控制命令以及一些机器人的位姿信息。置于机器人端的网络摄像头模块通过串口与信息处理与决策层进行信息交互。基于此设计便可实现跨局域网的实时远程视频监控和远程控制。

图6 远程控制上位机

2.1.2 信息处理与决策层

信息处理与决策层基于ROS机器人操作系统,借助开源算法包slam_gmapping和navigation可以实现机器人的即时定位与地图构建以及机器人的定点导航功能。信息处理与决策层的系统框图如图7所示。

图7 信息处理与决策层系统框图

其中信息处理与决策层的核心板采用的是英伟达Jetson TK1开发组件,该组件能够为嵌入式应用而释放GPU的强大能力,满足开发者所需。预安装ubuntu14.04系统环境,在该环境下运行ROS的几个关键节点来实现机器人的相关功能。该层主要负责收集相应的机器人本体传感器信息以及来自激光雷达的环境信息,并对这些信息进行融合处理,根据控制指令和机器人的位姿信息来进行路径规划。

2.1.3 运动控制执行层

运动控制执行层主要负责执行决策层发送过来的控制指令。该层的软件架构基于FreeRTOS开源实时操作系统,该操作系统提供了丰富的API共开发者调用,拥有高效的任务调度机制,有较强的实时性,系统框图如图8所示。

图8 运动控制执行层系统框图

其中STM32F407该层的核心器件,该芯片外设丰富,功耗低,成本低,性能稳定。通过采集编码器的速度反馈,经过PID控制器的调节后输出期望的PWM波来控制电机的转速。

现如今较为主流的全向移动底盘有三轮驱动(如图9a所示)和四轮驱动(如图9b所示)两种,采用四轮驱动缺点是,这种结构不能保证机器人处于同一个平面内,假如四轮驱动的机器人在不是绝对平坦地面上移动,很有可能其中一个轮子与地面无法接触,只能通过悬挂结构或者弹簧减震机构来解决这个问题,需要较为复杂的机械结构设计。三轮驱动的方式则避免了这个问题,但效率相比四轮驱动要低一些,运动学解算更为复杂,需要比较大的计算量。本文更侧重功能实现,所以选用三轮驱动的方式[12-13]。

(a)四轮驱动 (b)三轮驱动

3 移动机器人的定位与导航

定位与导航技术是室内服务移动机器人核心技术之一。但是移动机器人定位与导航的算法较为复杂,需要大量的计算以及缓存空间,软件开发难度较大。本文借助ROS中的开源算法包来进行算法以及功能实现,节省了大量的软件开发成本。

3.1 即时定位与地图构建

为了能够实时观测当前所构建的地图信息,以及构建的过程,在这里利用了ROS的分布式处理特点,如图10所示。

图10 ROS的分布式处理框架

其中TK1 为机器人端的核心处理器,在该处理器上运行即时定位与地图构建的相关节点,如:里程计节点,激光雷达节点,以及gmapping 节点。PC端为用户端,只运行一个Rviz节点,其中Rviz 是一个机器人可视化工具,它可以根据当前发布在ROS 中的话题信息将机器人的位置姿态实时显示出来,同时还可以显示出机器人当前所构建的地图信息,并且提供了丰富的调试插件,为机器人调试提供了极大的便利。在这里所有节点均以PC端的IP地址为系统的ROS_MASTER_URI,也就是说在机器人端运行的节点在ROS 操作系统中所发布的话题在PC 端同样可以访问,那么PC 端运行的Rviz 节点就可以订阅到所发布的机器人状态以及地图等信息,并实时显示,效果如图11所示。

图11 机器人可视化工具rviz

在构建整个走廊的过程中,由于障碍物的存在以及激光雷达的测距范围限制等因素,对于机器人来说会有很多盲区,需要通过遥控的方式引导机器人简单遍历所处环境,走廊构建的整体效果如图12所示。可见构图效果基本能够展现真实的物理环境。

图12 完整的走廊地图构建效果

3.2 导航规划

导航的过程基于以下几个假设:机器人对于此刻自身所在的环境已经建立了一个完整的地图,即上一节中利用地图构建所生成的地图;机器人配备有激光雷达,并能够实时扫描周围的环境;机器人配备有编码器,能够通过计算得到机器人所行驶的距离。

导航流程如图13所示,所谓自主导航即给机器人指定一个目标点,机器人能够自主的规划出一条合理的路径,并沿着路径到达指定的目标点。在这里,我们将机器人放置到起始位置,然后在地图上给机器人指定一个目标点。这就变成了一个栅格地图路径规划的问题,全局路径规划问题是通过base_global_planner算法包实现的,使用A*搜索方法或dijkstra(迪杰斯特拉)算法求得一个全局路径。随着机器人的移动,机器人的位置会不断发生变化,根据里程计的更新数据以及激光雷达对地图环境的扫描数据,利用自适应的蒙特卡洛定位算法对机器人进行定位,更新全局的代价地图。并根据目标的位置与机器人的当前位置,以及全局代价地图的信息不断更新全局路径。局部实时路径规划是通过base_local_planner这个算法包来实现的,利用Trajectory Rollout算法和Dynamic Window approach算法(滑动窗口逼近法),并根据激光雷达的扫描信息以及当前机器人的位置、速度等信息来判断机器人是否会碰到障碍物,路径规划所用的时间,并实时更新局部代价地图,最终完成路径解析的工作计算出机器人所需要的实时速度和角速度。当期望的速度和角速度信息发布到base_controller节点时,由该节点完成运动学解算并发布控制命令给底层执行结构,从而实现自主导航的运动控制任务。

图13 导航规划的流程框图

由此可以看出ROS操作系统的这种分布式管理理念,每个程序节点都具有针对性的完成某一项具体的任务,各节点低耦合协作。这样方便程序设计者对某一项具体功能做针对性的优化时不至于影响其他节点的正常工作。

这里基于上一节发布的栅格地图对机器人的导航功能进行相关实验,效果如图14所示。其中粉色路径为全局规划路径,绿色路径为局部规划路径,机器人能够成功避开障碍物,前往指定的目标点。

图14 机器人的实际规划效果

4 结论

通过本文的论述可以看到一个完整的移动机器人系统是极为复杂的,包含实现各种功能的各个模块。但对于不同研究人员而言,对于移动机器人的研究侧重点并不相同。比如有些研究人员偏向于研究机器人的上层应用,如果模块复用性不强,那么这部分研究人员就需要花费时间去重复“造轮子”的工作,从而降低了研究效率。本文所提出这种分层设计理念可以有效提高各模块的复用性,研究人员可针对性的对其中某一模块进行优化改进,且不会影响机器人的整体性能。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!