【《商场智能导购服务机器人视觉识别系统设计》12000字】_第1页
【《商场智能导购服务机器人视觉识别系统设计》12000字】_第2页
【《商场智能导购服务机器人视觉识别系统设计》12000字】_第3页
【《商场智能导购服务机器人视觉识别系统设计》12000字】_第4页
【《商场智能导购服务机器人视觉识别系统设计》12000字】_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I商场智能导购服务机器人视觉识别系统设计摘要:伴随着智能购物在超市商场中的逐渐应用,利用人工智能因素能大幅度提高消费者的消费体验,也能使日常的购物变得高效快捷,基于ROS平台商场智能导购服务机器人则能很好的完成高效智能购物。本文从HectorSLAM建图,自动导航,语音交互,物品识别方面实现了商场智能导购服务机器人的研究。多次实验表明,该智能机器人方案可行,可完成相关指令操作。经过调查,我们发现目前国内绝大部分许多超市、商场都在运用手推小车进行选定货物后的载物以及运输,其自动化程度较低,且在购物时老年人、儿童以及残疾人等特殊人群需要特殊服务,需要提供一系列的特殊服务来解决其在购物时遇到的不便。在技术方面,关于服务机器人的SLAM建图和Navigation导航的技术已经比较成熟,但是关于利用雷达及kinect深度相机进行物品识别,及物品准确抓取的技术还不是很成熟,不能稳定、高效地处理上述问题,因此不能有效地将现有技术融入到超市智能导购机器人中,所以非常有必要对服务机器人的视觉识别,建图与导航进行专项研究。关键词:智能服务机器人;SLAM建图;视觉辨识;语音识别目录TOC\o"1-3"\h\u245941绪论 1232052ROS平台设计 3156123SLAM建图及自动导航 5205293.1SLAM建图 557753.1.1传感系统 7305783.1.2信息处理与控制系统 8238143.2自动导航 8263683.2.1SLAM过程分析 8242263.2.2SLAM服务框架主要实现了两个服务 997274视觉系统 13144134.1人脸检测 13119364.2物品辨识 15206445语音功能 19300956机器人零部件绘制 22225536.1支撑柱的绘制 2297376.2机器人底板绘制 23243866.3蜗杆的绘制 24326216.4机器人下身的绘制 25237036.5蜗轮轮心绘制 26267566.6转向轮机构 2713266.7减震垫画法 29117316.8涡轮轮缘 29143817结论 3119378参考文献 321绪论人民生活质量的稳步提高及科学技术的快速发展,机器人技术也慢慢地从工业领域向了大众日常生活渗透,在平时的生活中各类的智能服务机器人所表现出来的作用及影响也越来越大,其有着良好的发展前景和广阔的市场空间。为提高生活效率,减少时间宝贵的上班族在商场购物时寻找商品的繁琐枯燥,在人流高峰期排队结账的无奈与困扰,以便将有限的时间投入到更加有意的事情上去,因此人们对日常购物中的商场智能导购服务机器人的关注程度愈来愈多,商场智能导购服务机器人也将在人们生活中扮演越来越重要的角色。有海外机构对智能服务机器人的销售情况做过粗略的统计,其统计结果所表现出在二零一五年至二零一八年全球的服务机器人的销量已达到三万五千台。其中服务机器人种类占比前三的是家庭服务机器人、清洁机器人及除草机器人,商场服务机器人随着所占市场份额的逐年提升,其发展前景很是广阔。现有的智能服务机器人各项功能基本可实现稳定运行,但是其成本造价极其昂贵,对于普遍性的大众来说性价比不是很高。近年来“互联网+”及人工智能、中国智造国家战略的部署,相信在不久的将来,商场服务机器人也将会像电脑、手机一样与大众生活息息相关,商场智能导购服务机器人所展现出的蓬勃生命力也将会深刻影响人们以后的生活,推动改变人们社会生活。商场智能导购服务机器人所具有的功能齐全、性能稳定、操作方便、安全性可靠等特点,可以较好地满足市场消费者的使用需求,所以受到海内外研发者和投资者的青睐,对商场智能导购服务机器人的研究具有实际意义和广阔的市场前景。SLAM建图及视觉系统是智能服务机器人不可或缺的应用条件之一,海内外诸多学者均对这方面有着高度关注及研究。以Ubuntu系统为平台,在其上建立ROS机器人操作系统,其中包含科大讯飞语音包、SLAM建图软件包、自动导航及预设航点软件包、机械臂运行抓取软件包和一些通讯架构共同组合组成,这些软件包的组合运行可实现把SLAM建图,自动避障导航,人机语音交互,人脸检测,物品识别等多功能集为一体的智能服务机器人。在其基础上,在加装与其型号匹配的自由度较高的机械臂,通过Ubuntu系统上的指令操作也可完成抓取商品物件的动作,是智能服务机器人的功能更加的完善,更有利于为顾客消费者提供便利。该智能服务机器人的运作可分为三步骤:(1)服务机器人会利用软硬件和360°激光雷达对所处地域环境进行扫面建图,同步可建立实时数据库,以此进行服务机器人的自动导航及避障功能。(2)服务机器人的头部安装有一枚面阵麦克风,可实现对语音数据的采集,快速准确的识别关键字词等有效信息,在实际商场环境应用中,可用来接收人们所发出的语音指令。(3)服务机器人的头部装备有一台Kinect2视觉传感器,可实现对人脸、物品的图像采集,采集到的图像可在Rziv中查看其数据形态,可进一步进行人脸识别和物品辨识的相关功能操作。(4)在商场智能导购服务机器人的支撑杆上加装的机械臂,可根据指令或消费者的需求完成夹取物品的相关操作。伴随着各项技术的优化及发展,商场智能导购服务机器人一定会成为为人类服务的好助手,日常生活中的好伴侣。2ROS平台设计该服务机器人使用的启智ROS是目前全球最通用的版本,同样也是当前国内外在市场上使用率最高,运用范围最广泛,服务人群最多的一款ROS版本。该服务机器人开发环境、系统运作使用的是RoboWareStudio,RoboWareStudio是ROS的一款IDE,基于微软开源的VSCode开发,功能比较强大,使得开发更加快速、简单,是目前最好用的ROS开发工具。该服务机器人ROS平台设计为这几个部分:节点、节点管理器、消息、主题、服务。节点为ROS中执行任务的进程,一个软件系统可以有多个节点构成,在ROS中每一个节点负责一个任务,从而对每个节点实现松散耦合,不这些多个节点可以构成一个完整的系统。消息(Message)是节点和节点之间交流信息的载体,消息包每个节点之间的函数。每个都有统一的、固定的、通用的消息标准,消息对于每个数据类型的运行与调用可以实现很多种的组合与拆分方式进行,故还可以延续运用上一个的消息类型,还可以根据设计人员或者是客服的实际需求进行特定的、有个性的数据结构设计。传递消息方的式还可以通过像接收、发送邮件的类似方式进行,在ROS系统中,节点作为电子邮件的订阅者或者是电子邮件的发布者,优先对话题(Topic)的类似于电子邮件的订阅和接收。通信模式除了发布订阅模型之外还必须满足其他通信需求。在ROS中也包括类似与B/S模式的通信,它是基于客户端服务器(Client/Server)模型,当请求和应答是成对的消息结构时需要通过这种方式来进行为了各个节点有效的管理,使其有效的执行,ROS中提供了节点管理器(Master),Master保存所有节点的信息,对所有节点的提供查找与维护,帮助节点之间的有效的通信,Talker/Listener都必须注册到管理节点(ROSMaster)从而使得整个系统的几点之间可以相互发现并能够通信。同时Master还提供参数服务,管理全局参数。Master在ROS中作为全局管理者,有着重要的作用。服务机器人系统本身具有极高的复杂度,组件众多复杂,特别是ROS中提供的大量组件,如包括机器人模型、轨迹生成算法以及自主建图与定位算法、使用Dijkstra最短路径规划等算法。同时基于ROS可扩展性的特点,可以增加服务功能组件,平台层可以开发人表情识别、行为分析、场景识别与理解、语音交互等功能和服务机器人的推理决策等相关组件。通过将ROS以及相关组件部署云端并以服务形式提供,是构建ROS平台的基础。一个系统需要稳定高效的运行除了完成功能性要求之外还需要满足一定的非功能性的特性。该机器人的硬件结构有1080P摄像机、面阵麦克风、机载平板电脑、立体扬声阵列、360°激光雷达、微型PC(常用的开发板有树莓派,RK3399等等,还有很多传感器:比如视觉的,都是直接与嵌入式开发板硬件连接进行数据交互。)、三轮全向底盘(本部分搭建启智ROS机器人底盘、ROS相关的运动单元、系统控制部分。底盘上还装有的STM32主控板。其中STM32主控板需要拥有以下基本功能,执行机构:直流电机带动主动轮。驱动系统:电源子系统,维护整个机器人的电源需求;电机驱动,电机驱动模块和电机控制模块;传感器接口:光传感器、位置传感器、编码器;遥控器等。其中驱动系统负责驱动执行机构。)等组成,如图2.1所示。图2.SEQ图\*ARABIC1机器人结构简图服务机器人可通过记载平板电脑运行程序指令,将信号传输给三轮全向底盘进行自动导航和智能避障。亦可通过面阵麦克风采集的语音指令,经过系统数据处理后进行,利用Kinect2视觉传感器进行一些列的视觉任务。

