前言:本篇博客为作者实验室的研究生A类竞赛的参赛作品,考虑到项目整体工程量太大。该篇博客核心目的是给大家分享 SLAM 技术的实施案例,关于作品的代码与设计方案有需要的读者朋友可以私聊博主。诸如此类的 SLAM 技术应用是非常多的,奈何 SLAM 技术与人工智能都太吃学历和顶会了。建议此方向的道友可以侧重算法的部署与加速,可能这样更有利于往后的工作发展。
作品实物:
仿真图:
作品实战图:
地下线缆指埋于地下的线缆,根据其作用有地下电力线缆、地下通信线缆。随着经济发展,城市化率提升,城市用地日益紧张,叠加市容建设的美观要求,以及供电稳定性、居民安全性考虑,城市输电线路采用架空导线或者架空电缆难以满足需求,地下电缆成为关注重点之一。
线缆深埋地下,昏暗复杂的环境导致日常维护与故障抢修极其困难。由于地下线缆槽过于狭小,维修或维护时不利于人员通行,这给故障时寻找故障点带来极大的难度。并且,由于线缆深埋地下,在找到故障点后通常需要将故障段挖掘暴露后方能维修,维修后还需重新回填土方。这样的维修方式导致维修效率低下,维修成本高。
随着科技的发展,工业建设维修正向自动化发展。基于激光雷达的智能机器人作为自动化维修的工具得到了广泛的应用。因为其分辨率高,不受室内光线影响的特点,可以帮助人类在工作环境较复杂的情况下完成维修运输工作。比如由井松智能制作的梅花鹿系列之小前移叉车式AGV产品,在高位仓库、车间线边库、改造仓库等环境下均得到的有效地使用。还有由未来机器人公司AMR系列VGV移动机器人,基于多传感器融合的自然无轨导航算法,可实现货物无人搬运、拣选和存储,颠覆传统仓储方式。
AGV在工厂和仓库扮演物料运输的角色,至今,已经成为生产物流系统中最大的专业分支之一,并出现产业化发展的趋势,成为现代化企业自动化装备不可缺少的重要组成部分。但是在AGV小车的运用中使用的是既定的路线,也就是规划好的,在应对意外情况时缺乏一定的解决能力。地下昏暗复杂的迷宫环境并不适合它们工作。
另外在地下线缆维修和运输过程中,普遍存在着大质量、大尺寸部件的搬运移载操作,比如维修零件或者大型线缆等重物,所以有时候单间物品并无法满足要求,因此,多个机器人协同搬运就显得尤为重要。陈华等人针对多机器人协同搬运大部件问题,研究了基于Leader-Follower策略的跟随AGV运动控制技术[11]。设计了用于连接AGV与大部件的两自由度的平台,并提出了跟随AGV的运动控制技术框架。陈兴祁等人结合超声波和射频信号实现了 TDOA(Time Difference of Arrival)测距,并提出了改进三边定位算法,实现了小车的室内无线定位。
由上述国内外分析可以看出,多智能体控制在维修和运输的效率和安全性上都具有极大的优势。但是,由于多数的编队算法都是将多个智能体视为整体进行控制运算。这导致编队中单个智能体之间对通信的要求很高,为实现上述编队控制算法,编队中每台智能小车一般具有激光雷达、高精度声呐、高精度MEMS传感器,导致单体制作成本较高。并且,当通信受到干扰时,将编队的控制效果容易受到严重影响。在地下线缆维修场合,维修编队智能小车工作在光线阴暗、封闭狭窄、路径复杂的地下空间,并且这个地下空间会受地震、坍塌、积尘、积水、堵塞等干扰。因此上述极端依赖通信的编队算法会由于复杂的地形变化从而导致编队解列;同时高精度的配置要求也导致编队整体成本极高,不易普及。在地下线缆槽/管道这种复杂的地下迷宫环境,需要一种低通信依赖/无通信、低成本的全自动维修装置。
主要创新点:
①针对地下空间可能存在积土坍塌等未知障碍物的迷宫环境,本项目设计基于虚拟目标点的自主巡航算法,控制智能小车自主搜寻故障点,这种巡航算法适用于未知的迷宫环境,在复杂的地下环境中效率高,保证编队安全性。
②针对编队依赖通信能力易受信号干扰且成本极高的问题。本项目设计一种基于压力传感器的低成本编队控制装置及控制算法,每台智能小车均通过该传感器检测位置状态并实时做出调整。这种方式不依赖苛刻的通信环境,极大的降低了制造成本,并且其功耗降低,在地下昏暗复杂环境中实用性强。
项目后期使用树莓派与WiFi联网,将雷达信息在电脑端建立实时地图。
上图是地下线缆维修装置示意图。考虑线缆本身的重量问题,维修装置采用多个智能小车共同运输。其中编队的第一台智能小车和最后一台智能小车为领航车,其余为跟随车。由于线缆槽中昏暗狭窄,编队整体成蛇形。编队的第一台领航车为编队导航,自主寻找故障点,跟随车负责运载线缆并依次跟随前车。编队中的所有智能小车共同拖拽线缆前往故障点进行维修。最后一台领航车在维修结束后作为蛇头,导航编队离开地下迷宫。
本项目为地下线缆自主维护装置设计。因为线缆自身的重量过大,单台智能小车无法运输,因此,本项目采用多个智能小车进行运输。编队系统大致结构如下图所示。
图 2.2 中仅领航车与上位机间存在信息交互,每台智能小车之间靠线缆连接,智能小车之间依次跟随,完成蛇形编队。为方便说明,如图 2.3 所示,仅取编队中一台领航车和一台跟随车作系统结构示意图。
如图2.3所示,本项目中领航车采用树莓派为主控芯片。考虑到地下线缆槽所在环境光线阴暗,领航车采用激光雷达实时检测车身周围环境。本项目设计基于虚拟目标点的自主巡航算法将雷达信息转化为领航车的控制指令,配合基于STM32的驱动模块控制领航车运动。Wifi模块负责完成与上位机的通信,将扫描到的地图信息显示在上位机,方便调试和查看。跟随车直接采用STM32作为主控芯片,配合相应的驱动模块控制跟随车运动。两车之间仅通过压力传感器由线缆连接。
领航车设计的系统是以树莓派3B+为主控模块,利用放置于领航车中心的激光雷达采集车身周围的环境信息。激光雷达检测到的数据通过SPI传输给树莓派,树莓派根据雷达数据计算智能小车控制指令,并传输给STM32驱动板。驱动板根据控制指令生成相应的电信号和PWM波到TB6612模块,最终控制电机转速大小和方向,以达到驱动智能小车的目的。如图下所示为领航车硬件关系拓扑图。
本项目使用12V电源为领航车供电,电源电路设计是为了将12V电源提供给驱动电路,在78L05稳压芯片基础上构建电源电路,将12V电源转换为5V供给主控电路和传感器电路。
跟随车以Forest S1 STM32最小系统为主控模块,仅通过设计的压力传感器传输得到的数据进行移动控制。跟随车采用驱动轮控制和舵机控制智能小车运动速度和方向。STM32F103单片机在接收了压力传感器上光码盘和拉力大小数据后,生成相应的电信号和PWM波分别输出到A4950T双轮驱动模块和舵机,以达到驱动智能小车的目的。
本项目的跟随车采用8V电池,采用芯片LM2956T将其转化为5V电源供给传感器和驱动芯片。选用XL4015芯片将电源转换为6V满足舵机要求。
本项目通过 linux 中的 Gazebo 平台搭建迷宫式地下的虚拟物理环境。Gazebo 是一个机器人仿真工具,模拟器,也是一个独立的开源机器人仿真平台。
上图为由 Gazebo 平台建立的地图模型俯视图。白色为障碍物墙体。黄色的为智能小车。迷宫左上角的缺口为整个迷宫的入口。智能小车将在该环境下进行自主巡航搜索。同时下图为迷宫环境斜视图。可以看出迷宫狭窄且复杂。
另外,本项目通过 rviz 平台建立实时地图并显示出来。
上图为 rviz 平台上接收到仿真中雷达数据后的实施地图展示。图中黑白相间的为模拟的小车位置,灰白色为雷达探索到的安全区域。深绿色为还未确定的区域。黑色为平台未建模的区域,及未知区域。
上图中黄色的小点为计算出的虚拟目标点,黑色部分为算法根据智能小车大小计算出的危险区域,即距离墙体过近的区域。可以看出智能小车跟随黄点移动,黄点所在位置与黑色障碍物始终保持一定的安全距离。这种通过虚拟目标点引导智能小车前进的方式一定程度上保障了智能小车的安全性。
上图为智能小车搜索整个迷宫后建立的实施地图。对比实际模型可以看出,在基于虚拟目标点的自主巡航算法下,智能小车对地图的搜索完成度极高。仿真过程中智能小车无碰撞。
由于实际情况没有真正的地下线路管道提供实测,因此本项目在办公室中通过各种障碍物创造复杂迷宫环境。
实际模拟复杂环境时,本项目使用各式各样的障碍物作为墙体,实际地图中的墙体不像仿真时那样平滑。这样的环境也更加考验自主巡航算法的鲁棒性,以及智能小车在粗糙墙面下的控制能力。
通过在实际情况下的实验,可以得出结论:由于使用加速度替代拉力大小。为了使编队可以顺利搜索全地图,领航车只能一步一步的前进;另外这种压力传感器的跟随方式一定程度上不适合舵机控制方向的智能小车,从图中可以看出,当领航车前进时,跟随车并不能始终保持蛇形编队,当增加跟随车数量时编队存在裂解的可能;但是实验证明,这种通过检测线缆拉力大小和方向的蛇形编队方式有很强的鲁棒性,虽然编队无法高精度的保持蛇形编队,但是配合基于虚拟目标点的自主巡航方式,使编队在拐角,不规则墙体,不规则障碍物等复杂的地形下可以有效安全的维持编队方式前进。
上图为编队搜索后获得的实时地图,可以看到,整个地图的搜索程度较为完整,部分空缺处是因为实验时摆放的障碍物不够密集所导致。