时间:2024-05-04
张恪尹,成瀚,高宝满,杨贤哲,郑英
(东南大学 成贤学院,江苏南京,210088)
新型冠状病毒疫情的暴发,使得消杀工作成为当前亟须解决的重要问题。传统的消杀方式存在着效率低、安全难以保证等问题,而采用机器人技术进行智能消杀则成为一种备受关注的解决方案。智能消杀机器人可以通过集成多种传感器和机器学习技术,实现对多种病毒、细菌的高效、自主、安全和可靠的管理。与此同时,该技术还可以有效减少人工消杀的风险,提高消杀的效率和准确性。
疫情的突如其来,导致国内外各地区都无法及时地研发智能消杀机器人,但随着疫情形势越来越严重,国内外高新技术企业和许多科研单位也都进行了智能消杀机器人的研究和开发,市场上许多新型的智能消杀机器人也层现叠出。比如美国已经研制出的Xenex 公司的LightStrike Germ-Zapping robot,该机器人底盘装有四个被动轮,移动平台上装有高强度气脉冲紫外线灯和运动传感器,可对室内进行消毒,同时感知消毒区域是否有人员存在。山东日照的创泽智能的创创智能消毒机器人,特点是仿人型轮式机器人,在机器人背部加装喷洒装置,实现对工作区域的喷洒消毒。深圳的优艾智合消毒机器人,特点是轮式移动机器人,移动平台上配备紫外线消杀管,可实现无人值守,远程遥控[1]。
消杀机器人涉及的核心技术包括:感知技术、建图技术、路径规划技术、消杀系统技术。
感知技术:消杀机器人能够通过摄像头来识别待消杀区域的人员和物体,以实现对消杀场景的感知。
建图技术:消杀机器人获取激光雷达和里程计数据,并通过自己的运动来确定自身位置。然后,机器人使用这些数据来构建二维栅格地图,以帮助机器人更好地了解其周围环境,并进行路径规划的任务。
路径规划技术:路径规划是消杀机器人自主移动的关键技术,通过路径规划算法(本系统使用全局Dijkstra 算法配合局部DWA 算法)综合考虑多种因素,包括地形、障碍物、消杀任务等,为机器人规划一条最优路径。
消杀系统技术:消杀系统是消杀机器人的核心,它需要综合考虑多种因素,包括消杀剂的类型、喷洒量、喷洒方式、紫外光的光照强度等,为机器人提供高效、安全、可靠的消杀服务。本系统使用消毒液喷洒技术和紫外光照射技术相结合。
智能消杀机器人的总体框架主要包括硬件系统和软件系统两个方面。
硬件系统主要包括底盘、传感器、执行器、消杀装置等组成部分。底盘是机器人的运动平台,包括驱动电机、车轮、霍尔编码器等组件,用于实现机器人的移动和姿态控制。传感器包括激光雷达、摄像头等,用于获取机器人周围环境的信息。执行器选用吸水棉棒和继电器,用于控制机器人执行具体的消杀任务。消杀装置选用喷雾器,用于实现消杀操作。
软件系统主要包括机器人的控制软件、感知软件、路径规划软件和消杀软件等组成部分。控制软件控制机器人的移动和姿态。感知软件处理传感器获取的数据,以实现对消杀区域、人员、障碍物等的感知。路径规划软件根据目标区域的地图信息和感知数据,生成机器人的运动路径,以实现自主导航。消杀软件控制消杀装置的开关和消杀时间,以实现消杀操作。
在整个框架中,机器人的感知和路径规划是两个重要的环节,需要通过各种算法和技术来实现。此外,机器人的安全性、可靠性和智能化程度也是整个框架的关键考虑因素。综合上述分析,将智能消杀机器人系统框图如图1 所示。
图1 消杀机器人系统结构框图
上位机选择NVIDIA Jetson Nano 2GB。下位机选择Arduino Nano 单片机。驱动电机选择JGB37-520 直流减速电机。电机驱动芯片选择TB6612FNG。激光雷达选择RPLIDARA1。并在直流减速电机上装载霍尔编码器实时测速。
从控制的角度来看,机器人系统可以分为四部分:传感系统、控制系统、驱动系统、执行机构。而执行机构与驱动系统构成了机器人底盘,也就是本章重点介绍的部分。
在本智能消杀机器人中,采用电池驱动TB6612FNG 电机驱动芯片进而驱动JGB37-520 直流减速电机作为驱动系统。作为最简单的能源,电池驱动的优点是:速度变化范围大,效率高,速度和位姿精度很高。缺点也同样明显,不能直接驱动电机[2]。
在执行系统中,两轮差速模型是最简单的底盘模型,通常是在底盘两边安装两个平行的同构动力轮,但考虑到在不添加其他维持平衡的系统的情况下至少需要三个点作为支撑点才能维持机器人的平衡。在底盘的后方两侧安装了两个同构动力轮,在底盘前方中间安装一个万向轮,由此组成了智能消杀机器人的执行系统[3]。简易示意图如图2 所示。
图2 三轮差速机器人简易模型
差速模型可以用来推算机器人的轨迹,通过左右轮编码器的读数,可以计算出机器人的位移和转角。假设机器人在t 时刻的位姿已知,包括位置和姿态,轮距和轮子半径也已知,同时知道t 时刻左右轮的编码器读数,那么就可以推算出t+1 时刻的位姿。
在采样间隔中,如果机器人的左右轮速不同,那么机器人走过的轨迹就是一个圆弧,如图3 所示。图中Xw,Yw为世界坐标系,红色和绿色坐标轴分别表示机器人的x 轴和y轴,假设机器人在初始时刻的位置为 (x0,y0),朝向为θ0,两个轮子的速度分别为vL和vR,运动时间为t。机器人底盘的半轴距为L,则机器人的运动模型可以表示为式(1)圆弧的弧长∆SK可以由式(2)和(3)计算出,转角∆θ 可以由式(4)计算出来。
图3 差速模型示意图
根据机器人的运动轨迹,我们可以计算出机器人在每个时刻的位置和朝向。假设机器人在时刻t的位置为(x(t),y(t)),在时刻t+dt的位置为 (x(t+dt),y(t+dt)),则机器人在这段时间内转过的弧长可以近似表示为式(2):
因此,机器人在整个运动过程中转过的弧长可以表示为式(3):
并且,机器人在整个运动过程中转过的角度可以表示为式(4):
因此,在推算机器人的轨迹时,可以使用差速模型配合编码器读数计算机器人的位移和转角,然后根据左右轮速不等的假设,计算出机器人走过的圆弧轨迹的弧长和转角。最终可以得到机器人在t+1 时刻的位姿如图3 所示。
显然,在这个圆弧模型中,机器人边走边转过全部的角度,也就是圆弧的圆心到机器人中心的半径从起始位置,到终止位置,转过了∆θ,先采用向量运算,通过机器人位置,推出圆心位置,然后通过半径转了∆θ,推导出最终位置,方程组如式(5)所示。
显而易见,当机器人走直线时,∆θ=0,即转式过的(5角)度不变,则最终位置的横纵坐标应为其初始位置与其根据行进角度在世界坐标轴上的投影之和[5]。
Gmapping 算法是一个基于2D 激光雷达(本课题选用RPLIDARA1)使用RBPF 算法建出二位栅格地图的SLAM算法。该算法可以实时构建室内环境地图,计算量少,地图精度高,对激光雷达扫描频率要求低。依照粒子滤波的思想,地图信息包含在各粒子之中,因此该算法的算法复杂度也是由粒子数所决定的[6]。
在ROS 中,Gmapping 需要订阅机器人关节变换话题(/tf) 和激光雷达扫描数据话题(/scan),发布栅格地图话题(/map) 。将智能消杀机器人从开机到t 时刻传感器测量的数据表示为 z1:t(/scan),里程计的测量值表示为u1:t(/odom),同时估计地图信息为m(/map),运动轨迹状态为x1:t。由此,SLAM 问题概率能够被描述为一个条件联合概率分布,表述如式(6)所示。
为了将SLAM 问题划分得更细一点,用概率论原理将上述公式进行分解,分解过程如式(7)所示。
式中p(x1:t,m|u1:t,z1:t)表示机器人运动轨迹的估计,p(m|x1:t,z1:t)表示在已知机器人轨迹和传感器测量数据的情况下对地图构建的闭式运算,也就是Rao-Blackwellized分解。这样一来SLAM 建图就被分解为两个问题,即机器人轨迹的估计和已知机器人位姿的地图构建。
通过上述分析,可以知道p(x1:t|u1:t,z1:t)估计了机器人的运动轨迹,接下来使用条件贝叶斯公式和条件联合概率公式将其继续分解,结果如式(8)所示。
理论上,xt只与xt-1和ut有关,所以将轨迹估计问题转化为一个增量估计问题,p(x1:t-1|u1:t-1|u1:t-1,z1:t-1)表示上一时刻机器人的位姿,用上一时刻的粒子群表示。每一个粒子都有运动学模型p(xt|xt-1,ut)进行状态传播,以得到每个粒子的预测轨迹。对每个传播后的粒子,用观测模型p(zt|xt)进行权重计算归一化处理,这样就得到现在时刻的机器人轨迹。之后根据估计的轨迹以及传感器观测数据进行地图构建[7]。
作为一种经典的用于解决单源最短路径问题的算法,它的优点有很多,比如:
正确性:Dijkstra 算法能够在无向图中,正确地找到某个源点到其他所有节点的最短路径。这是因为Dijkstra 算法使用了贪心策略,每次都选择当前距离源点最近的节点进行扩展,并利用已知的最短路径来更新其他节点的距离值。
可优化性:Dijkstra 算法的时间复杂度可以通过使用优先队列等数据结构进行优化,从而达到更快的运行速度。
灵活性:Dijkstra 算法可以用于有向图和无向图,并且可以处理带权图和不带权图。
当然,它的缺点也很明显,Dijkstra 算法的时间复杂度通常比其他算法高,为O((V+E)logV),其中V 和E 分别为图中的节点数和边数。可能导致机器人路径规划的实时性降低。
在智能消杀机器人的应用场景中,实时性很重要,因为机器人需要在短时间内快速响应环境变化并调整路径。如果路径规划算法耗费太长时间,机器人可能无法及时调整路径,从而无法避开障碍物或到达目标位置,甚至可能导致任务失败或机器人受损。
对于这种情况,本文尝试引入启发式信息以优化Dijkstra 算法。通过引入启发式信息,机器人有效地减少了搜索范围,从而降低算法时间复杂度。启发式信息是指一种对搜索问题的估计,它可以帮助算法更快地找到最优解。
在Dijkstra 算法中引入启发式信息的具体实现步骤包括:定义启发式函数、初始化最短距离和优先级、计算节点优先级、搜索并更新节点的最短距离、使用优先队列进行节点排序。
定义一个启发式函数,该函数用于估算节点到目标节点的距离。常用的启发式函数有曼哈顿距离、欧几里得距离等。与曼哈顿距离相比,欧几里得距离更精确地估算了节点之间的距离,因为欧几里得距离是两点在平面上的直线距离,而曼哈顿距离只是两点在网格状地图上的距离。所以本文选用欧几里得距离为模型定义启发式函数。将节点n到起点的距离作为节点的估计值,定义为h(n) 函数。设节点n的坐标为(xn,yn),起点的坐标为(x0,y0),则节点n到起点的欧几里得距离为。则节点n的估计值h(n) 为到起点的欧几里得距离d。通过这样定义启发式函数能够有效减少搜索的节点数量,加快算法的运行速度。
在算法开始之前,将起点的最短距离初始化为0,将所有其他节点的最短距离初始化为正无穷大,并将所有节点的优先级初始化为无穷大。
对于每个节点,我们定义一个优先级f(n)=g(n)+h(n),其中g(n) 表示起点到节点n的最短距离,h(n) 表示节点n到目标节点的估计距离。
搜索时,我们首先选取优先级最小的节点作为当前节点,并标记该节点为已访问。然后,更新该节点的相邻节点的最短距离,并重新计算相邻节点的优先级。
重复前一步,直到找到目标节点或者未访问的节点集合为空。至此,完成了定义启发式函数的所有步骤。
上述引入启发式信息是使用优先队列的思想来实现的,即每次从队列中选取优先级最小的节点作为当前节点。在每次更新节点的最短距离后,机器人会将该节点重新加入优先队列中,并按照更新后的优先级进行排序。这样,在每次选择下一个节点时,算法会优先考虑优先级较小的节点,从而加速算法的运行。
完成Dijkstra 算法的优化后,搭载好Dijkstra 算法,控制机器人在相对密闭的空间内移动,使用激光雷达扫描周围环境获得数据来构建地图,在ROS 系统中通过可视化工具RVIZ 可以观察到地图逐步被构建出来。生成的地图如图4 所示。
图4 SLAM 建图例图
地图创建好后,在RVIZ 中,可以看到机器人所在的具体位置。在地图上设置目标位置,机器人就能够基于启发式函数改进的Dijkstra 算法自主规划最优路径,完美避开障碍物,运动到目标位置。
首先根据Arduino Nano、TB6612 大小尺寸,确定洞洞板尺寸和安装位置。确定好架子尺寸之后,进行底盘驱动板的安装。
其次,移动机器人底盘和电机支架的尺寸根据电机的尺寸、激光雷达的尺寸、Jetson Nano 大小等来确定。确定好尺寸后,打印出亚克力板进行安装。
消杀系统由喷雾器、紫外线消毒灯和各类传感器组成,吸水装置利用虹吸原理将消毒液从瓶底吸到瓶口,雾化喷洒器由Arduino 通过继电器控制,它可以通过吸水装置从下到上吸出消毒液,再经由雾化喷头将消毒液喷出。系统结构图如图5 所示。配合紫外线消毒灯对消杀区域进行一定时间的照射,来实现定点定时消杀的功能。并外接DHT11 传感器、CO2传感器实时监测并反馈环境温湿度数据和空气的滞留量,让机器人及时制定合适的消杀方案(控制紫外线照射时间、控制消毒液喷射量)。与此同时,Jetson Nano 会接收摄像头传输的数据,进行实时检测和分析,获取目标位置、形状、颜色等信息。根据目标物体的类型和状态,通过Arduino 使用相应的消杀方案进行消杀操作。
图5 消杀系统结构图
接着,将消杀系统、控制系统和感知系统有机地结合在一起,从而实现自主、高效、智能地消杀操作。这种有机结合可以使它们相互协调,提高整个系统的效率和精度。消杀系统框图如图6 所示,展示了整个系统的架构和各个组件之间的联系。
图6 消杀系统运行示意图
通过在消杀装置下方安装压力传感器,并在上位机上订阅压力传感器传输的信息,实现消杀系统与机器人端的通信,获取压力变化的信息。当消毒液减少到一定程度后,发出警报并适当减少消毒液喷洒量,保证消毒液的正常喷射功能。
本文设计了一个基于ROS 环境、SLAM 建图和基于启发式函数改进的Dijkstra 算法导航的智能消杀机器人,将建图导航功能与消杀系统紧密结合。机器人的软硬件配合工作,实现了各个模块的互相协作,提高了消毒杀菌的效率,大大减少防疫工作人员的风险。作为这样一种高效、智能、安全的消杀工具,具有广泛的应用前景和推广价值。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!