3SLAM建图及自动导航3.1SLAM建图及时定位与地图构建即SLAM技术运行的准确及流畅是启智ROS机器人能否完成自主运动,自动避障的前提所在和关键问题所在。ROS系统兼容性强,可以支持好几种的SLAM运行算法,其中主流的是Hector和Gmapping,本机则采用的是HectorSLAM算法。将服务机器人放置于模拟的商场环境中,将机器人的USBType-c连接到机载平板上,启动360°激光雷达,并移动机器人,以设定速度360°飞速运行的激光雷达配合测距传感器可将商场环境里的障碍物位置和分布情况扫描出来,并在ROS系统上绘制出二维平面的点集。扫描所绘制的点集可在Rviz中进行查看。打开Rviz即可看见系统里模拟机器人的周边附近存在很多有规律来回跳动的红颜色点集,此及本次通过激光雷达所扫描出来收集到的数据。在Rviz系统里,其把水平地面基准做成了由多个水平线和垂直线相互交错的大网格形状,其中每一格换算到现实实际就是精确的一百厘米距离,故也可通过Rviz系统里的这个点集,观察和辨别出此时的智能机器人与障碍物的位置距离关系。通常情况下,距离传感器所测量的距离与实际会存在一定量的微小测量偏差,因此所采集到的点集,会在一个微小的允许误差范围内往复跳动。将智能机器人推动环绕所需要扫描的场地一圈后,就可将所扫描的地图保留下来。在扫描地图的时候,可在Rviz系统里观察到,智能机器人所处位置一定范围内的地面基准会变了灰颜色,但是智能机器人脚下则是一块白颜色的图案。线构成面,所观察到的白颜色的图案是由大量的线所构成,这些大量的线条是由智能机器人以自身机位为中心,与激光雷达所发射的红颜色数据点所构成的连线,该线条所表达的意思是:该线段内没有检测到障碍物。在Rviz系统里观察到的图像中,存在运动行为的障碍物会被360°激光雷达所捕捉如商场中行走的顾客及宠物,会在图像中显现为红颜色;还没有被激光雷达所扫描到及处于激光雷达扫描之外的位置则会在系统里标记为灰颜色;在扫描的范围内存在的静态障碍物如凳子商品货架等则会被标记为黑颜色;在已扫描的会为内没有固定障碍物及其他运动障碍物的区域则会被标记为白颜色。如图3.1所示。图3.1SLAM建图3.1.1传感系统(1)距离传感器距离传感器主要用来感知服务机器人与周围障碍物的距离,使得服务机器人在执行任务的过程中能够避开障碍物。常用的距离传感器有声纳、激光雷达、Kinetic等。声纳或超声波传感器检测到的信息为一维点距离,Kinetic价格较贵,而激光雷达的精度较高,并且能够获取二维数据,因此本文选用激光雷达作为距离传感器。机器人通过激光雷达的二维点云数据可以生成二维平面图,更加有利于服务机器人在空间移动,ROS系统下激光雷达的数据接口代码如下:[sensormsgs/LaserScan]:stdmsgs/Headerheaderfloat32angle_min//开始扫描角度float32angle_max//结束时扫描角度float32angle_increment//扫描时递增的角度float32time_increment//测量时间间隔float32scan_time//扫描时间间隔float32range_min//距离最小值float32range_max//距离的最大值float32[]ranges//一帧距离数据的存储数组float32[]intensities//数组长度(2)里程计服务机器人移动时发生的位置变化可以通过里程计的传感数据来获得,在服务机器人中较为常见的为编码器,通过编码器可以计算出服务机器人在单位时间内移动的距离从而获得机器人的速度以及位置,是服务机器人SLAM建图与避障导航的基础。3.1.2信息处理与控制系统服务机器人控制系统是机器人主体的关键,其主要控制服务机器人在执行服务任务时进行数据采集处理、运动状态的控制、数据的接受发送、以及相关设备的驱动等。虽然将计算密集型任务通过云平台进行处理,极大的减轻了服务机器人本身的压力,但是其基本的功能仍需要通过自身的控制系统如设备驱动、电机控制等。通过将服务机器人端的计算密集型任务部署到云平台进行处理,服务机器人端主要负责环境数据采集和预处理以及最终结果执行,在服务机器人构建完成相应的传感和执行系统后,信息处理系统通过订阅云平台的服务即可执行相应的服务任务,云平台处理并下达指令,服务机器人通过接受命令并执行任务,由此可知信息处理与控制系统是与云平台交互的关键。3.2自动导航3.2.1SLAM过程分析在传统服务机器人的同步定位与建图问题研究过程中,通常在服务机器人本地配置SLAM模块,在本地完成算法的执行与结果的处理,然而在基于“云计算+服务机器人”的分布式系统下,SLAM过程的数据处理的各个节点(数据采集预处理、SLAM算法的执行过程、结果的处理与保存等)在服务机器人与云端进行合理的划分是进行SLAM迁移到云端要解决的问题,不同的科研机构对机器人架构设计各不相同,因此在SLAM各个阶段的处理上也不尽相同。DAvinCi在服务机器人阶段就完成了数据的收集,而在DAvinCi服务器端完成数据的预处理,在云服务端完成SLAM算法的执行,最终将执行结果通过DAvinCi服务器端返回给机器人。Rapyuta在机器人端完成数据的采集,将数据的预处理和SLAM放在云服务端进行执行等。由此可以看到SLAM过程数据处理执行各不相同,一般而言服务机器人端完成数据的采集,算法的执行会放在云端,数据预处理部分会有所不同。3.2.2SLAM服务框架主要实现了两个服务将本地SLAM的执行变为向云端的申请;通过在服务机器人端实现相应的功能包使得服务机器人本身在接受任务时能够向云端发送请求,从而实现了SLAM服务申请的过程。完成了服务机器人分布式协同SLAM的服务机人本体的部分。通过该节点的设计并没有改变服务机器人本体的结构以及其他功能上的使用,而是仅仅是将该功能节点通过ROS分布式的特性进行了重新的拆分和设计即可。服务机器人端请求SLAM服务时会向云端发送相关请求参数,而云端接收到来自服务机器人端的SLAM请求以及相关数据类型参数后与服务机器人建立持续的数据交互通道,将服务机器人本地采集的数据进行接收存储,并执行相应的SLAM节点,最后将执行的结果保存返回,供其他服务模块使用。(2)云端处理服务机器人本体申请的SLAM服务请求。服务机器人通过云端来实现SLAM的过程中,需要在服务机器人本身开启所有的数据采集模块,同时由云端协同执行SLAM服务,服务机器人本体是被动执行的,为了能够实现服务机器人主动申请SLAM服务,首先服务机器人执行服务时能够向云端进行SLAM服务的申请,其次能够根据SLAM类型自动的调用相应的传感器数据。基于以上的需求,实现了相应的Request_slam模块。在Ubuntu系统中打开运行Rviz系统,即可观察到Rviz系统模拟的智能机器人出现在我们所已近扫描过并建好的商场地图里。这个时候的地图中,扫描的范围内存在的静态障碍物如凳子商品货架等被标记为黑颜色的周围,浮现出一定宽度的蓝颜色色带,此蓝颜色的色带反映到实际即为安全区域的边界。换句话说说就是在智能机器人实际运行过程中,如果不小心接触或者驶进这个蓝颜色色带,就会存在安全隐患如与凳子、商品货架、墙壁等一些静态障碍物发生摩擦碰撞。Rviz系统在刚启动的时候,智能机器人所自我默认的位置会被当成所扫描商场地图的始发点,也就是会把我们在进行商场建图时的出发点当作本次运行的始发点。但是在商场开始进行自动导航的时候,现实商场里面的智能机器人由很大概率并没有在商场建图时的出发点开始启动运行。理论与现实商场运行所存在的这个问题,我们在Rviz系统运行的时候也可观察到,实际商场智能机器人的位置与Rviz系统图像显示的存在一定量的偏差,如果在智能机器人运动之前未能消除这个偏差,那么自动导航及智能避障将无法完成。修正误差使智能机器人到始发位置后,我们就可以在Rviz系统上通过鼠标或者用手在触屏面板上设定航点,即需要让智能机器人需要运动到商场的目标商品货架的点。在设定航电的时候,屏幕上会显现带箭头的绿色线段,如果我们用的是触屏面板的话,手指摁在触屏面板上不放并轻轻滑动箭头朝向,则可设定智能机器人到航点或目标商品货架的朝向,此设置是为后面智能机器人完成商场物品的识别及抓取做准备。设定完航点及智能机器人的朝向后,系统会自动生成一条最优的行动路径,该路径会在Rviz系统图像中显示紫颜色。观察可发现,系统所自动生成的路线是从本机的始发点出发,绕过了所建商场地图的所有蓝色色带区域(及安全边界)。如图3.2,3.3所示。设置航点的程序大体如下:if(nState==STATE_ASK){//从识别结果句子中查找物品(航点)关键词stringstrKeyword=FindKeyword(msg->data);intnLenOfKW=strlen(strKeyword.c_str());if(nLenOfKW>0){//发现物品(航点)关键词strGoto=strKeyword;stringstrSpeak=strKeyword+".OK.Iwillgotogetitforyou.";Speak(strSpeak);nState=STATE_GOTO1;//发现物品(航点)关键词strGoto=strKeyword;stringstrSpeaks=strKeyword+".OK.Iwillgotogetitforyou.";Speak(strSpeaks);nState=STATE_GOTO2;//发现物品(航点)关键词strGoto=strKeyword;stringstrSpeakd=strKeyword+".OK.Iwillgotogetitforyou.";Speak(strSpeakd);nState=STATE_GOTO3;//发现物品(航点)关键词/*strGoto=strKeyword;stringstrSpeaka=strKeyword+".OK.Iwillgotogetitforyou.";Speak(strSpeaka);nState=STATE_GOTO4;*/}}图3.2自动导航图3.3SLAM建图中设定航点方向

