资源描述:
《多功能智能轮椅设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
北京理工大学珠海学院2020届本科生毕业设计多功能智能轮椅设计—功能模块的开发设计学院:工业自动化学院专业:机械电子工程姓名:谢岸榆学号:160404102520指导老师:文豪职称:讲师中国·珠海二○二○年五月
1北京理工大学珠海学院2020届本科生毕业设计诚信承诺书本人郑重承诺:本人承诺呈交的毕业设计《多功能智能轮椅设计—功能模块的开发设计》是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。本人签名:日期:年月日
2北京理工大学珠海学院2020届本科生毕业设计多功能智能轮椅设计—功能模块的开发设计摘要全球正在步入一个老龄化的阶段,无论是发达或者是发展中国家,几乎每个国家都在面临着老龄化的问题。对于很多年迈的老人或者残疾人来说,普通的轮椅无法自己操控,通常还是需要在他人的协助下才可以有效移动。因此针对轮椅操作方便和运行安全可靠的要求,电动轮椅是比较理想的选择。然而目前一般的电动轮椅并不具有导航定位和主动避障等功能,电动轮椅的相关功能仍有待持续研究及智能升级。本次选题面向多功能的智能轮椅,对其中的功能模块进行了开发设计,实现了处理器环境的搭建配置、导航系统与语音识别系统的开发设计。其中,使用树莓派搭建了ROS机器人环境,通过激光雷达进行数据收集,采用使用自动与手动控制结合的控制模式,人机交互的操作,实现了智能轮椅自动定位导航和实时避障的功能。此外,智能轮椅可按照使用者的控制/语音指令进行目标点的路线规划,并在自驱动时不断检测周围环境的数据信息,避开障碍物,实时修正移动路线,确保智能轮椅能够安全准确到达目标地点。关键词:智能轮椅;树莓派;激光雷达;自动导航;语音识别
3北京理工大学珠海学院2020届本科生毕业设计Multi-functionalintelligentwheelchairdesign-thedevelopmentanddesignoffunctionalmodulesAbstractTheworldisenteringastageofaging,whetherdevelopedordevelopingcountries,almosteverycountryisfacingtheproblemofaging.Formanyelderlypeopleandpeoplewithdisabilities,anormalwheelchaircannotoperateonitsownandoftenrequiresthehelpofotherstomoveeffectively.Thus,therequirementsforeaseofuseandreliabilityofwheelchairsarearelativelyidealsolution.However,atpresent,thegeneralelectricwheelchairdoesnothavethefunctionsofnavigation,positioningandactiveobstacleavoidance.Thistopicfocusesonthemultifunctionalintelligentwheelchair,settinganddesigningfunctionmodules,aswellasthestructureandconfigurationoftheprocessor,andtheconstructionandconfigurationoftheprocessorenvironment.Thedevelopmentanddesignofthenavigationsystemandthespeechrecognitionsystemarerealized.Amongthem,raspberryPIisusedtobuildROSrobotenvironment,datacollectioniscarriedoutthroughlidar,controlmodecombiningautomaticandmanualcontrolisadopted,andman-machineinteractiveoperationisadoptedtorealizethefunctionsofautomaticpositioningandnavigationofintelligentwheelchairandreal-timeobstacleavoidance.Inaddition,theintelligentwheelchaircanplantherouteofthetargetpointaccordingtotheuser'scontrol/voicecommand,continuouslydetectthedatainformationofthesurroundingenvironment,avoidobstacles,andmodifythemovementrouteinrealtimeduringtheself-drivetoensurethattheintelligentwheelchaircanreachthetargetsitesafelyandaccurately.Keywords:intelligentwheelchair;Raspberrypie;Lidar;self-navigation;Speechrecognition
4北京理工大学珠海学院2020届本科生毕业设计目录1绪论11.1智能轮椅研究意义11.2发展历程和研究现状11.3本文的研究思路32导航系统的整体方案42.1导航系统的工作原理42.2导航系统硬件设备42.3软件平台选择62.4SLAM技术83室内地图的构建123.1树莓派环境搭建123.2ROS环境配置及功能包的安装133.3建立地图144路径规划与控制214.1全局路径规划234.2本地实时规划254.3机器人配置264.4代价地图Costmap285语音识别系统设计335.1工作原理335.2语音识别配置335.3语音控制346仿真与展示366.1机器人仿真模型366.2Gmapping_slam366.3语音识别与控制38
5北京理工大学珠海学院2020届本科生毕业设计7结论与展望40参考文献41致谢42附录43附录1地图仿真启动文件43附录2urdf模型的XML文件44附录3hector_slam启动launch文件46附录4语音启动launch文件、语言识别文件47
6北京理工大学珠海学院2020届本科生毕业设计1绪论1.1智能轮椅研究意义全球正在步入一个老龄化的阶段,几乎每个国家,无论发达或者是发展中国家都在面临着老龄化的问题,正如社会学家所推测,人口老龄化将很有可能成为21世纪的社会趋势之一,到了2050年,全球约每6个人中就会有一个人的年龄在65岁以上,相比2019年占比由9%上升到16%,老年人口提高了近2.3倍,并且由于各种事故、疾病等因素照成行动不便的残障人士的数量也以较快的速度再逐年上升。对于这一群体的医疗和护理、日常生活问题,将是各界必须面对也是亟待解决的问题。然而,针对目前这一数量日益增长的群体,为他们日常生活提供日常生活护理的人却越来越少,即使在政府的干预下,为老年人和残障人士的提供便利的设施不断增加,社会服务不断完善,但对于老人和残障人士而言,行动不便仍是困扰他们的一大原因。无法自由行动使他们难以融入社会,同时,残障人士由于自身身体缺陷的障碍,影响他们的日常的家庭、社会活动,容易在心理上对他们造成自卑、孤独感。对于这类群体,轮椅的出现为他们提供了极大的便利。但是对于很多年迈的老人或者残疾人来说,普通的轮椅无法自己操控,通常还是需要在他人的协助下才可以活动。因此对于轮椅的选择,要以操作方便,运行安全可靠为准则,电动轮椅是比较理想的选择,但是普遍的电动轮椅不具有导航定位,主动避障的功能,对于部分行动不便的人来说,依旧无法使他们的生活得到改善,而随着智能化时代的到来,人们提出将轮椅也进行智能化。智能轮椅的产生,是为了服务与行动不便的老年人和残障人士这一类群体,智能轮椅利用多种传感器进行信息收集,使用自动与手动控制结合,多模式识别、人机交互的操作,具备自动定位导航功能并且能够主动避障、安全行驶。智能轮椅可以根据使用者的指令进行从当前位置到目的地的路线规划,并在自驱动时不断检测周围环境的信息,避开路障,修正路线确保能过安全准确地到达目标地点。随着老龄化的加剧以及残障人口的比例的逐年增加,智能轮椅的研究对于这一群体而言具有重要的意义。1.2发展历程和研究现状从上世纪70年代开始,经过40多年的探索,智能轮椅功能越来越完善。1986年,英国首先开始研制出了第一辆智能轮椅,掀开了这场轮椅的智能化浪潮,许多国家开始投入资金涉略这一领域。而目前许多国家都在这一方面取得了突破,研制出来各具特色的智能轮椅。国内外均有取得这一领域重大突破的项目,国外比较典型的有包括但不仅限于以下的项目。这些项目研发的智能轮椅各有各的特色部分。像1989年法国的项目VAHM,它主打的是减少使用者的人为控制,高自主性轮椅。该智能轮椅可以支持3种控制模式:手动控制、半自动控制和全自动控制。可以满足在48
7北京理工大学珠海学院2020届本科生毕业设计多种环境下使用者的不同需求。手动控制模式下,使用者可通过人机界面发送控制指令,简单来说就是执行指令。半自动控制下,智能轮椅有一定自主控制能力,比如当轮椅监测到有障碍物但是使用者为给出指令是,它会采取行动,具备避障能力。全自动控制则是完全通过计算机进行控制,与使用者的交互只有接收目的地的指令,其他如路径的选择完全交由计算机选择。相较于法国VAHM项目,西班牙STAMO智能轮椅的控制模式相同,但是有多种不同的操作方式,比如通过人眼运动来发送指令,通过呼吸的方式,基于EOG,基于操纵杆模式、基于语音识别模式。STAMO智能轮融合了多传感器包括激光和CDC摄像头等,多种模式的操作可以满足不同的人群的需求。美国麻省理工的Wheelesl半自主轮椅机器人可以在不需要全局地图的情况下实现室内导航功能,它在接收到使用者的指令后,可以实时监测环境,并根据环境的变化进行障碍规避。Wheelesl轮椅机器人一共使用了12个红外传感器、4个超声传感器和2个编码器来实现机器人轮椅的环境检测。MAid智能轮椅则是以高精度的避障功能而闻名。这款轮椅由德国研发。在1998年MAid智能轮椅因为在人流密集、环境复杂的车站和博览会展厅进行36个小时的障碍物躲避测试,并且成功实现无碰撞驾驶而闻名。它能迅速发现行驶方向上的物体,并自动匹配合适的行驶的路线,绕开障碍物继续行驶。MAid智能轮椅使用一台工业电脑作为处理器,能够迅速的进行计算,因此反应的时间短。MAid智能轮椅使用大量的传感器进行环境监测。轮椅的避障由两个系统配合实现:航位推算系统和声呐系统。根据不同的环境它有两种导航模式可以选择:宽区模式(NAM)和窄区模式(WAN),分别对应的是自主控制行驶和自主运动模式。我国的智能轮椅的研究起步较晚,但发展的速度比较快。比较成熟的有如中科院研制RoboChair智能轮椅机器、上海交大的“交龙”智能轮椅、重庆邮电大学的多模态的控制方式来控制轮椅等等。RoboChair具有“多模式人机交互方式”和“随机环境下的融合导航”的优势。它可以分辨不同的手势、头部摇摆进行指令发布,或者通过面部表情、和语言识别来进行控制。在嵌入式系统下,RoboChair利用摄像头进行环境定位和基于平滑轨迹规划算法进行避障。RoboChair目前已在部分医院投入使用。上海交通大学研制的“交龙”智能轮椅的输入端是通过触控屏幕进行输入,使用者还可以利用麦克风进行交互。该轮椅可以识别使用自己的语言命令并传送给控制中心进行路径搜索。在移动的时候,若“交龙”智能轮椅监测到有动态或者静态障碍物在当前行驶路径上时会自动进入避障模式。使用者可以直接对轮椅说出“前进”、“后退”等指令来控制轮椅的行动。48
8北京理工大学珠海学院2020届本科生毕业设计重庆邮电大学研制的轮椅着力于多模式控制。他们的轮椅可以有包括肌电、脑电波识别、视觉跟踪等多种模式控制。多种模式的控制极大的满足了不同人群的需求。此外他们还开发了高精度的人类的微动作的控制模式如基于手腕弯曲幅度进行控制等。1.1本文的研究思路智能轮椅同普通轮椅的区别在于它不仅仅是将手动控制变成电驱动,它的核心在于机器人技术,将轮椅变为一个机器人,具备交流和控制的能力。在智能轮椅上移植移动机器人的移动控制、视觉识别、语音交互、自主定位、导航避障技术等,提高轮椅的使用便捷性。本文主要解决智能轮椅的实时导航问题,使智能轮椅能够实现在陌生环境中,使用激光雷达进行室内地图的构建,并且实时更新地图。实现智能轮椅的人机交互,接收使用者指令并且根据指令执行相应的动作。实现智能轮椅的自主导航功能,能够在室内环境下规划路径,避开障碍物到达指定的目的地。从以下几个方面进行研究:1.研究SLAM技术,在ROS平台上设计基于激光雷达传感器的智能轮椅自主导航系统方案。2.基于室内环境下,利用树莓派和激光雷达进行室内环境进行地图的构建与实时更新,并对地图进行剪裁处理。3.结合语音识别技术读取识别使用者的指令,发送至处理器并根据相应的指令进行移动控制控。4.基于建立的地图进行路径规划,实现自主导航与避障功能。48
9北京理工大学珠海学院2020届本科生毕业设计1导航系统的整体方案本设计的导航的使用范围是在室内环境下。智能轮椅的导航系统需要实现在室内环境中,依靠激光雷达进行室内地图的构建,接收使用者指令并且根据指令执行相应的动作,实现智能轮椅的自主导航功能,能够在室内环境下进行规划路径,并且驱动轮椅避开障碍物,到达指定的目的地。1.1导航系统的工作原理智能轮椅的整体控制分为三个部分:环境理解、任务信息处理、任务执行。环境理解就是通过传感器进行环境的检测,读取感知信息。基于传感器信息进行地图构建得到当前的环境地图信息。这是实现导航的第一步工作。在获取环境信息之后,轮椅必须知道使用者的目的,监测到来自用户的指令后,通过语音识别技术,进行过滤得到有效语音信息,对语音信息进行处理,理解用户指令后进行路径规划获得最优路径。上位机将指令传达给下位机执行电机驱动指令。在电机运动的过程中,传感器还会一直扫描环境信息,进行地图的更新。因此根据实时地图下会有局部的路径规划,当局部规划的路线与基于全局路径规划的路线发生较大的差别时,导航系统会进入避障模式,即刻依据局部路径修正行驶路线。图2.1智能轮椅工作原理流程图1.2导航系统硬件设备1.2.1树莓派48
10北京理工大学珠海学院2020届本科生毕业设计树莓派是一个教育用途的移动电脑,它是一款性价比高的处理器,可以支持多种系统的安装,支持ROS机器人平台的搭建。并且由于其体积小,可以安装在一些移动装置或者机器人中,作为中央处理器使用。适用作为移动装置、机器人等的处理器。它是一款基于ARM的微型电脑主板。使用者在经过配置之后可以获得具备所有个人电脑的基本功能的小型处理器。它的内存硬盘是不同容量的SD/MicroSD卡,可以根据需求有多种选择。树莓派根据不同的型号一般有2个或者4个USB接口并且配备了一个以太网端口可以连接路由器。树莓派上带有两个microHDMI接口,可以同时连接两个支持HDMI输入的电视机、电脑显示器或投影仪作为树莓派的显示屏,或者配置树莓派触摸显示屏,但是该功能需要进行配置才能实现。树莓派官方提供了多种常用的系统镜像,可支持语言包括python、Java、c语言等等。本次使用树莓派作为载体,安装ROS环境作为上位机使用,树莓派支持使用Arduino作为功能拓展板,能够与作为Arduinomega2560进行通讯,分布指令。该树莓派为RaspberryPi4ModelB。跟之前的树莓派相比,更新后的树莓派4B,它的处理器CPU升级为1.5G4核64位,CortexA72架构运算速度是Pi3B+的3倍以上,引入USB3.0,蓝牙升级为5.0BLE,性能更加稳定的同时满足低功耗,支持双屏4K输出,性能有所提升。树莓派常被用于机器人开发中,他功能强大,具有强大的社区技术支持和功能拓展,兼容性好,价格合适。图2.2树莓派1.1.1激光雷达激光雷达是一种光测量仪器,是以光束作为测量工具。它首先需要向四周发射大量的探测信号。当光受到阻挡时,会发生漫反射,激光雷达的接收器会接收反射回来的目48
11北京理工大学珠海学院2020届本科生毕业设计标回波,将两组信号波进行对比,经过计算可以获得得信息,如目标位置信息、外表特征、移动速度和姿态等。激光雷达使用激光束作为探测信号,激光的频率比微波频率高,因此激光雷达具有隐蔽性好,抗有源干扰能力强的优势;同时激光的光束十分窄,且聚集,不易被干扰,稳定性强;线性传播,具有方向性好的特点。市面上的激光雷达产品种类繁多,本设计中使用的是Delat-2A激光雷达。Delat-2A的扫描区域为平面半径为8m圆内进行360o全方位扫描。目前使用的激光雷达的采样频率大多在在2~5KHZ左右。使用激光雷达可以对当前环境进行测量下并生成当前所在的环境下的平面点云地图信息。激光雷达用途十分广泛,例如在地理方面进行地形测绘、机器人的导航避障等。Delat-2A系列激光雷达采用光学三角测距技术,配合精密光学、视觉采集处理机构,它可进行每秒高达5KHz测距动作。Delat-2A激光雷达内部包含处理器可以对接受的信息进行高速处理,计算出目标物体到激光雷达的夹角、距离数据。表2.1激光雷达参数1.1软件平台选择1.1.1ROS框架机器人操作系统(ROS,robotoperatingsystem)是个基于Linux的开源操作系统。不同的机器人有多种不同的机器人平台,在不同的平台上代码无法重复使用,为了解决这个问题,ROS平台支持多种语言编译,也就是说可以把代码打包成一个功能包移植到ROS平台上,大大提高了开发质量和效率,在一定程度上降低了开发难度。ROS平48
12北京理工大学珠海学院2020届本科生毕业设计台可以分为软件平台和硬件平台。机器人软件平台不仅包括机器人应用中使用的硬件抽象、子设备控制[1],还包括了我们常说的机器人开发中的SLAM技术、Navigation和Manipulation等功能的实现。在该操作平台下包含了大量的功能包、开发环境所需要的的各种个样的库、实用的开发、调试、仿真工具。ROS由主节点负责点到节点的连接和信息交流。我们启动ROS常用指令roscore,当该指令运行时,创建主节点主节点是其他所有节点的开端。此后可以注册每个节点的名字,并进行节点之间的信息交流。节点可以看成一个函数当需要执行某个功能时,就是调用对应的节点。节点在运行的同时会向主节点注册名称。在注册节点的同时还向主节点注册了publisher、subscriber、servicesever、serviceclient的名称、形式、端口和地址(URI)。节点间的交流是通过话题和服务。功能包是ROS中的重要的部分。它是构成ROS的基本单元。功能包的存在使得程序能够方便的移植。消息是(massage)使用来发送和接收节点的数据,它可以看作是变量,它可以发生单向或者双向的数据传输。话题(topic)就是编程中函数的名称,在调用时只需要写入函数名即可使用。在发布者(publisher)节点向主节点注册相当于做声明,而在ROS中它发送“消息”,作为橄榄枝。而需要接收该信号的subscriber会在主节点处递交“申请”,得到该发布该话题的发布者的节点信息。获得“消息”后,两个节点即订阅者和发布者就产生联系,可以通过话题进行消息交流。1.1.1ROS仿真平台作为ROS中常用的开源工具之一,Gazebo具有功能强大的三维仿真能力。在该软件中可以导入任何模型,并且具有优秀的渲染功能。拥有强大的物理引擎,支持编程和图形接口。在开发中,开发者常使用该平台进行物理仿真。使用方,只需要在Gazebo中加入提前转换好格式的机器人就可以模拟环境进行物理仿真,对于周围环境如摩擦系数、弹性系数、质量等物理属性,可以在该平台的仿真中实现。甚至可以在Gazebo中进行环境仿真,而一些传感器信息也可以通过插件的形式在gazebo中进行仿真。RVIZ是一个协助开发的可视化工具,可以实现对数据进行三维仿真。它可以兼容所有基于ROS软件框架开发的机器人。RVIZ是通过XML对机器人或是环境中的实际物体进行数据读取,如物体的外部特征,关节、运动速度、位姿等属性,并将数据转化为图形进行可视化处理,显示机器人状态信息、传感器信息和环境信息等。RVIZ可以使用者需求,对定制的所有从传感器或机器人处获取的监测数据进行图形化处理显示。此外,在RVIZ的控制界面下,使用者可以实现对机器人的行为进行直接控制,支持多种现有的控制模式,同样可以进行功能拓展例如加入插件。48
13北京理工大学珠海学院2020届本科生毕业设计图2.3gazebo工作界面图2.4rvzi工作界面1.1SLAM技术SLAM(simultaneouslocationandmapping),同步定位和绘制地图技术,可实现当移动机器人处于完全陌生的环境中的情况下,通过传感器对周围环境信息进行勘探。通过获取的环境信息和运动信息进行计算,并推算出当前位置,绘制出环境地图。需要运用该技术的移动机器人必须具备行走测量和估计位姿的能力。48
14北京理工大学珠海学院2020届本科生毕业设计基于ROS框架下有5种基于2D激光slam算法:Gmapping,HectorSLAM,Karto-SLAM,CoreSLAM和LagoSLAM。其他非基于ROS的有Google开源cartographer已经有了基于ROS版本。本设计中使用的是Hectorslam和Gmapping。图2.5ROS导航包流程1.1.1HectorSLAMHectorSLAM是常用的一种导航技术,它是结合了鲁班性(Robus)较好的扫描匹配法即2Dslam和使用惯性传感系统。但是对于低更新频率的激光传感器该技术并不能很好的达到使用者需要的效果。因为即使在测距估算足够精准的条件下,在该系统下生成的地图还是会出现误差,因此使用时低更新频率的激光传感器本设计不适用。HectorSLAM对于传感器激光扫描仪的要求较高,需要选择高更新频率、小测量噪音的激光雷达。HectorSLAM区别于其他几种的一点是它不需要里程计,可以满足在不平坦的地面上行驶的小车或者空中无人机进行导航任务。HectorSLAM通过使用hector_mapping节点来学习陌生环境的地图,同时通过激光雷达扫描帧速率来估算移动装置的二维位姿。节点是通过使用tf来对扫描数据进行转化,因此雷达可以不进行固定,也不需要Odom数据,同时不需要里程计,所以节约了计算资源。通过已经获得的地图作为基础,对激光束利用已经获得的地图对激光束点阵进行优化,计算激光点占据网格的概率。其中扫描匹配利用的是高斯牛顿的方法进行求解。具体的公式如下:扫描匹配是通过找到刚体变换的最小值,是世界坐标系下第i个扫描端点,和返回在地图上这些点的坐标。根据式2.2求解高斯-牛顿方程(Gaussian-Newton):(式2.1)(式2.2)其中H由黑塞矩阵(HessianMatrix)计算:48
15北京理工大学珠海学院2020届本科生毕业设计(式2.3)图2.6hectorSLAM工作原理1.1.1GmappingGmapping是一种基于激光的SLAM算法。该算法是基于Rao-Blackwellized的粒子滤波的SLAM方法即RBPF(Rao-BlackwellizedParticleFilter)。RBPF是通过使用大量的加权粒子来表示移动装置路径的后验算概率,通过接收到的信息进行反推算,每个粒子会给出一个重要因子。由于Gmapping算法需要大量的粒子数据支持才能不断对结果进行修正,对数据的计算量大,算法计算稍复杂。此外,算法的准确性因为在进行PF重采样过程中发生粒子退化折损的问题而受到影响,粒子的损耗会照成粒子的重要性权重发生变化,这意味着存在正确的假设粒子丢失,没有起作用。自适应重采样技术恰好弥补了该算法的缺陷。它是根据测距运动模型与观测值提出建议分布。当收集到第一代数据后,通过计算高斯分布可以推算出下一代粒子的分布。式2.7是根据有效粒子数的比重来衡量粒子权值的退化程度。的值越小,退化越严重。对粒子有效数量设置门限,当低于该值时,需要采取重采样。gmapping在ROS中已经集成完整的功能包,是移动机器人的导航系统中使用频率最高的SLAM算法。(式2.4)K是采样点的数量,是标准化因素,根据该分布,第i个粒子的权值可以计算为(式2.5)(式2.6)式2.7是根据有效粒子数的比重来衡量粒子权值的退化程度(式2.7)表2.2gmapping的topic发布/订阅和service48
16北京理工大学珠海学院2020届本科生毕业设计名称类型描述Topic订阅TfTf/tfMessage用于激光雷达坐标系、基坐标系、里程计坐标系间转换Scansensor_msgs/LaserScan激光雷达扫描数据Topic发布Map_metadataNav_msgs/MapMetaData发布地图MetaMapNav_msgs/OccupancyGrid发布地图栅栏数据~entropyStd_msgs/Float64发布机器人姿态分布熵的估计ServiceDynamic_mapNav_msgs/GetMap获取地图数据即时定位与地图建模深度信息IMU信息里程计信息栅栏地图图2.7gmapping功能包框架48
17北京理工大学珠海学院2020届本科生毕业设计1室内地图的构建本设计的使用范围是在室内环境下。不管是在室内还是室外,进行导航功能都需要先获取环境信息,然后搭建室内环境的地图,才能进行后面的路径规划和导航。本设计是在树莓派平台下的ROS环境中进行,需要先进行树莓派环境的配置和ROS环境的搭建。在ROS下调用激光雷达可以获得静态地图的数据。我们知道地图有二维地图和三维地图。二维地图是选取了某一水平面为基准进行构建,忽略了环境中高度的信息因此不能将环境中的物体的外部特征完整的描述出来。三维地图中包含的环境信息基本完整,可以很好的还原环境中的信息,视觉效果明显。在导航中一般采用的是二维地图进行自主导航和路径规划,虽然三维地图包含的信息更加完善,但是它的构建算法复杂,信息处理量大,花费大时间比较长,而且三维地图收到环境的干扰较大。所以尽管二维地图缺少了部分环境信息,但其实并不影响在导航过程中机器人对环境的理解,且其具有有信息量小,储存和读取方便,在构建时的算法比较简单,后期的维护和更新简单,具有较强的拓展性。二维地图共有4种:几何特征地图、栅栏地图、拓扑地图、混合地图。HectorSLAM采用的是栅栏地图。栅栏地图首先将环境划分成许多小网格单元,即栅栏,每个栅栏都有被占有的可能性,通过概率计算来获得该可能性的大小。栅栏地图的精确度并不高,但是可以较好的还原静态环境下的外部环境信息,并且算法简单地图容易生成和维护。图3.1HectorSLAM下建立的栅栏地图1.1树莓派环境搭建48
18北京理工大学珠海学院2020届本科生毕业设计本设计使用的处理器为树莓派4B(raspberrypi4B)。在没有进行系统配置前,树莓派无法使用。需要进行系统的安装。树莓派官网提供多种系统安装镜像,包括RaspberryPi、ubuntuMATE等。由于ubuntuMATE目前还不支持4B版本的树莓派且在raspberryPi上可支持安装ROSkinetic系统。所以本次选择安装raspberryPi镜像。树莓派是一块卡片式的处理器,所以使它能够像电脑一样能够交互式工作必须先对树莓派进行配置。搭建树莓派环境需要准备的材料有:5V的电源适配器、16G以上的microSD卡、树莓派、USB键盘鼠标。如果没有显示器的话,还需要一根Micro-HDMI线,一边是Micro-HDMI接口,另一边是全尺寸HDMII接口。Micro-HDMI线可以将树莓派连接到支持HDMI输入的电视机、电脑显示器或投影仪,成为树莓派到显示屏。树莓派是上电即启动的,在上电之前需要先将树莓派的镜像写入microSD卡中。首先需要在树莓派官网下载镜像。SD卡使用格式USB软件SDFormat进行格式化后,在烧录软件balenaEtcher中将镜像写入到SD卡中。将microSD卡正确插入树莓派,连接显示器并给树莓派通电,看到树莓派的启动画面则说明树莓派的镜像安装成功。对树莓派做一些基础设置,方便随后的使用,包括连接无线网络设、置中文输入法、更新软件等。1.1ROS环境配置及功能包的安装ROS机器人平台的镜像可以直接移植到树莓派上,作为树莓派到元系统。在安装ROS前要先对树莓派环境进行适配,添加ROS的安装源与密钥。更换无线网络后继续安装ROS依赖包。建立一个catkin工作空间存放源码,文件夹可以以ros_catkin_ws命名。注意在下载前需要更改下载源,由于官方源在国内的网络下很多软件安装包无法下载或是下载速度较慢,因此需要更换为国内的下载源。ROS安装完毕后,打开终端输入指令“roscore”进行启动ros:可以创建主节点(如图3.3),安装成功。48
19北京理工大学珠海学院2020届本科生毕业设计图3.2安装ROS的部分指令图3.3启动ROS1.1建立地图在树莓派中搭建的ros环境下进行地图构建.需要先根据选择的雷达类型下载雷达驱动文件。在本设计中选用的是3ilidar的激光雷达。3.3.1准备:测试环境:ROS_Melodic激光雷达:Delat-2A根据雷达类型下载相应的雷达驱动程序48
20北京理工大学珠海学院2020届本科生毕业设计图3.4雷达的驱动程序1.1.1雷达驱动激光雷达的启动需要同时连接多个节点,为了简化指令的输入,将多个节点信息写在一个文件中即launch文件中。运行Launch文件只需要用roslaunch就可以取代rosrun,不必再单个节点进行启动。Launch文件是XML格式,写入的节点信息包含节点所在安装包的名字,该节点的名称、输出的指定位置和arg具体的参数。在雷达的驱动文件中需要根据实际情况重新定义一下几个参数以供节点读取:参数的usb输入端口名,tf参数设置和map关联坐标系。图3.5雷达启动48
21北京理工大学珠海学院2020届本科生毕业设计图3.6雷达驱动文件在树莓派终端中用指令启动ROS:$roscore执行launch文件驱动激光雷达,激光雷达收集到的环境信息,建立静态地图。图3.7运行激光雷达的launch文件48
22北京理工大学珠海学院2020届本科生毕业设计图3.8激光雷达收集的环境信息成功启动激光雷达之后,可以看到激光雷达收集到的环境信息。红色部分为粒子受到阻挡的区域。为了能够获得更加详细的环境地图,需要调用HectorSLAM功能包进行地图扫描构建:在HectorSLAM功能包中包含完整的算法程序以供使用,在使用时需要修改tutorrial.launch文件。在该文件中需要包含坐标变换信息、轮椅的urdf模型文件、话题发布。1.1.1坐标变换在建立地图时,涉及4个部分,即map、odom、laser_link,base_link,利用激光雷达收集的信息需要进行转变才能在地图上进行绘制环境。该过程包含2个人tf变换,即map到odom的tf变换和laser_link到base_link的tf变换。Odom是里程计坐标系。根据右手法则,以轮椅的起点作为坐标原点,前进方向X轴。Odom是在轮椅启动时就建立。Map坐标系是全局地图中的坐标系又称为globalmap(全局坐标系)。在参数中的fixedframe即是全局坐标,一般设其为固定坐标系。globalmap同样是在轮椅启动时建立起来的。由于Odom和map都是在轮椅启动时建立,两个坐标系重合,随着轮椅移动后,odom的坐标系是X轴方向永远是前进的方向,在地图上odom的坐标时不断变化的。根据激光雷达数据信息进行地图构建需要将odom的坐标系进行处理,按照当前里程计给出的轮椅的周围环境信息,逆推在globalmap坐标系下的环境投影。Base_laser是激光雷达的坐标系。只取决于激光雷达的安装。需要注意的是在tf转换中base_link的tf为固定。48
23北京理工大学珠海学院2020届本科生毕业设计laser_link激光雷达的坐标系,激光雷达的安装点,如果雷达不是安装在移动机器人的中心的话,则两个坐标系是不重合的,那么需要进行tf变换。base_link坐标系的原点在机器人基座上,可放在任意一个位置和角度。在ros中,tf变换是通过ROSAMCL算法实现的。该算法首先需要订阅地图数据,将获得的地图信息结合激光雷达扫描信息,并使用粒子滤波来获取最佳定位MP(pointonmap)。需要注意的是base_link的坐标需要转换为map坐标系下的相对位置,因为最佳定位点确定是在map坐标下标定的。已知tf转换:map->base_linkbase_link->odom则map->odom=map->base_link–base_link->odom图3.9map和odom转换指令图3.10tf变换1.1.1提供Urdf文件Urdf(UnifiedRobotDescriptionFormat)文件是特殊的XML文件格式,可用于创建机器人仿真模型。它是作为描述机器人的文件,将机器人的结构等信息转换为代码导入到仿真软件中。在ros仿真中常常需要加入机器人模型进行仿真。在Urdf文件中包含了sensor/proposals、link、transmission、joint、gazebo、model_state、model,可以真实的模拟机器人的运动。编写launch文件,将urdf模型数据导入到服务器中,这就是topical中的base_link。48
24北京理工大学珠海学院2020届本科生毕业设计图3.11智能轮椅的Urdf模型1.1.1发布/scan运行激光雷达节点,ros会发布一个主题,hectorSLAM需要订阅该主题才能调用激光雷达数据。用rostopiclist查看具体到名称然后在launch文件中修改激光雷达的节点名称。经过以上的几个参数配置之后,可以进行hectorSLAM。图3.12launch文件48
25北京理工大学珠海学院2020届本科生毕业设计1.1.1运行hector_slam先输入roscore确保主节点创建,先导入urdf模型提供base_link坐标系,然后打开激光雷达获取环境信息后可以启动hector节点进行地图构建。图3.13启动hector节点图3.14启动hectorSLAM构建地图48
26北京理工大学珠海学院2020届本科生毕业设计1路径规划与控制本设计是在在ROS平台下实现路径规划及控制。可借助于ROS系统中丰富的功能包和库资源,进行配置可以实现该目的。本设计ROS库文件中调取基于激光雷达进行的2D-navigation功能包“navigationstack”。该功能包需要先获取里程计信息。然后通过轮椅的移动从中得到传感器的环境讯息和轮椅在global_map下的位置信息。根据起点位置与目标位置进行路径规划,对获得的最优路径信息数据进行算法处理,可以得出轮椅向目标地点安全移动的运动速度及方向,随后向控制驱动的下位机发送指令,执行该运动。导航系统可以分为以下的5个部分:globalplanner、localplanner、sensorsources/LaserScan、recoverybehaviours、basecontroller。根据传感器获取的环境信息已经先建立的所在区域的完整地图的信息可以建立局部代价地图costmap和全局代价地图costmap。首先获取全局路径规划(globalplanner),它是在基于全局代价地图计算而来。然后在此基础上进行局部路径规划。局部路径规划是在机器人一边移动一边搜索获得。它的作用是路径的再优化,因为是实时建立的地图所以能够灵活变动并且再发生突发性的地图变化时能够立即反应修正路线,起到避障的作用。Recoverybehaviors是相当导航系统的维修部门,当路径规划出现故障时会自动进入该节点。它会根据上层的路径决策信息,结合当前机器人的位姿,发布机器人的继续动作指令。而basecontroller是外部控制端,包含底盘电机控制、舵机等,是实现上下位机的通信交流,是具体执行运动指令的部门。图4.1navigate工作流程48
27北京理工大学珠海学院2020届本科生毕业设计图4.2路径规划流程图图4.3恢复行为执行过程48
28北京理工大学珠海学院2020届本科生毕业设计1.1全局路径规划全局路径规划在ROS中可通过navfn功能包实现。该功能包可以根据初始位置和目标位置进行总体的路径规划。Navfn是基于两种算法:Dijkstra或A*最优路径算法。Navfn通过计算所有可能路径中在costmap上花费最小的为移动机器人的全局路线。本设计中主要使用A*算法来进行全局路径规划。A-star算法(A*算法)适用于已存在静态地图的条件下进行最短路程的求解。A-star算法也被用于解决搜索问题中寻找与搜索最匹配的解答。A-star算法的公式可以表示为:(式4.1)其中,f(n)假设从起点到终点之间的实现需要经历的n种状态所需要花费的代价,该代价为估算代价。g(n)表示的是实际状态下起点到终点的代价。h(n)是假设选择最优化路径行驶,该过程需要的代价预算。在路径规划中,代价是指距离。若要使行驶距离最短,那么需要使选择的路径的代价预算即h(n)更加接近于起点到目标的时间距离。当实际距离大于代价预算时,需要搜索的范围大,尽管耗时长但是还是可以得到最优解。代价预算恰好等于实际距离是我们比较希望的状态,在这种情况下,h(n)就是最短距离,那么搜索的点数会是最少的。当然排除估算值小于实际距离情况,因为该情况下并不能得到最优解。所以在代价预算恰好等于实际距离时进行搜索效率最高的。A*算法基于加权地图形式进行表达,确定下起始点和目标点之后,从起始点开始向目标点扩散。每一次扩散都需要判断扩展点是否为满足要求的点,满足即放入队列中并成为后继的节点。通过不断扩散最后扩散到标定目的地所在的点。在主循环的每次迭代中,为了确定下一步的扩散方向,A*算法会对所有可能的局部路径进行筛选,找到并保留最优选择。因此A*算法下可以找到当前环境下所有无碰撞的路径。move_base功能包中包含了Base_Global_Planner功能。只需要订阅move_base节点即可。使用该功能首先需要写c文件进行初始化的操作,获取一些设置参数,在此文件中需要设置使用Quadratic算法还是Potential算法、选择A*算法还是Dijkstra算法、选择GridPath还是GradientPath。设置完参数后开启makePlanService。makePlanService是只要系统监测到请求就会连接makePlan进行全局规划路径计算。在makePlan中,主要分为三个步骤:计算,提取plan,发布plan。所谓的potential值是建立的完整地图变为点阵图,可以将起点和终点在图上进行标定,任何起点到终点的都有一个potential值。求起止点之间的potential值其实就是在计算A*算法中的到达目标状态的代价估计f(n)。发布的plan就是A*算法下的全局路径。48
29北京理工大学珠海学院2020届本科生毕业设计图4.4A*算法流程图48
30北京理工大学珠海学院2020届本科生毕业设计图4.5move_base设置参数1.1本地实时规划在本设计中,本地实时规划在确定下行驶路径之后进行的。它是边行驶边进行构建的,可以起到避障的作用。本地实时导航基于ROS中的base_local_planner,与全局规划相互配合,到达安全行驶的目的。该功能包结合了TrajectoryRollout和DWA算法,为平面中的移动机器人提供一个实时导航支持。base_local_planner功能包需要计算移动机器人在每个时间周期内应移动的速度和角度(三个必要参数:dx、dy、dθ)。通过在每个控制周期内寻找最合适的本地规划,很好的融合了将导航和避障。在base_local_planner软件包中,它提供了一个可用于驱动平面内移动的机器人的控制器。该控制器可以控制移动机器人执行通过计算后得出路径。TrajectoryRollout和DWA(DynamicWindowapproaches)算法采取的是在移动机器人所在的空间下进行离散采样,采样以获得dx、dy、dθ参数。对于每个采样的速度,在智能轮椅当前的环境下进行正向移动仿真,可以预测:假设以该采样速度在某个较短的时间内运行时会发生什么,此过程可以得到多个可行的移动方向即候选轨迹。根据接近障碍物,接近目标,接近全局路径和速度的原则,进行筛选并丢弃发生碰撞的无效轨迹,任何与障碍物碰撞的轨迹48
31北京理工大学珠海学院2020届本科生毕业设计都是非法无效轨迹。对筛选合格的轨迹进行评估,获得最得分高的轨迹为最优轨迹;选择最优路径并发送相关的速度信息给智能轮椅的控制器;循环该过程不断寻找最合适的下段轨迹,而该行走轨迹即为最优路径。图4.6无效路径根据轨迹的评分机制,需要将地图进行网格化以方便进行高效地评分。对于每个控制周期,都会在智能轮椅的周围创建一个与localcostmap等大的网格,并将全局路径映射到该区域,通过对比可以找到更接近全局最优路径的局部路径。对网格单元进行评分,例如在在该控制周期下,找到网格单元格与全局规划路径重合,那么给这个点标为0。这些网格单元连起最优路径关键节点。但假设动态环境下,智能轮椅正向移动下突然出现障碍物,即全局规划的路径上存在障碍,那么此时就无法找到被标定到路径点距离为0的点,那么就只能找最接近于0点点。根据传播算法,对所有其他网格单元进行曼哈顿距离(出租车距离)计算,筛选出与被标记为0的单元最接近的点,连接即是最优路径。(式4.2)1.1机器人配置1.1.1tf变换(sensortransforms)tf变换(sensortransforms)即各个部分之间的坐标系转换,在ROS中导航功能包是以tf树的形式发布各个相关参考系的变换关系。常用的tf变换在社区或者库中可以找到相关的调用。例如轮椅坐标和激光雷达的坐标之间的转换是使用TransformBroadcaster来发送tf变换关系。发布tf变换需要附带5个参数:Rotationtransform、translationtransform,、timestamp、parentnodename、childnodename。坐标之前的tf变换可以通过rqt进行查看。48
32北京理工大学珠海学院2020届本科生毕业设计图4.7tf变换1.1.1sensorsources传感器信息如图4.1所示智能轮椅的导航功能需要实时采集外部环境信息。首先是为建立全局地图提供环境信息,其次是全局和局部的costmap的生成。无论是在导航还是在避障上,需要传感器都提供外界的信息。智能轮椅能够及时进行路线修正也是基于传感器提供的环境信息。激光雷达驱动文件中包含了雷达话题的发布。在路径规划中需要激光雷达发布sensor_msgs/LaserScan或者sensor_msgs/PointCloud格式的信息。本设计中使用的是Delat-2A激光雷达,可支持ROS驱动并且发布2D雷达信息或3D点云数据。图4.8节点信息1.1.2获取里程计信息odometrysource里程计信息是机器人的位姿和速度。机器人需要发布nav_msgs/Odometry格式的里程计信息同时需要发布相应的tf变换(odom-to-base_link)。48
33北京理工大学珠海学院2020届本科生毕业设计图4.9里程计信息获取里程计可以通过多种方法获取,例如通过IMU数据积分获取、电机编码器获取、laser_scan_matcherpackage(indigo)、robot_pose_ekfpackage等等。常用的是通过电机编码获取或者IMU数据积分获取。电机编码器获取需要计算电机前进速度、转向速度、机器人的位置信息,机器人的姿态。需要的6个参数:位置x,y、转角yaw、前进速度Vx,Vy和转向速度VthIMU是获取线加速度和角速度数据。需要注意的是IMU的线加速度和角速度数据都需要进行滤波处理后再进行计算。将数据进行计算后向主节点发布sensor_msgs/Imu的消息。1.1代价地图Costmap48
34北京理工大学珠海学院2020届本科生毕业设计Costmap即代价地图,它是一张二维的栅格地图。它是在依据传感器收集的外界信息后建立的并且在不断更新的2D或3D地图。在Costmap包含了通过传感器获取的外界环境信息,这些信息在处理之后会生成一张二维的栅格地图,作为导航的依据。图4.10costmap图4.10中,红色是障碍物,蓝色为根据轮椅轮廓的内切圆半径,在障碍处进行膨胀处理,即在蓝色面积内为危险区域。红色多边形表示的是机器人/轮椅的轮廓投影。Costmap中很好的划分了可行区域和危险区域,多边形不能与蓝色有交叉,否则即为碰撞。1.1.1Costmap信息放大Costmap可以发现它是格子组成的一张地图。在ROS中Costmap被划分成许多小格子(grid),即网格化,每个网格单元被赋予值(cellcost)从0~255。网格有三种状态:被占用、自由区域、未知区域。有障碍物的即是被占用状态,自由区域是无障碍可安全行驶,未知区域是激光雷达未探明的部分,随着信息的补充可以被完善。48
35北京理工大学珠海学院2020届本科生毕业设计图4.11cost图计依据根据图4.6所示,以障碍为原点,当轮椅与障碍物的距离小于或等于外切圆半径时处于碰撞的区域。越靠近障碍物其freespace的值越小。距离障碍物越远,它的cost值越高。根据式4.3可以计算出对应的cost值(式4.3)注:costmap_2d::INSCRIBED_INFLATED_OBSTACLE=254。由于cost_scaling_factor*-1.0,所以增大比例因子会降低代价值。调用ROS中的costmap_2d功能包可进行配置和维护costmap。Costmap中,costmap_2d功能包通过利用激光雷达数据和初始地图信息来存储环境中的障碍物信息。该功能包能够利用激光雷达进行实时更新。“costmap_2d::Costmap2DROS”是costmap中的主接口。costmap_2d可以进行二维索引,即可以只通过columns查询障碍物。Costmap_2d功能包中是将多层的信息进行叠加而组成的代价地图(costmap)。它共有3层:StaticLayer,ObstacleLayer,InflationLayer。代价地图为路径规划模块提供重要信息。1.1.1Costmap初始化流程move_base中包含2个costmap。planner_costmap_ROS_是用于全局导航的地图。controller_costmap_ROS_是用于局部导航用的地图。48
36北京理工大学珠海学院2020届本科生毕业设计图4.12初始化流程图在生成costmap图前需要对costmap进行初始化,以获取全局坐标系全局坐标系和机器人坐标系的转换。当系统可以读取tf变换后加载3个图层:StaticLayer,ObstacleLayer,InflationLayer。根据智能轮椅的俯视图提取轮廓,并在costmap中设置机器人的轮廓参数。设置完轮廓参数后可以进行话题发布,ROS中通过Costmap2D发布者来发布可视化数据。在costmap更新的过程中,需要确定轮椅是否有在移动,在ROS中通过movementCB函数进行监视。该过程中必须开启动态参数配置服务,更新map服务被可以被唤醒。1.1.1Costmap更新UpdateBounds、UpdateCosts是更新的两个步骤。Costmap的更新是调用ROSmapUpdateLoop包进行的。前面已经提到costmap的信息的储存是以图层的方式储存的。各层的信息独立储存,互不影响。所以在更新是也是各个层同时进行数据更新,这样大大提高更新效率。该阶段可以分为两个部分,第一部分是各自层的数据更新,在次阶段Static层是不需要信息更新的,它获取的是全局地图。当各自的层信息更新完毕后进入第二部分的更新,即将所有的数据拷贝到一个图层上,获得costmap。可以通过图4.8观察MasterMap的生成流程。48
37北京理工大学珠海学院2020届本科生毕业设计图4.13LayeredCostmapsforContext-SensitiveNavigation(源于DavidLu)初始时获取到的是上一个过程得到的结果,包括代价地图、静态地图,障碍地图,需要注意的是膨胀图层此时为空内容。在图4.8的b过程中障碍层发生变动,膨胀层开始工作。在各个图层确定更新区域的面积,获取边界。从静态图层开始然后是障碍层最后才进行膨胀处理,每一层都是使用UpdateCosts方法逐一将更新的区域映射到Mastercostmap上。图4.14inflationlayer的工作流程48
38北京理工大学珠海学院2020届本科生毕业设计1语音识别系统设计语音识别技术在目前的机器人领域中已经十分广泛的运用了,在日常生活中,手机上的语音助手,可以通过语音输入进行交互,就是应用了的语音识别技术。市场上的各类语音音箱也是以语音技术为核心。一些app中有语音转换功能也是运用了语音识别。而在智能轮椅上实现语音控制可以使用户更加方便快捷的使用轮椅。1.1工作原理语音识别可分为4个部分,即语音输入,编码,解码,输出。语音的输入是通过麦克风不断进行语言信号的采集,在树莓派中可以拓展麦克风接入端口。采集完数据后需要对原始信号进行处理,这里需要将数据转换成wav格式的音频文件以供计算机识别。对音频文件进行过滤,确定是否包含有效的语音片段。若包含有效语音,进行语言识别,对比约定的语音指令,符合运动指令语音则发送指令控制轮椅。若不含有效语音片段,如麦克风收到的语音为杂音等,不执行语音识别这一过程。筛选有效音频可以减少计算的时间和计算量。图5.1语音识别系统工作流程图1.2语音识别配置本设计是在ROS机器人平台上进行开发,因此需要在ROS配置语音识别功能包。ROS中的语音识别包是基于CMUSphinx和Festival发布的。在ROS调用ros-kinetic-audio-common功能包进行配置。该功能包分为4个软件包:audio_capture、48
39北京理工大学珠海学院2020届本科生毕业设计audio_playaudio_common_msgs、sound_play。audio_capture包含捕获音频并将其传输到目标位置以进行播放的代码。audio_play:从audio_capture节点接收音频消息。将消息输出到本地扬声器。audio_common_msgs:音频传输的消息定义。sound_play:播放声音文件和合成语音的软件包。在ROS中配置语音识别功能包只需要使用apt-get指令直接进行安装。然后安装ROS包。该ROS包中包含node节点。其中的recognizer.py文件可以开启麦克风收集语音信息,然后调用语音识别库进行识别并生成文本信息。随后通过/recognizer/output发布话题,其他节点可以订阅该话题进行后续的处理。使用roslaunch指令打开launch文件进行功能测试。图5.2语音识别节点图图5.3语音识别效果1.1语音控制48
40北京理工大学珠海学院2020届本科生毕业设计ROS包中已经将发布消息的节点封装在语音功能包中使用python语音编写的recognizer.py。我们知道节点之间建立联系需要通过“消息”这一媒介。在ROS语音功能包中已经包含了发布信息的节点,控制端作为接受消息的节点,我们同样需要编写一个py文件。该Py文件中首先要进行初始化节点,向主节点发布速度控制的Publisher。当监测到有语音输入且符合输入指令的内容时,发布速度指令。该过程中具体指令的分辨这一部分需要订阅pocketsphinx包进行字符的输出。图5.4语音识别和控制节点图48
41北京理工大学珠海学院2020届本科生毕业设计1仿真与展示1.1机器人仿真模型根据轮椅的三维建模导入到SOLIDWORKS进行urdf模型转化,获得XML文件并导入ROS仿真软件中进行仿真。将转化后的urdf模型放入仿真软件gazebo中进行环境仿真。图6.1轮椅proEurdf模型图6.2gazebo中的仿真环境1.2Gmapping_slam48
42北京理工大学珠海学院2020届本科生毕业设计配置并调用gmapping包进行环境地图扫描和导航操作,并生成costmap。可以在仿真中添加路径规划路线。图6.3执行gmaping指令进行导航图6.4扫描环境建立全局地图48
43北京理工大学珠海学院2020届本科生毕业设计在环境中放置障碍物,雷达可以扫描识别出来并且反应在costmap上。并且在前进的路径上出现障碍物上,轮椅会停下,避免碰撞。障碍物图6.4生成costmap1.1语音识别与控制语音识别指令是基于讯飞平台的语言识别库进行配置,在其官网提供的代码文件下进行修改以匹配需要的功能。同时还需要编写语音识别转化的话题发布与与订阅。实现语音控制需要发布一个cml_vel节点以供move_base订阅。图6.5语音识别与控制的节点图48
44北京理工大学珠海学院2020届本科生毕业设计图6.6执行语言识别指令执行指令rostopicecho/cmd_vel可以查看当前轮椅的运动参数,如图6.7所示,可以捕捉到语音输入中预定的行动指令并执行相应的运动。图6.7语音识别与控制效果48
45北京理工大学珠海学院2020届本科生毕业设计1结论与展望本文主要研究的是智能轮椅的导航避障问题。由于智能轮椅的的适用对象是情况的多样性,必须确保智能轮椅在使用时的安全与便捷,并且能满足使用者基本的使用要求。对于智能轮椅的研究开发时间比较长,也有许多的智能轮椅已经开始投入生产使用了。我们定下这个题目的时候希望能够在原有的基础上进行功能的再开发,使轮椅能够更加的贴合使用者的使用需求。通过研究各类成功的项目,我发现这些项目的技术含量都是比较高的,使用的各类传感器、智能轮椅的中央处理系统等的价格都比较昂贵,整个项目投入资金都是比较大的。这也导致了智能轮椅的开发成本比较高,所以在市场上少有的几款销售的智能轮椅其实功能并不多,不能真正给使用者带来便捷。并且这些智能轮椅的造价都比较高,许多人难以承受,因此市面上常见的其实是电动轮椅居多而非智能轮椅。那么我思考的问题在于如何使用我们所掌握的知识进行轮椅的升级化。在选择处理器时在选择了树莓派。树莓派其实可以说是一个教育用途的移动电脑,它是一款性价比高的处理器,可以支持多种系统的安装,支持ROS机器人平台的搭建。ROS是一个类似系统的机器人平台,是机器人开发领域的重要工具,它将许多复杂的底层代码进行封装成一个个功能包,在使用时只需要对其进行调用。在ROS中开发就简化了,变成一个个节点之间利用节点信息发生关系。对于我们目前的知识储备而言,单独进行导航或者语音识别技术的开发是有较大难度的,在ROS中可以进行调用。在ROS中虽然不需要自己完成底层代码,但是要使用软件包的过程也并不是那么简单。首先它是基于Linux语言,所以安装包的安装时需要通过代码进行一步步的安装。安装之后时进行软件包的环境配置、参数设置。在导航系统的实现上它的逻辑是先要建立环境的地图,然后是地图与指令下进行路径规划,开始执行运动。在执行的过程中实时避障,是通过局部地图进行。一旦在行驶的过程中出现costmap信息更新,判断出当前路径与危险区域有交集,即需要路径修正以达到避障行驶。对于本次的设计,我们还有未完成的目标,例如实现爬楼梯的功能、实现针对使用者的一些生命特征的监测,并将数据整理发送到监护人或社区医生,出现异常则能够警示的功能。48
46北京理工大学珠海学院2020届本科生毕业设计参考文献[1]表允晳,赵汉哲,郑黎蝹,等.ROS机器人编程[M].ROBOTISCo.,Ltd.:#1505,145,GasanDigital1-ro,GeumCheon-gu,Seoul,RepublicofKorea,2017年:41.[2]何清华黄素平黄志雄.智能轮椅的研究现状和发展趋势[J].中南大学机电工程学院.2003[3]刘钊.基于多传感器信息融合的智能轮椅避障及运动控制研究[D].北京工业大学.2015[4]徐国华,谭民.移动机器人的发展现状及其趋势[J].机器人技术与应用,2001(03):7-14.[5]钟嗣东,黄凯帆,邵泽宁,庄健怡,曹惠茹.基于人机交互的智能轮椅车研究[J].电子设计工程,2019,(第17期).[6]胡杰,喻洪流,石萍,符方发,张小满,何荣荣.一种多功能智能轮椅的控制系统设计[J].中国康复医学杂志,2016,(第11期).[7]张毅,徐仕川,罗元.基于ROS的智能轮椅室内导航[J].重庆邮电大学学报(自然科学版),2015,(第4期).[8]徐彪,蒋朝阳,朱健铭,陈真诚.智能轮椅室内导航路径规划算法[J].计算机系统应用,2015,24(08):171-175.[9]周晶.室内智能轮椅自动避障系统研究[D].南京师范大学.2014inDevelopmentalDisabilities,2014,9(35):26–34.[10]胡亮.智能轮椅运行状态无线监控系统的研究[D].天津:天津科技大学,2012.[11]张毅,郑潇峰,罗元,等.基于高斯分布重采样的Rao-Blackwellized粒子滤波SLAM算法[J].控制与决策,2016,31(12):2299-2304.DOI:10.13195/j.kzyjc.2015.1227.[12]Ibanez,AdrianLendinez;Qiu,Renxi;Li,etc.AnImplementationofSLAMUsingROSandArduino[J].2017IEEEINTERNATIONALCONFERENCEONMANIPULATION,MANUFACTURINGANDMEASUREMENTONTHENANOSCALE(3M-NANO),2017,\(\):1-6.[13]SinaD,SynS,JulianneU,AndreasH,WolfgangS,etal.Navigationwithinbuildings:Novelmovementdetectionalgorithmssupportingpeoplewithvisualimpairments.Research48
47北京理工大学珠海学院2020届本科生毕业设计致谢大学生活一晃而过,回首走过的岁月,心中倍感充实,当我写完这篇毕业论文的时候,有一种如释重负的感觉,感慨良多。首先要感谢的是我的论文指导老师文豪老师,感谢老师在我写论文期间悉心指导,对我论文思路内容、技巧和的一些指导建议和细心的解答,以及对我论文的严格要求,详细批改。文豪老师对我们的小组也是非常的关心,在整个毕业设计过程中多次询问完成进度并热心解答我们所遇到的疑惑。在毕业设计过程中遇到了很多的困难和障碍,都在老师和同学的帮助下坎坷地度过了。需要感谢我的队友每次在讨论过程中遇到阻碍时,都会跟我一起积极讨论解决问题的方法;在写论文时相互督促监督。尽管由于本次疫情的影响,我们不能够在一起进行实物搭建。在遇到技术难题时,感谢师兄的技术指导,让我最终能够顺利完成毕设。另外还要感谢我的舍友每次在我深陷论文的深坑时,总能刷到她轻松愉快的朋友圈,让我为之一震,然后继续填坑。总之,十分感谢这四年来一路帮助过我的老师和同学们。48
48北京理工大学珠海学院2020届本科生毕业设计附录附录1地图仿真启动文件48
49北京理工大学珠海学院2020届本科生毕业设计附录2urdf模型的XML文件48
50北京理工大学珠海学院2020届本科生毕业设计48
51北京理工大学珠海学院2020届本科生毕业设计附录3hector_slam启动launch文件48
52北京理工大学珠海学院2020届本科生毕业设计附录4语音启动launch文件、语言识别文件48
53北京理工大学珠海学院2020届本科生毕业设计48