王超,李乾坤
(山东华宇工学院,山东 德州 253034)
随着社会的发展以及人们生活要求的进步,自动导航机器人在人们的日常生活中扮演着不可缺失的角色。1959年,在众多研究者的不懈努力下,第一台机器人被德沃尔与约瑟夫联合制造,他们成立了世界上第一家机器人制造厂,正式开启了机器人为人类服务的新篇章。机器人的出现对各行业都有着不同程度的影响。而移动机器人在众多各式各类的机器人中最为典型,不仅影响着交通的发展,而且对工业、农业、教育等各领域都产生着不同程度的影响。在高校教学中往往与Python、C语言等程序设计课程相结合,寓机器人设计实践于教学当中。
本文以研究在Python 教学中设计基于自动导航的移动智能机器人,基于ROS 系统利用激光雷达探测周围环境,树莓派3 来处理数据,OpenCR 控制器为控制中枢转化信号以控制机器人各个方向的移动。实现了物联网的对接、机器人的远程操作以及机器人自主巡航和避障。
机器人操作系统(robot operating system,ROS)是一个开源的机器人操作系统,世界上有越来越多的人使用它。它可以提供通用功能、底层控制、流程消息等服务,还可以提供跨计算机获取、编译、编写和运行代码所需的工具和数据库。它是一种高度灵活的软件体系结构,用于编写机器人软件程序以及机器人的研究和开发。ROS 还支持一个类似于代码数据库的系统,该系统还可以协作和发布项目。从驱动到最新算法,再到强大的开发系统,ROS 的主要目的是提供一个统一的开源程序框架,以实现在各种实际环境和仿真世界中对移动机器人的控制。ROS 拥有许多机器人开发软件工具和软件功能包,能够增加移动机器人研究过程中软件的再利用率,加速项目进程,用最简单的代码实现更强大的功能。基于ROS 实现机器人操作越来越普遍,已逐渐发展为机器人领域的标杆。在机器人和人工智能的研究过程中,ROS 已经成为最强大的助手和最稳妥的设备。自动导航对于移动机器人来说是最基本的功能,移动机器人应该在陌生或者复杂的环境中能够自主探测出障碍物并且躲避障碍物,规划出一条安全性最高的最优路线,并沿着这条路线智能性地避开路途中的障碍物达到目标点。
机器人的自动导航设计首先需要对机器人的环境进行构建,其次让机器人进行自主定位,然后进行自动导航,最后对机器人进行仿真模拟实现机器人的自动导航。
机器人系统主要分为三个部分:传感器板块、功能运算板块、功能执行板块。机器人硬件连接如图1所示。
图1 硬件连接图
机器人采用锂电池作为供电结构,360°传感器作为传感系统,树莓派作为控制器以完成机器人的整体结构,其结构图如图2所示。基于ROS 的计算机端通过Wi-Fi 接收信息,从而实现机器人的运动操作、前进、后退、左右转。通过一系列算法来实现环境探测、自动泊车、远程桌面控制、自动巡航、检测障碍以及定点导航的功能。
图2 机器人结构图
激光传感器使用激光发射对准目标,通过激光反射往返时间测量出与周围物体的间距,用于对周围环境的探测采集,实时测出周围障碍物的距离。本文采用的是陀螺仪3Axis,加速度计3Axis,磁力计3Axis更加精准并且可靠稳定的运行。
机器人的处理器使用了树莓派3 的CPU,相对于该类型移动机器人树莓派3 的处理器完全够用。
OpenCR 是机器人的主控制板是为ROS 嵌入式系统开发的并且提供了完整的软件及硬件。外形小,性能高并且高效节能,相当于大脑,控制着整个机体的操作,使机器人的各个部件能够协同运行。
多功能数字舵机使用高频率脉冲激励雷达,使用微处理器来控制,大大地优化了舵机的性能,而供电系统也使用了小巧便携的锂电池,减小了马达的压力,移动机器人的位移活动更加灵敏。
移动机器人要在陌生的环境中进行完全自主导航,了解周围环境必不可少,首先确定移动机器人当前的位置,然后建立一个模型。如今,移动机器人全是通过自身所携带的激光雷达设置对周围环境进行估算和测量。因此,本文使用SLAM 对周围环境进行建模。SLAM 建图大致分为两步,首先获取周围环境的大致信息,其次对这些信息进行匹配吻合。整个过程激光雷达起主要作用。SLAM 算法的原理框架如图3所示,建模后图像如图4所示。
图3 SLAM 原理图框架
图4 建模图
在目前的SLAM 技术中,比较通用的是激光SLAM 和 视觉SLAM,即利用激光雷达对环境进行扫描,然后对环境信息进行处理,优点在于可靠性高,技术生态较为完整。与此同时,为了克服不利于精度的影响,采用双线性插值方法来估计网格占用率。在环境网格图构建完成后,将当前采集的激光扫描框架与创建的网格图进行配对,然后完成对移动机器人的位置和姿态的估计。SLAM 算法采用高精度的激光传感器,丝毫不需要里程表的数据信息,具有巨大的发展前途,特别是应用于移动机器人领域的地图建模问题。
在移动机器人领域,定位系统一般采用的算法是AMCL算法,该算法属于粒子滤波算法。AMCL 定位算法是一种蒙特卡罗粒子滤波算法。主要用于机器人在地图上导航时,为机器人提供定位功能。基于粒子群优化算法的优越性,系统对基于粒子群优化的AMCL 算法进行了优化。
与建图系统相比,AMCL 定位系统的功能更加局限。接收到的主要数据有静态地图、初始位姿、实时激光雷达数据等,这些数据是根据粒子滤波算法、粒子点云以及从里程计到地图的坐标转换估计出的机器人当前的位姿。由于初始的MCL 算法对于机器人的定位问题存在一些偏差,本文基于KLD 重采样的AMCL 算法对移动机器人进行定位。
SLAM 建图首先应当确保已经安装SLAM,其次是获取要使用的包文件,然后启动SLAM 系统输入一系列命令生成所需要显示的类型,例如地图类型和点云类型,以可视化所需的数据。打开终端可在rviz 中看到实时映射出的地图。生成地理特征图之后应当将地图保存,用以记忆该地图的探测时间和环境等相关信息。地图构建完成后应当对地图进行检验是否有误,在Team_Hector_MappingBoxCup 上找到其地图是否与刚刚建立的地图有所不同,如果不同,检查是否在发布版本中构建了SLAM 以获得完整的性能,SLAM 的参数在映射结果中也发挥着重要的作用,同时也需要检查映射出来的参数。对环境构建完成并获取地图后,就需要在烦琐复杂的环境中确定好移动机器人实时所处的位置,在接收到雷达信息后,AMCL通过粒子滤波跟踪SLAM 构建中移动机器人的位置和姿势,对信息进行处理和探测,最终依靠机器人的状态使移动机器人能够完成自主定位。
移动机器人在完成对周围环境的建模以及自身的定位之后,还剩最后一步最重要的操作,即移动机器人的路径规划,使得移动机器人能够自主的进行路径的选择去避开途中的障碍物到达目的地,并且采用优化后的A*算法和DWA 动态窗口法完成路径规划和避障等多种功能。
A*算法是一种广泛使用的图搜索算法。虽然可以有效地完成了机器人的全局路径规划,但存在拐点多、路径长等缺点。传统的A*算法到达目标点的最优路径覆盖了所有规划点。根据机器人的运动,通过简化路径,进一步优化A*算法。本文采用平滑法对路径进行优化。优化的主要思想是直接找到直线内可到达的最远节点,舍弃最远节点之间的中间节点,从而减少路径上冗余的拐点。DWA 算法的基本思想是离散样本线速度和角速度的多个组速度矢量空间,评估基于运动学模型的运动轨迹,并选择最优目标路线,从而完成对移动机器人局部的路径规划。
在ROS 系统下,移动机器人要想能够自动导航。首先需要安装ROS,然后去调用上面的一些功能包完成环境建模,移动机器人的定位,路径规划以及机器人的自主运行具体流程图如图5所示,仿真分析图如图6所示。
图5 导航流程图
图6 仿真分析图
SLAM 算法在ROS 系统下只需要通过激光扫描所采集的数据就可以对环境进行地图构建,因为不需要里程计等传感器且技术更加成熟完善,所以应用范围非常广泛,如环境探测仪、视觉设备等。在模拟ROS 环境中进行仿真,首先需要在ROS 中确定激光数据和系统命令主题,从而发布机器人的姿态信息和网格地图信息。其次,通过ROS 系统启动脚本。同时,键盘方向键用于控制机器人在环境中的行走。在移动机器人的行走过程中,完全构建了与真实场景基本一致的环境地图,没有滑动、重影。构建过程中,可使用键盘操作机器人巡视周围环境,以完成周围环境的构建,使之与现实场景相对应。第二步在路径规划的过程中,需要机器人在任何地方都能够估算出自身所处的位置以便于路径规划:(1)需要对蒙特卡罗算法进行优化,实现基于KLD 重采样的AMCL 算法,准确得到机器人的位置。(2)调用移动基函数包,接下来进行全局路径规划和局部路径规划,全局路径规划由A*算法完成,局部路径规划由DWA 算法完成,以准确求出最优路径。经过上述一系列算法,实现了SLAM 环境地图的构建。因此接下来可以打开rviz 将地图放在ROS 框架上,通过粒子云得出正确位置,对移动机器人进行路径规划以及自动导航实验,通过地图的加载以及位置的定位之后使移动机器人能够自动地进行路径的规划以及自动导航达到终点完成实验。
该设计最终实现了机器人的自动导航,并且机器人能够在陌生的环境中进行建图进而进行路径规划,对未来的发展起着重要的作用。
随着互联网教育的兴起和人工智能技术的不断进步,机器人的应用已经渗透到教育行业的各个领域,可用于Python、C 语言等编程课程中,作为编程课程的拓展内容,也可作为大学生创新创业大赛的装备,提高学生的应用能力和实际操作能力。随着计算机视觉、语音识别、编程语言等技术的不断完善,未来的人工智能技术将对教育行业产生广泛而深刻的影响。
通过基于ROS 移动机器人自动导航设计,在Python 教学中对SLAM 建图、AMCL 定位、路径的自动规划开展了一系列的研究,通过虚拟的场景实现了移动机器人的自动导航功能,使得移动机器人在真实场景中也能够进行地图的构建、路径的规划以及实现自动导航功能。对于移动机器人来说,自主构建地图、规划路线并巡航只是机器人自动化的一个最根本的基础,在未来的研究中软件方面可以使用Python语言实现与人工智能的结合,在移动机器人的硬件上根据需求进一步进行改装并且插入所需要的软件,例如可以在该机器人的基础上安装爪子来实现机器人的自动导航抓取功能,也可以让机器人自主识别做一个全自动清洁机器人等使我们的生活更加便捷。在未来的研究过程中自动导航机器人将与编程课程相融合,实现教学与实践的相融合。自动导航机器人在未来的生活中一定会使用得越来越广泛,这将是人类必不可少的一部分。