4视觉系统4.1人脸检测服务机器人头部Kinect2可在距离商场顾客一定范围内进行人脸的检测。与此同时也可通过RGB和Depth的一对一,一对多的函数关系,可将所检测的人脸数据信息建立在三维坐标系统中,特别适合在房间商场中找人的相关应用。运行程序,将人脸检测的的系统进行初始化,建立一个新的tf_listener用来进行采集数据转换点云三维坐标,订阅Kinect2输出的RGB彩色数据主题用于检测人脸,再调取Kinect2的三维点云数据来采集人脸的空间位置,发送一个称之为“/face/image”的数据,此系统对数据进行实时分析,再发送一个称之为为“face_marker”的数据,以便在Rviz系统中显示人脸在三维空间中的关系,然后发送一个称之为“face_pointcloud”的数据,在智能机器人Kinect2采集数据人脸进行分析,及人脸周围空间的渲染。人脸检测的大体步骤完成后,将程序函数循环,即可完成相关指令操作,如图4.1,4.2所示。图4.1人脸检测图4.2模拟人脸检测流程图流程的各个步骤解释如下:①开启摄像头。开启摄像头为人脸识别的前置步骤。为输入原始的视频帧,必须先开启服务机器人的摄像头,便于在较好的光照环境下接收含有人脸的视频帧,作为之后人脸识别的数据源。②输入视频帧。借助服务机器人的摄像头采集到视频帧。③预处理。利用光照补偿和图像降噪处理每一帧的视频图像。光照补偿能够降低真实场景下光照因素的干扰,而图像降噪能够消除突出的随机噪声点,两个操作能够提升人脸识别的准确性。④提取HOG特征。图像预处理完毕后,利用算法提取图像的HOG特征。⑤匹配人脸检测器。将图像中提取出的HOG特征与先前训练好的人脸检测器进行比较,获得符合条件的检测结果,即图像中的有效人脸区域。⑥判断是否存在人脸。如果匹配人脸检测器后的结果中存在有效人脸区域,则进行下一步操作。如果不存在有效人脸区域,则返回第2步操作,重新输入视频帧进行检测。⑦利用ResNet提取特征描述子。将获得的有效人脸图像输入到训练好的ResNet模型,得到128维的人脸特征描述子。⑧相似性度量计算。获得视频帧中的人脸特征描述子后,与数据库中已记录的每种人脸特征描述子依次比较,算出对应的欧氏距离,然后取距离值最小的值。⑨判断是否存在可识别人脸。将上一步获得的距离值与相似性度量阈值进行比较,如果小于等于相似性度量阈值,则判定该人脸在数据库中识别成功。如果大于相似性度量阈值,则返回第2步操作,重新输入视频帧进行检测。⑩输出人脸信息。人脸识别成功后,在前端以语音方式输出该人脸对应的姓名,同时在数据库的记录表中增加一条识别数据,作为备份信息。4.2物品辨识服务机器人在未知环境中完成特定任务时,需对所在环境空间进行建模,模拟人脑思维方式描述环境空间,以实现机器人对环境空间的深层次认知,进而更智能化的完成服务型任务。物品作为环境空间中最基本的存在,最初的环境认知仅仅是对空间中物品的视觉感知,并进行检测与识别,在此阶段中涌现出大量的特征算子与描述符。在认知环境空间物品的基础上,Fisher等捕捉物品与周围环境之间的结构关系,并表示为编码模型与语义关系图形,以实现对物品所处场景空间的认知与理解。当机器人执行服务任务时,需对整个工作空间进行探索并感知环境信息,单纯的场景空间认知与理解己不能保证机器人稳定的工作,应扩大机器人感知范围,形成更深层次的全局认知。物品快速搜寻策略框架分为三个主要模块:构建标识归属关系模块、功能区域划分模块以及构建马尔可夫链概率模型模块。具体实现流程如下:(1)构建标识归属关系模块:服务机器人根据已构建好的室内栅格地图,逐步遍历整个工作空间,利用Kinect2视觉传感器感知环境空间,获取不同视角下的3D场景点云图,并采用主成分分析法和质心坐标法提取场景中的地面。然后采用改进的区域生长分割算法进行物品聚类,并以是否与地面凸包相交和点云数目作为判别依据,将物品划分为标识物品和归属物品。最后,分别提取两类物品的CVFH特征并基于卷积神经网络检测模型获取物品语义,构建含物品特征信息和语义信息的标识库与子归属库,同时关联每个子归属库所属的标识物品,形成标识归属关系。(2)功能区域划分模块:首先在服务机器人扫描整个工作空间的过程中,将移动相等时间间隔后到达的位置设置为观测节点,并在每个观测节点上以90°为旋转角度,获取不同方位下的二维场景图。然后提取场景图的视觉特征和几何特征作为相似度标准,依此判别观测节点间联通关系,形成无向加权图。最后基于卷积神经网络进行分类完成组划分并确定每组的功能属性,依据子组之间是否存在联通节点确定组间联通关系,形成以功能房间为节点的室内拓扑地图。将每个房间内的标识归属关系与功能房间进行关联,形成以归属物品-标识物品-功能房间为层次的三级归属链。(3)首先推断出物品存在于每个房间内的概率,并结合房间间和房间内的物理影响因素,基于贪心算法生成初始搜寻策略,并根据搜寻结果及时更新三级归属链。通过多个搜寻周期后,针对存在多个三级归属关系的物品,利用概率论与数理统计原理,依据所有搜寻结果构建马尔可夫链概率模型,并依据此概率模型反向优化初始搜寻策略,最终形成以概率形式描述的物品语义归属信息。智能机器人头部Kinect2可以识别商场货物图像,可以用于对商场里的商品进行数据收集。智能机器人通常接收到顾客需要找到某些商品的指令,这些商品通常放置在商场的货架或桌子上,使用该物品辨识方法,能先将货架上的商品识别出来,并收集数据将其建立在三维坐标里面。运行系统,之后操作的大体步骤和人脸识别的方法大同小异,如图4.3,4.4所示。图4.3物品辨识检测结果图4.4商场物品辨识物品辨识的程序大体如下:staticintnState=STATE_WAIT_ENTR;//程序启动时初始状态;//识别结果staticstringremember_placement;//记忆物品地点staticstringremember_object;//记忆物品staticstringfind_placement;//识别物品地点//识别标记staticboolbRemebered=false;staticboolbFound=false;//识别关键词staticvector<string>arKWPlacement;staticvector<string>arKWObjece;staticvoidInit_keywords(){//地点关键词arKWPlacement.push_back("休闲食品区");arKWPlacement.push_back("日常生活用品区");arKWPlacement.push_back("水果区");arKWPlacement.push_back("蔬菜区");//物品关键词arKWObjece.push_back("water");arKWObjece.push_back("chips");arKWObjece.push_back("milk");5语音功能基于语音的人机交互而言,语音唤醒是基于语音交互的第一入口,其作用为:在连续语流中实时检测出说话人特定片段。使用语音唤醒的最主要目的,一是使系统不需要时刻运行节省能耗,二是避免误触发造成未知的后果。采用的语音唤醒方法是基于科大讯飞公司的语音唤醒引擎并进行二次开发。该方法需采用在线的方式进行配置,并需要将其集成到语音识别系统中。具体设置方式为在其Web页面进行配置,每次更改唤醒词需重新下载资源文件并放置在程序指定的路径下,第五章有详细的实验情况。程序运行并加载资源后,系统处于休眠状态,使用静音检测功能时时监听,当有声音信号产生时,调用语音唤醒模块。如果是用户说出的唤醒词,则调用语音识别模块进行后续的处理。针对在线语音识别和开源方案存在的问题,选择的方案为,基于科大讯飞的离线识别引擎并针对本课题需要处理的指令构建一个封闭域离线识别系统,并将其集成到移动机器人人机交互系统中。在正式开始识别前,需要配置语法文件,将用到的句型写入语法文件里并进行构建。然后,语音唤醒成功后,调用语音识别并输出文本到自然语言处理部分。服务机器人头部安装了一枚面阵麦克风,在实际商场工作运行中,用来收集顾客发出的语音指令。在ROS系统的历代开源发展中,科大讯飞语音包是一款比准确、高效的语音识别包,其经过国内外学者的共同研究优化,所以拥有运行效率高,识别迅速等一系列特点。运行程序,语音识别的程序大体如下://语音说话函数,参数为说话内容字符串staticvoidSpeak(std::stringinStr){sound_play::SoundRequestsp;sp.sound=sound_play::SoundRequest::SAY;mand=sound_play::SoundRequest::PLAY_ONCE;sp.arg=inStr;spk_pub.publish(sp);}//语音识别结果的回调函数voidKeywordCB(conststd_msgs::String::ConstPtr&msg)//const常量,std_msgs::String为类,ConstPtr&msg为常指针,指针作传入函数{//ROS_WARN("[KeywordCB]-%s",msg->data.c_str());intnFindIndex=0;//定义的变量,与语音有关nFindIndex=msg->data.find("Followme");//开始跟随的语音指令关键词,可以替换成其他关键词if(nFindIndex>=0){//从语音识别结果中提取到了"Followme"字符串,说明已经接收到跟随开始的语音指令//ROS_WARN("[KeywordCB]-开始跟随");Speak("OK,Let'sgo.'");//语音回应发令者wpb_home_tutorials::Followsrv_start;srv_start.request.thredhold=0.7;//目标跟随的距离值,单位为米,thredhold为视觉函数,门槛,限制距离if(follow_start.call(srv_start))//调用启智ROS的跟随服务{ROS_WARN("[KeywordCB]-followstart!");//调用服务成功nState=STATE_FOLLOW;//调用成功了,改变状态机的状态值到跟随状态}else{ROS_WARN("[KeywordCB]-followstartfailed...");//调用服务失败}}nFindIndex=msg->data.find("Stop");//等10秒的语音指令关键词,可以替换成其他关键词if(nFindIndex>=0){//ROS_WARN("[KeywordCB]-停止跟随");Speak("OK,Iwillstayherefor10seconds.'");//语音回应发令者wpb_home_tutorials::Followsrv_stop;if(follow_stop.call(srv_stop))//调用启智ROS的跟随停止服务{ROS_WARN("[KeywordCB]-stopfollowing!");//调用服务成功sleep(4);nWaitCnt=10;nState=STATE_WAIT;//调用成功了,改变状态机的状态值到停止等待状态}从msg->data中查找是否存在控制运动的关键词,这里使用的是“forward”、“backward”、“left”、“right”和“stop”五个关键词:PocketSphinx识别的关键词存储在wpb_home/wpb_home_tutorials/sr的voice_cmd.corpus文件中,而同目录下的voice_cmd.dic和voice_cmd.lm分别是它的词典和声音模型,这个两个文件的加载,是写在voice_cmd.launch文件中。待启动信息稳定后,可以对麦克风说出语音指令,观察终端显示信息里是否出现了所念的关键词。在智能机器人识别出关键词后,打开主控电源和红色急停开关,发布语音指令关键词控制机器人移动。6机器人零部件绘制6.1支撑柱的绘制首先绘制支撑柱主视图,支撑柱主要分为三阶,其高度分别为170、150、100,其圆柱直径分别为200、160、100,其端面倒角为4mm的45度倒角。然后绘制支撑柱中间通孔,通孔直径为50,最后进行尺寸标注与粗糙度标注。具体绘制图样主视图、俯视图如图6.1,图6.2所示。图6.1支撑柱主视图图6.2支撑柱俯视图6.2机器人底板绘制机器人底板主视图的绘制,利用多边形指令设置边数为6,边长为500,选择中心点。然后在x轴y轴上距多边形中心点距离为610绘制4个标记点。在标记点处,画半径为100的圆,然后利用修剪工具修剪多余圆弧段,然后利用偏置指令进行偏置距离为2的向外偏置。再在相对应的位置上绘制直径为8的小孔。最后进行尺寸标注与形位公差标注。具体绘制图样如下图6.3所示。图6.3机器人底盘主视图机器人底板俯视图绘制,底板厚度为90,并在相应位置绘制虚线,表述底板内部结构轮廓,最后进行尺寸标注与形位公差标注。具体绘制图样如下图6.4所示。图6.4机器人底盘附视图6.3蜗杆的绘制蜗杆主视图的绘制,蜗杆主要分为连接轴、阶梯轴、蜗杆执行部分三个部分。连接轴处,绘制直径为22长度40的回转体,再于连接轴基准线上绘制普通圆头平键,键长为24,键宽为6,绘制平键所在平面断面图如下图6.5所示。绘制阶梯轴部分直径为73,然后绘制蜗杆执行部位外直径为75.6,内直径为63。然后利用倒角命令,对蜗杆两端面以及执行部分两端进行2mm的45度倒角,并将各轴段连接处设置半径为2的圆角命令。最后进行尺寸标注与形位公差标注。具体绘制图样如下图6.6所示。图6.5蜗杆连接轴断面图图6.6蜗杆主视图6.4机器人下身的绘制机器人下身是由普通碳素结构钢铸造而成,首先绘制机器人下身主视图,其高度为300,其圆柱直径分别为1379、1476,其宽度为10,其端面倒角为4mm的45度倒角。然后绘制机器人下身的垫板,垫板直径为1530,高度为20,宽度为10,最后进行尺寸标注与粗糙度标注。具体绘制图样主视图、俯视图如图6.7,图6.8所示。图6.7机器人下身主视图图6.8机器人下身俯视图6.5蜗轮轮心绘制机器人蜗轮轮心的绘制,新建空白文件,将“中心线”图层设置为当前图层,绘制垂直相交的中心线,以中心线的交点绘制直径为68.8的圆。使用“偏移”功能,将垂直中心线向左右分别偏移8,将水平线向上偏移6,然后修剪图形,及图6.9所示。利用“偏移”和“修剪”按钮绘制出蜗轮的外轮廓线,绘制2m的45度倒角,将水平中心线上移105,并以轮廓线的中点绘制一条竖直线,与偏移的水平中心线相交,将绘制的轮廓线沿水平中心线进行镜像,得到全部轮廓线,然后填充剖面线。最后进行尺寸标注与粗糙度标注。具体绘制图样如下图6.10所示。图6.9蜗轮轮心图6.10蜗轮轮心剖面图6.6转向轮机构转向轮机构如图6.11所示图6.11转向轮机构首先主视图画出中心线,以中心线为中心轴画出一个直径为95的正方形,然后紧接在正方型的下端画出两个长方形尺寸分别为常为220和200宽都为10,在其下方画一条1.3的虚线,再以距离中心轴50的两端为起点角度分别为79.9度和82度任意画足够长直线,以距离底端326.5距离中心轴50的点为圆心分别画直径25和半径43.3的圆可以看到大圆和之前的两条线相切,把多余的线段删除,最后进行尺寸标注与粗糙度标注。具体绘制图样如下图6.12所示。图6.12转向轮主视图左视图和俯视图画法与主视图大致相同,具体绘制图样如下图6.13所示。图6.13转向轮左视图与俯视图6.7减震垫画法首先画出两条垂直的中心轴线,平面上下和左右分别对其画一个常委160宽为90的平面分别对其四个直角进行圆角的操作,圆角半径都是5。四个角分别距离旁边两条直线15和12.5的位置为圆心画4个直径为11的圆,最后进行尺寸标注与粗糙度标注。具体绘制图样如下图6.14所示。图6.14机器人减震垫6.8涡轮轮缘先绘制出中心线,以中心线为对称轴画出长为322宽为52的矩形,上下两端分别设置一个点,该点距离中心线为180并且位于垂直中心线上,以这两点为中心半径为22画圆再裁剪多余部分。以水平中心线为基准画深度为6的槽,槽左端画一个C1的倒角。最后进行尺寸标注与粗糙度标注。具体绘制图样如下图6.15所示。图6.15蜗轮轮缘

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论