闫存莹,王福康,田存伟
(聊城大学物理科学与信息工程学院,聊城 252059)
近年来,国内外地震、煤气泄漏、火灾等灾害频发。这些灾害造成了严重的人员伤亡和财产损失。灾害发生后首要的任务是现场状况和被困人员的探测工作。然而这些探测行动都遇到了同一个难题,因灾害过后现场情况复杂(如:有害物质泄露、现场高温、灾后空间狭小),致使救援人员无法进入现场了解情况,救援工作难以展开[1]。目前已开发的探测机器人一种是多自由度、运动灵活,但是体积大、价格昂贵;另一种是体积小巧、运动灵活但功能单一,可靠性不高。为了有效回避以上探测机器人的缺点,本文设计了一种能在多种环境下进行自主探测的机器人,它具有体积小、运动灵活,能适应多种复杂情况、反馈多种信息的优点。
在环境探测机器人领域,为了满足低功耗的要求,大多采用低性能的处理器作为机器人中控。这就导致探测机器人仅能处理简单的遥控指令进行探测和搜索,但在复杂的环境中仅仅通过摄像头传输的图像画面,操控手并不能完全掌握环境的各种信息,导致传统探测机器人效率低下,无法完成较为复杂的探测任务,同时对环境的感知能力也较为薄弱。针对探测机器人工作环境的特点,在保证可靠性、低功耗的前提下选择高性能的处理器来实现复杂的环境感知和自主探测的任务,成为迫切的需求。
本文针对自主探测机器人的工作特点,提出了一种基于Nvidia Jetson主控和激光雷达的可自主建图、导航、探测的履带式机器人系统[2]。并通过gazebo软件仿真和实际测试,能够实现复杂环境下的探测任务。
机器人以STM32作为底层控制器,控制底盘的驱动电机、霍尔编码器、IMU惯性传感器模块、电量检测模块等设备运行。将机器人姿态传感器数据和里程计信息以串口通信的方式传送给主控制器进行分析。
为了满足复杂环境下自主探测的功能,机器人以高性能的Nvidia Jetson NANO作为主控制器,通过对激光雷达的扫描数据进行分析,构建未知探测环境的地图,并能通过带有补光灯的高清摄像头将环境图像信息传送回上位机。
机器人以PC为上位机,在Ubantu远程虚拟机下处理机器人传回的各种信息和状态数据、图像数据,并最终通过ROS可视化工具等展示出来。
机器人的控制方式分为自主搜索模式和手动控制机器人搜索模式。在手动模式下,机器人可根据上位机遥控指令进行运动,将图像信息和激光雷达信息传回上位机[3],同时构建环境的2D地形地图并通过Rviz可视化软件展示。机器人在自主搜索模式下分为两种情况:①已获取环境的电子地图的情况;②探测环境的地图未知的情况。在①情况下,上位机可在电子地图上设置探索目标点,主控制器根据自身定位和目标地点,使用全局路径规划算法,规划出一条最优路径,底层控制器驱动电机按照规划路径进行运动,运动过程中底层控制器反馈的里程计和姿态信息将进行实时分析以判断运动状态。同时在运动过程中,激光雷达和摄像头实时探测周围环境,并运行gmapping建图算法将环境地图传回上位机,机器人同时根据探测到的周围环境进行避障,每一次避障完成后继续运行全局路径算法按照预设路径前进,直至达到预设目标点。在②情况下,因环境复杂未知且没有电子地图,可将机器人直接布置在需探测的环境中,通过上位机控制机器人运行自主建图程序,先通过对环境的探索构建出环境地图,再重复①情况下的任务模式。
1.2.1 Nvidia Jetson NANO
复杂环境下机器人自主探测要求控制器体积小,但涉及到多种传感器的融合数据处理,同时需要运行多个建图和路径规划算法,本设计选取Nvidia Jetson NANO处理器(如图2所示)作为主控制器,可同时满足体积和算力需求[4]。
图2 Nvidia Jetson NANO主板
Jetson Nano模块是一款低成本的AI计算机,具备超高的性能和能效,可以运行现代AI工作负载,并行运行多个神经网络,以及同时处理来自多个高清传感器的数据。它专为支持入门级边缘AI应用程序和设备而设计,完善的NVIDIA JetPack SDK包含用于深度学习、计算机视觉、图形、多媒体等方面的加速库。
1.2.2 Ubantu系统和ROS机器人操作系统
Ubuntu是一个以桌面应用为主的Linux操作系统。Ubuntu基于Debian发行版和Gnome桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity。从前人们认为Linux难以安装、难以使用,在Ubuntu出现后这些都成为了历史。Ubuntu也拥有庞大的社区力量,用户可以方便地从社区获得帮助。自Ubuntu 18.04 LTS起,Ubuntu发行版又重新开始使用GNOME3桌面环境。
机器人操作系统(robot operating system,ROS)是一个应用于机器人上的操作系统,它操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在一起,为它们提供了通信架构。ROS虽然叫做操作系统,但并非Windows、Mac那样通常意义的操作系统,它只是连接了操作系统和开发的ROS应用程序,所以它也算是一个中间件,在ROS的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行环境,在这个环境上,机器人的感知、决策、控制算法可以更好地组织和运行。
1.2.3 ROS程2序开发流程
软件节点设计框图如图3所示。
图3 系统软件节点设计框图
本设计根据ROS系统特点,对机器人的功能进行划分,设计了不同的功能节点,如表1所示。
表1 机器人各节点功能
机器人ROS层程序开发流程图如图4所示,分别为:
图4 机器人ROS层程序开发流程图
(1)启动ROS Master中央节点管理器。
(2)通过roslaunch命令启动编写好的.launch文件,启动多个ROS节点。
(3)与下层控制器进行串口通信,订阅/cmd_vel话题作为控制输入。
(4)判断是否有上位机指令,若收到开始接收数据,未收到则等待。
(5)将底层控制器的数据通过底盘控制节点读取。
(6)判断是上位机指令为SLAM或路径规划,对应执行以下步骤(7)或(8)。
(7)进行SLAM建图:调用激光雷达的雷达节点、同步定位与建图节点、底盘控制节点进行SLAM建图。
(8)进行路径规划:调用激光雷达的雷达节点、路径规划节点、底盘控制节点进行SLAM建图。
Simultaneous是实时同步,Localization是在给定地图的情况下,估计机器人的位姿,Mapping是在给定智能车位姿的情况下,建立环境的地图。SLAM算法就是指同时估计机器人的位姿并且建立环境地图。机器人在移动过程中需要导航和路径规划,SLAM主要解决智能车在自主移动过程中的定位和建立地图的问题,获取地图信息从而进行路径规划避开障碍物[5]。
考虑到机器人探测环境大多为狭小空间,即需要构建小场景高精度的地图,同时还要尽量减小计算量。本设计采用的SLAM算法为gmapping,该算法是一个比较完善的地图构建开源包,使用激光和里程计的数据来生成二维地图。
SLAM程序设计流程图如图5所示。
图5 SLAM程序设计流程图
动态窗口法(DWA)主要是在速度()v,w空间中采样多组速度,并模拟机器人在这些速度下一定时间(sim_period)内的轨迹。在得到多组轨迹以后,对这些轨迹进行评价,选取最优轨迹所对应的速度来驱动机器人运动。
DWA算法将避障问题转化为速度空间中的三个约束条件:①移动机器人的最大和最小速度约束;②移动机器人的动态性能约束;③移动机器人的安全约束[6]。
机器人的采样速度应该控制在移动机器人自身的最大速度与最小速度区间内,v表示线速度,w表示角速度,则约束公式:
由于机器人动力学的限制,线加速度v˙和角加速度˙存在上限和下限,vc,wc指当前时刻的线速度、角速度,Δt为时间间隔,因此满足:
基于移动机器人的安全性考虑,防止机器人因速度因素而撞上障碍物,提出了满足机器人运动安全性考虑的速度空间:
式中,dist(v,w)即为当前轨迹距最近障碍物的距离。该碰撞条件是在将机器人轨迹模拟出来以后,根据机器人和障碍物之间的距离,计算当前采样的速度是否可以在碰到障碍物之前停止,若可以停止,则该速度即为允许的速度[7]。
最终机器人动态窗口的速度范围应满足:
本次系统实验分为两部分,第一部分是检验软件系统的整体性和算法的可行性,在Gazebo仿真软件上所做的系统仿真实验;第二部分是实物实景测试。
整个仿真系统在Ubantu18.04系统上运行,ROS版本为Melodic版本,系统配置如表2所示。
表2 Ubantu系统配置信息
基于ROS和Gazebo的无人船传感器融合仿真环境框架如图6所示。
图6 基于ROS和Gazebo的无人船传感器融合仿真环境
图7为Gazebo仿真环境下的模拟环境,设置圆柱体和正方体模仿障碍物。
图7 Gazebo仿真环境下的模拟环境
运行SLAM算法进行建图,并在Rviz软件中显示建图结果,如图8所示。
在图8中,左下角显示为摄像头的实时图像数据,建图中边缘处红色点为激光雷达扫描点,根据实验结果可知本设计采用的SLAM算法达到预期目标。
图8 Rviz软件中显示建图结果
在完成SLAM建图的基础上,我们对路径规划算法进行测试,在地图中设置目标点位,由机器人自主规划路径并前往。运行结果如图9所示。
图9 路径规划运行结果
在图9可以看到,设置目标点后,路径规划算法规划出一条路径,如图中绿色轨迹所示,并最终到达设置目标点。根据实验结果可知路径规划算法达到预期目标。
实测场景如图10所示。
图1 机器人总体设计方案图
图10 实测场景
机器人配置如表3所示,上位机配置如表4所示。
表3 机器人参数
表4 上位机配置
SLAM建图结果:运行SLAM建图程序,对实验环境进行扫描,结果如图11所示。
图11 实验环境扫描图
导航及路径规划运行结果如图12所示,步骤为导入地图,运行路径规划程序,设置目标点,展示规划路径,驱动机器人前往目标点。经过测试,机器人根据规划路径顺利到达目标点。
图12 导航及路径规划结果
本文提出了一种基于Nvidia Jetson的自主环境探测机器人,设计了机器人的软件系统和硬件系统,并通过SLAM算法和路径规划算法实现了机器人的自主环境探索功能,并通过Gazebo仿真软件对软件系统的可行性进行了测试。实验结果表明,本设计的软件系统设计达到应用目标。通过对实验室环境的实际测试,将机器人置于较为复杂的环境中进行实际测试,表明机器人的整体设计完备,具备实际应用价值。而对于地图构建的精度问题,未来还将通过继续优化建图算法和提高硬件性能来获取更好的建图效果。