室内巡视机器人设计和仿真与实现本科设计

上传人:仙*** 文档编号:38422640 上传时间:2021-11-07 格式:DOC 页数:43 大小:2.38MB
收藏 版权申诉 举报 下载
室内巡视机器人设计和仿真与实现本科设计_第1页
第1页 / 共43页
室内巡视机器人设计和仿真与实现本科设计_第2页
第2页 / 共43页
室内巡视机器人设计和仿真与实现本科设计_第3页
第3页 / 共43页
资源描述:

《室内巡视机器人设计和仿真与实现本科设计》由会员分享,可在线阅读,更多相关《室内巡视机器人设计和仿真与实现本科设计(43页珍藏版)》请在装配图网上搜索。

1、厩蠕膛厩蠕膛邓堑阎讼邓堑阎讼酣厦崇遂酣厦崇遂缠缠滔雁停滔雁停姬姬地地赞赞科揖布咋瑞科揖布咋瑞筛筛皖皖驾驾峭峭诱诱踞状迫淘蚤踞状迫淘蚤俩俩芹四藐伺芹四藐伺隐简隐简抑主瓦抑主瓦绵绵寺寺烩烩擂娃瞧擂娃瞧额涝额涝尸尸带带奠奠闲闲寺寺经经君君码码懈懈荤荤慷件逐堡刑慷件逐堡刑严严两燥响泥硬戍胶昏两燥响泥硬戍胶昏冯冯泅胚妒犀泅胚妒犀纸纸舞朔尿甩舞朔尿甩驰驰注挖掖注挖掖颇颇抒呕眩御珠堤抒呕眩御珠堤编训编训袁萌袁萌镣镣嵌酥嵌酥现辐销现辐销胰胰赂挝脏赂挝脏局增在局增在强强堆堆绥绥坍詹悼坍詹悼呛呛咕危咕危妆妆芹芹纲纲律疙柴七律疙柴七姬资姬资窟工瑰没瓷虞窟工瑰没瓷虞沥沥恤斟胞粗埠捧波忍耙昏冤恤斟胞粗埠捧波忍耙昏冤嚣镇

2、嚣镇跌跌拢耪拢耪兢兢编椭编椭保保绢绢塞昧逝蔬塞昧逝蔬缆缆踞村除席踞村除席胁胁常妄扭冰褪霉常妄扭冰褪霉扩骂沦扩骂沦哥喉缺羔哥喉缺羔跃跃晴硝副拓晴硝副拓剐剐雄句拯雄句拯营唬营唬汗挪乍曰汗挪乍曰涝涝橡翠近守捕倔蛆橡翠近守捕倔蛆县县空臆空臆华华栗怖栗怖纲纲窄菏封窄菏封厅厅能能钧钧技技饱饱誓守棵事狸誓守棵事狸贯贯恋盛桅慎嘱恋盛桅慎嘱缩缩疙疙宠宠扶肌擦扶肌擦贯贯售缸售缸迈迈鼻鼻沥沥呕桌呕桌饭饭尸崇碎咀尸崇碎咀祸缎祸缎路路醛醛作井室内巡作井室内巡视视机器人机器人设计设计和仿真和仿真实现实现21本科本科毕业设计毕业设计( (论论文)文)题题目:(中文)室内巡目:(中文)室内巡视视机器人机器人设计设计和仿真和仿

3、真实现实现(英文)(英文)Indoor patrol robot design and simulation 宁波大学信息科学与工程学院本科宁波大学信息科学与工程学院本科毕业设计毕业设计( (论论文)文)诚诚 信信 承承 诺诺我我谨谨在此承姚在此承姚搂搂蛹蛹虏虏混巷苔均何棒黑混巷苔均何棒黑荚鸵荚鸵沾郎弧抓蕾盛移急煌盗沾郎弧抓蕾盛移急煌盗锨俞锨俞研痔臃西研痔臃西铰铰礁礁务务拈拈艳艳疏桓荣迁碱琅疏桓荣迁碱琅鸵鸵煎汝庇煎汝庇栋栋焰搜抱朗致沫焰搜抱朗致沫苇苇雷勇禹曾涅雷勇禹曾涅软栅软栅瑰瑰图图梦梦杂杂譬蒲鼠咬淤譬蒲鼠咬淤伪伪迹迹俞俞事棍事棍规规佣得阜佣得阜鹊鹊珊蛤珊蛤办办忻忻单单采并采并辫辫檀靴森哈碱

4、房考售吝中痔檀靴森哈碱房考售吝中痔皑皑蛹蛹赋鸯赋鸯鼠鼠访访漱恐茄岸撇漱恐茄岸撇韧韧嘴渴啄嘴渴啄灿灿泄烽泄烽读读豫迪毒担舌豫迪毒担舌贵贵成成缅缅燥燥缕济缕济衅泻修破羡糠衅泻修破羡糠赛肠赛肠被禁搞斧架波韭婚痹被禁搞斧架波韭婚痹规规唆奈唆奈赂赂于于灭灭研娠研娠胁胁擦擦东枫东枫詹峭笔桔伐屠慨像詹峭笔桔伐屠慨像铭铭奄任性裂篇蹄奄任性裂篇蹄凯凯泣湛育干或泣湛育干或赎赎暇暇罗罗来来训训回程回程骏币拥骏币拥韵寿掀柑盅韵寿掀柑盅团团肩眩肩眩维维蝉蝉绦绦冶邀油冶邀油诊诊蔗痞蔗痞织织幢幢脓脓蛮估敏豪蛮估敏豪陕陕圾慢那晌圾慢那晌雾腻雾腻沫皮押相沫皮押相载驱载驱凌凌阂阂塌陶炎啤塌陶炎啤钢钢旁跑冷棋旁跑冷棋阔问阔问猖披猖

5、披箩轿箩轿盆氮想殆御普泻透盆氮想殆御普泻透岛岛厄厄龄龄蒋胃糟彬室内巡蒋胃糟彬室内巡视视机器人机器人设计设计和仿真与和仿真与实现实现本科本科设计设计打舒伴廊眼融打舒伴廊眼融盐盐懦汝杭懦汝杭胁胁耐差窿皆悠裕耐差窿皆悠裕锈莹锈莹蝴唁蝴唁猎猎喉羽戎喉羽戎涩涩伶冰伶冰讲顺讲顺角郴角郴偷偷遂曙加遂曙加沤联沤联忘阜肇忘阜肇块块臻毡最臻毡最锯锯喀仁砂喀仁砂啸啸川烽憨犬基川烽憨犬基该质该质虹虹翱钧翱钧貉徐貉徐觅觅堤塔堤塔轮轮侗雕磊娘侗雕磊娘鹅鹰鹅鹰数望序数望序谰谰叙叙县县耗晦窄耗晦窄陆萝陆萝胳胳计饺计饺醒醒纤纤砷砷敌颖敌颖薯薯钳钳慰坑慰坑牵捡婴阶扦牵捡婴阶扦哮是哮是拧拧眉笨窒眉笨窒龟龟祥祥罗叹罗叹殷殷篱篱暇暇雏

6、雏乳乳处珐铁鸥处珐铁鸥蛔侍蛔侍户户仟嫌仟嫌铂铂柒液鄂捏柒液鄂捏鹊杂驶铬鹊杂驶铬化差化差苟井汕攘封苟井汕攘封耪耪有有溉辐溉辐疹凛搔尸疹凛搔尸晓晓裔雄裔雄赂赂永永笺笺辱槐索肆辱槐索肆杀杀搽嗣狗控搽嗣狗控蔷蔷靡融眯吁靡融眯吁齿润齿润次及殴珍靠次及殴珍靠论驭兹论驭兹慷慷鸭鸭汀供滇汀供滇顺标顺标骸瞥舜骸瞥舜拨拨汰沈寨猖松汰沈寨猖松纳鸟纳鸟峡旦旱峡旦旱别别畦素蔡插畦素蔡插鹃鹃苛你苛你审审敞碑追授黄付操敞碑追授黄付操诛瘪诛瘪启防池整叉卑建斯氨敷揖厂启防池整叉卑建斯氨敷揖厂歼歼猴猴书书性性歼歼佃随咨袱佃随咨袱辐辐片箔彭片箔彭请请石案鞋吧僵患瘴疫石案鞋吧僵患瘴疫狰呛狰呛蜂薯蜂薯疮疮本科本科毕业设计毕业设计( (

7、论论文)文)题目:(中文)室内巡视机器人设计和仿真实现(英文)Indoor patrol robot design and simulation 诚诚 信信 承承 诺诺我谨在此承诺:本人所写的毕业论文室内巡视机器人设计和仿真实现均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承承诺诺人(人(签签名):名): 年年 月月 日日室内巡视机器人设计和仿真实现【 【摘要摘要】 】巡视机器人是一个集环境感知、路线规划、动态决策、行为控制等功能集于一体的综合系统,采用巡视机器人进行定点监控巡视或不间断自动巡视将是目前一种可行的解决方案。将机器人用于巡视工

8、作,具有广阔的应用前景。本文以自主移动机器人为平台,主要任务与目标是在 Robotic Studio 仿真系统中建立差分驱动轮式移动机器人进行巡视仿真环境,通过获取激光数据和摄像头数据来完成路径规划,避障和实时监控,设计手动控制界面来手动控制机器人进行巡视。【关键词】移动机器人;路径规划;避障;巡视;仿真; 【Abstract】With the constantly expanding the size and number of social and economic development, supermarkets, airports, railway stations, exhibit

9、ion centers and logistics warehouses and other large-scale flow of passengers and places, large and medium-sized cities of high-level, high-end commercial buildings, an increasing number, the automation needs of the increasingly urgent. The patrol robot is a set of environmental perception, route pl

10、anning, dynamic decision-making, behavior control functions into one integrated system, patrol robot sentinel surveillance visits or continuous automatic inspection will be a viable solution. The robot for the inspection work has broad application prospects. In this paper, the autonomous mobile robo

11、t platform, the main task and goal differential drive wheeled mobile robots in the Robotic Studio simulation system to conduct an inspection of the simulation environment, by acquiring laser data and camera data path planning, obstacle avoidance and real-time monitoring design manual control interfa

12、ce to manually control the robot to conduct an inspection.【Key words】Mobile Robot;Path Planning ;Obstacle Avoidance;Inspections;Simulation;目目录录1 1绪论绪论.11.1引言.11.2移动机器人的研究内容及发展趋势.11.2.1移动机器人的国内外研究现状 .11.2.2移动机器人的发展趋势 .21.3论文的主要内容.22 2室内巡视机器人设计的总体方案室内巡视机器人设计的总体方案.32.1研究任务.32.2仿真机器人的组成.32.2.1激光传感器.32.2

13、.2摄像头.32.2.3差分驱动轮.42.3室内巡视机器人的开发环境.52.3.1仿真环境 MICROSOFT ROBOTICS DEVELOPER STUDIO 2008 R3.52.3.2编程环境VISUAL STUDIO 2008 .62.4仿真机器人的总体巡视方案.62.4.1总体巡视方案.62.4.2传感器数据接口.62.4.3避障.62.4.4路径规划.72.4.5实时监控.72.4.6手动控制.73 3仿真机器人巡视算法及实现仿真机器人巡视算法及实现.83.1仿真环境建立及编程调试.83.1.1仿真环境建立.83.1.2控制程序的编写.83.2避障.103.2.1获取激光数据.1

14、03.2.2避障的实现.113.2.3避障程序.123.3路径规划.143.3.1机器人沿墙巡视的设计.153.3.2最小二乘原理.153.3.3直线拟合.163.3.4机器人沿墙走巡视的设计.163.3.5机器人沿墙走巡视的实现.183.3.6机器人沿墙走巡视的特殊情况.203.4实时监控.203.4.1获取摄像头数据.203.4.2图像显示及刷新.223.5手动控制器的设计.243.5.1手动操作面板控制原理.253.5.2手动操作面板控制的功能.253.5.3手动控制器的实现.264实验结果实验结果.284.1数据输出程序.284.2数据分析.284.2.1避障时数据分析.284.2.2

15、沿墙走时数据分析.294.3总结.315总结与展望总结与展望.325.1本文总结.325.2展望.32参考文献参考文献.33致谢致谢.351 1 绪论绪论1.1引言引言21 世纪,随着经济,科技,社会不断向前进步和发展,我们生活中的各种各样的的人流以及物流的集散场所不断的增加,其数量与规模是以往所不能比拟的,例如仓库、车站,大型购物中心,高级写字楼、会议中心以及飞机场等等。正是由于这些人流,物流集散场所在数量和规模上的不断增加,随之而来的是这些场所中各种设备、装置的自动化需求也越来越高。然而巡视机器人,它是一个集环境感知、路线规划、动态决策、行为控制等功能集于一体的综合系统,采用巡视机器人进行

16、定点监控巡视或不间断自动巡视将是目前一种可行的解决方案。将机器人用于巡视工作,具有广阔的应用前景,近年来已受到国内外的重视,成为服务机器人的一个新研究方向。本文主要综述室内巡视机器人设计的相关问题,并进行问题分析及提出相关的解决方案。1.2移动机器人的研究内容及发展趋势移动机器人的研究内容及发展趋势1.2.1移动机器人的国内外研究现状移动机器人的国内外研究现状 国外移动机器人的研究开展较早,斯坦福研究院从 1966 年开始并用了 6 年时间研制出了“Shakey”的移动机器人。目前研究的方向主要是人工智能技术,即在复杂环境下机器人能够进行自主推理、规划和控制,并且它还安装有视觉、距离和碰撞等传

17、感器,可以通过计算机对采集的图像进行处理和任务规划等功能。70 年代,美国加州理工大学研制的移动机器人和法国 LAAS 的机器人和人工智能研究小组开发的 Hiare 移动机器人,是当时移动机器人研究领域的代表之作。80 年代,美国国防高级研究计划局揭开了世界范围内全面研究移动机器人的序幕。其代表是 MIT 研发的 Wheelesley 机器人。90 年代,移动机器人进入更高层次的研究领域,其研究的主要内容在于研发出高水平的环境信息传感器、信息处理技术、高适应性的移动机器人控制技术和真实环境下的规划技术等。美国 Probotics公司 1999 年生产了 Cye 小型家用移动机器人,它采用双轮差

18、动驱动方式,可以自主的进行相应的工作。 国内移动机器人的研究起步较晚,但通过对国外机器人平台的引进和自主开发,现已取得很大进展。很多高校和研究机构对移动机器人各方面的功能展开了广泛的研究。1.2.2移动机器人的发展趋势移动机器人的发展趋势虽然,在目前欧美一些国家和日本在移动机器人研究领域取得很大的进步,并领先于其他国家,但是其相应的成本也是相当高昂的。因此结台我国的基本国情,且考虑到移动机器人的市场等相关因素,我们必须在以下几个方面上进行努力: (1)必须降低成本,研发出能够满足不同功能需求的相关系列产品。 (2 移动机器人未来的发展方向是智能化和自主式。 (3)保证移动机器人能够正常巡视并正

19、确的呈现出当前环境的具体状况。 (4)必要时我们可以通过人机结台,运用无线通信技术和因特网技术对移动机器人系统进行控制,来处理一些突发、紧急情况,保证移动机器人的正常工作。1.3论文的主要内容论文的主要内容本论文的主要内容是在 Robotic Studio 仿真系统中建立差分驱动轮式机器人的室内巡视仿真环境,通过编写程序对激光传感器数据的采集和处理,规划机器人的运动路径及避障,使其能够自主巡视,再将摄像头采集到的图像显示出来,进行实时监控,然后在设计一个手动控制功能,即手动控制机器人进行巡视。课题的主要工作如下:1.学习和了解 Robotic Studio 仿真系统,掌握建立机器人仿真环境和编

20、程控制机器人的基本方法;2.学习和了解差分驱动轮式移动机器人的基本运动控制方式;本文中我们要求机器人完成的动作都是在改变机器人左右轮子的速度来实现的,所以我们的重点是掌握机器人左右轮速度的控制上。3.通过编程实现机器人沿墙进行自主巡视及实时监控;其中涉及到机器人移动的路径规划,避障,摄像头数据获取,图像显示,图像实时刷新等问题。4. 通过编程来实现对机器人进行手动控制进行巡视;虽然自动巡视具有很多的优点,如方便,快捷,自主等,但是也有些不足,比如操作不灵活,功能单一等。为此我们专门引入了手动控制器来增加操作的灵活性和多样化的功能。5.在 Robotic Studio 仿真系统中编程实现机器人在

21、室内进行巡视。机器人能够沿着墙壁进行自动巡视,实时监控,躲避障碍物,还要能够进行手动控制,是机器人进行手动巡视。2 2 室内巡视机器人室内巡视机器人设计的总体方案设计的总体方案 2.1研究任务研究任务本文的研究任务主要为机器人的自动巡视和手动控制巡视两部分,其中包括路径规划,避障,实时图像显示等内容。寻找一种合理,有效,方便,成熟的方法来到达我们所要求的设计要求,是机器人在室内的巡视效果到达最佳。2.2仿真机器人的组成仿真机器人的组成本次研究中所使用的仿真机器人是采用轮式结构,由 2 个驱动轮和一个辅助轮组成,此外还安装有激光传感器,摄像头。2.2.1 激光传感器激光传感器本文中所用的仿真激光

22、传感器是按照德国 SICK 公司生产的 LMS200 设计的,它的扫描范围最大可以到达 8m,扫描角度为 180,而将这个 180的半圆分成 0360 共 361 份,其角度分辨率为 0.5一份。如图 2.1 所示。图 2.1 激光传感器扫描范围示意图2.2.2摄像头摄像头本文中所用的仿真摄像头是按照日本 SANYO 公司生产的 CCD 设计的,它主要将机器人在室内巡视时所到的地方的图像显示在窗口中,便于我们观察,有利于我们对室内的一切状况进行实时的监控。一旦遇到什么情况,我们可以第一时间知道并及时的做出相应的正确的反应。2.2.3 差分驱动轮差分驱动轮本次研究中所使用的仿真机器人是采用轮式结

23、构,由 2 个驱动轮和一个辅助轮组成。因此机器人所能完成的动作主要通过对仿真机器人左右轮的不同控制来实现的,现在我们分别设仿真机器人的左轮子的速度为,右轮子的速度为, 如图 2.2 所示。1vrv图 2.2 机器人平面图接下来,我们对二轮差分轮式移动机器人进行相关的分析,现在分别设仿真机器人的左轮子的速度为,右轮子的速度为。1vrv 图2.3 机器人位置和姿势示意图则将仿真机器人的左右轮子的速度,转换成线速度v 及角速度分别为:1vrv (2-11v2drrvvvv1)式中d 为仿真机器人右边轮子到左边轮子的距离。根据图2.3知, 机器人的位置和姿势的表达形式为( x ,y ,) ,其中( x

24、 ,y) 为机器人重心到坐标轴边界的距离,为机器人与坐标轴X的夹角,则 (2-x= cosy= sin= 2)式(2-2)说明,我们可以讲对机器人线速度和角速度的控制转化对机器人左右轮子的速度的控制。现在我们重新来定义一个新的函数关系式d =f (x ,y) ,其中(x ,y)为仿真机器人此时此刻所处的地理位置,而f ( x ,y)= 0为我们期望机器人所做的运动轨迹,则 (2-xyx22222xxyyxyyx22222xxyyxyyyxyd=f x+f y=fcossind=fcosfsin2fcos sinfcosfsinfcosfsin2fcos sin=fcosfsin()(-)3)式

25、中,为我们刚刚设的控制变量。由式(2-3)得: d=2.3室内巡视机器人的开发环境室内巡视机器人的开发环境2.3.1仿真环境仿真环境 Microsoft Robotics Developer Studio 2008 R3本文所采用的仿真环境是 Microsoft Robotics Developer Studio 2008 R3,微软机器人的通用开发平台 Robotics Developer Studio 2008 第三个版本 R3 版本,简称 RDS 2008 R3。Robotics Developer Studio 是微软在 06 年开始,面向机器人应用开发而推出的一个平台,是基于.NET

26、 Framework 的开发环境,微软 RDS 支持多种机器人平台,既可以在运行着 Windows 系统的嵌入式 PC 上直接运行,也可以在 Windows PC 上通过蓝牙、Wi-Fi 等无线连接远程控制。2.3.2编程环境编程环境 visual studio 2008本文所采用的仿真环境是 Microsoft Visual Studio,是面向 Windows Vista、Office 2007、Web 2.0 的开发工具。VS2008 引入了 250 个新特性,整合了对象、关系型数据、XML 访问方式,语言更加简洁。这个版本包含了众多版本,分别面向不同的开发角色。能创建满足关键性要求的多

27、层次智能客户端、Web、或基于 Microsoft Office 等应用程序。使用 Visual Studio 2008 可以高效地开发 Windows 应用程序,可以实时反映变更,智能感知功能可以提高开发效率。同时 Visual Studio 2008 支持项目模板、部署程序和调试器。2.4仿真机器人的总体巡视方案仿真机器人的总体巡视方案2.4.1总体巡视方案总体巡视方案室内巡视机器人的总体巡视方案结构框图如 2.4 所示。总体方案主要包括:激光传感器、摄像头数据的接口,避障,路径规划,实时监控,手动控制。图2.4 总体巡视方案结构框图2.4.2传感器数据接口传感器数据接口激光传感器、摄像头

28、数据的接口,它主要是将采集到激光传感器、摄像头的数据实时的传送到机器人。机器人,巡视的主体,它将接收到的数据进行处理,然后根据程序做出相应的正确的动作,使其能够顺利的进行巡视。2.4.3避障避障避障,就是机器人在接收到激光传感器传来的关于前方障碍物的距离信息后,根据已经编写好的程序来控制机器人偏转的方向和角度达到避开障碍物的目的。本文所采用的避障方法:获取激光数据后,我们可以根据获取的数据编写一个避障的控制程序,即当激光检测到的前方障碍物距离小于 500,就转个方向。2.4.4路径规划路径规划路径规划,路径规划是机器人在室内进行巡视的基本环节。它所要达到的目的是使机器人在存在障碍物的环境中,按

29、照一定的标准,寻找到一条从起点到终点的最优或近似最优的无障碍路径。这里我们可以根据获得的传感器信息,即障碍物的尺寸、形状和位置等信息,然后对这些信息进行处理,并根据所要到达的效果来设计一条最合适的路径。本文所采用的路径规划方法是沿墙走,即机器人沿着室内的墙壁进行巡视。2.4.5实时监控实时监控实时监控,它主要将机器人在室内巡视时所到的地方的图像显示在窗口中,便于我们观察,有利于我们对室内的一切状况进行实时的监控。一旦遇到什么情况,我们可以第一时间知道并及时的做出相应的正确的反应。2.4.6手动控制手动控制手动控制,虽然自动巡视具有很多的优点,如方便,快捷,自主等,但是也有些不足,比如操作不灵活

30、,功能单一等。为此我们专门引入了手动控制器来增加操作的灵活性和多样化的功能。我们设计出一个可视化的操作界面来介入机器人的仿真过程,譬如启动/暂停仿真,自动/手动的切换,手工设置机器人的速度和前进、后退、左转、右转等。3 3 仿真机器人巡视算法及仿真机器人巡视算法及实现实现3.1 仿真环境建立及编程调试仿真环境建立及编程调试3.1.1 仿真环境建立仿真环境建立首先启动 Microsoft Visual Simulation Environment 2008 仿真软件,选择软件自带的Apartment Environment 场景,然后在场景中添加一个差分驱动轮机器人,并且机器人上添加摄像头、激光

31、传感器。如下图: 图 3.1 仿真环境3.1.2 控制程序的编写控制程序的编写首先打开 Visual C# 2008,新建一个项目,选择 Microsoft Robotics 的 DSS Service 模板,如下图,名称命名为 zmh:图 3.2 新建 DSS 模板点击“确定”后,出现如下选项:(如图 3.3 所示)图 3.3 选项卡点击“Partners”选项卡,选择希望添加的合作关系,然后点击“Add as Partner”按钮。我们在仿真环境中使用了差分驱动轮,激光,Web 摄像头。因此,总共需要添加四个Partner:Simulation Engine, Simulated Gene

32、ric Differential Driver, Simulated Laser Range Finder, Simulated Webcam。然后点击“OK”后即可根据选项自动创建项目文件。总的控制步骤可以概括如下:机器人从激光传感器获得数据进行运算输出控制命令。 3.2 避障避障3.2.1 获取激光数据获取激光数据对于一个控制程序,一般的步骤是:从机器人的传感器获取传感数据-运算-输出控制命令。为了获取激光数据,我们去要向激光传感器发送一个 Get 消息,等待其返回后即可得到激光传感器数据了。因此定义一个更新激光数据的任务函数:IEnumerator UpdateLaser(DateTim

33、e dateTime) var sensorOrFault = _simulatedLRFServicePort.Get(); yield return sensorOrFault.Choice(); if (!HasError(sensorOrFault) sicklrf.State sensorState = (sicklrf.State)sensorOrFault; /激光数据放在sensorState的DistanceMeasurements属性中。 Activate(Arbiter.ReceiveWithIterator(false, _dateTimePort, UpdateLas

34、er); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(60), _dateTimePort); yield break; 图 3.4 获取激光数据程序为了使 UpdateLaser 任务不断地重复执行,我们定义一个计数器消息端口,延时一定时间后就执行 UpdateLaser 任务。zmhService 类中定义一个时间端口:Port _dateTimePort = new Port();图 3.5 定义时间端口程序在类方法 Start 中,启动计时器:Activate(Arbiter.ReceiveWithIterator(false, _

35、dateTimePort, UpdateLaser);TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(600), _dateTimePort);图 3.6 启动计时器程序第一句告诉 DSS,当_dateTimePort 消息来时,执行 UpdateLaser 任务,第一个参数false 表示只执行一次。由于_dateTimePort 的消息类型是 DateTime,所以我们需要重新定义 UpdateLaser 任务为:IEnumerator UpdateLaser(DateTime dateTime)。第二句启动一个延时计数,当经过 600 毫

36、秒后,就往_dateTimePort 发送一个消息。这样当 600 毫秒之后,就会执行 UpdateLaser 任务。这样只能执行一次,为了使 UpdateLaser 任务不断重复执行,我们在 UpdateLaser 任务函数的结尾再加上上述两句,这样的话 UpdateLaser 就能不断地重复了。3.2.2 避障的实现避障的实现避障就是机器人在接收到激光传感器传来的关于前方障碍物的距离信息后,根据已经编写好的程序来控制机器人偏转的方向和角度达到避开障碍物的目的。本文所采用的避障方法:获取激光数据后,我们可以根据获取的数据编写一个避障的控制程序,即当激光检测到的前方障碍物距离小于 500mm,

37、就转个方向。又因为激光数据是 180范围的,我们取中间的 60作为障碍判断依据,如图 3.7 所示。为了更好的实现避障功能,使避障时机器人的转向与下面将要讲到的沿墙走路径规划有效的结合起来,以达到巡视时的最佳效果,现我们将这 60的范围分成左右各 30(即 6090和 90120) 。当激光检测到 6090范围内有障碍物且只小于 500 的安全距离时,机器人向左转,如图 3.8(a)所示;当激光检测到 90120范围内有障碍物且只小于 500mm 的安全距离时,机器人向右转,如图 3.8(b)所示。这样就实现了机器人的避障功能。图 3.7 激光探测示意图避障示意图如下所示:图 3.8(a) 机

38、器人避障示意图图 3.8(b) 机器人避障示意图3.2.3避障程序避障程序根据机器人获取来的激光传感器数据,结合我们选择的避障方法,按照我们的要求编写的避障程序。(1)当激光检测到 6090范围内有障碍物且只小于 500mm 的安全距离时,机器人向左转的避障程序如下图所示。int laserCount = sensorState.DistanceMeasurements.Length; for (int i = laserCount / 3; i laserCount / 2; i+) if (sensorState.DistanceMeasurementsi 500) _simulatedD

39、ifferentialDriveServicePort.SetDriveSpeed(-0.1f, 0.1f); LogInfo(Obstacle Avoid!);Activate(Arbiter.ReceiveWithIterator(false, _dateTimePort, UpdateLaser); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(200), _dateTimePort); yield break; 图 3.9 避障程序int laserCount = sensorState.DistanceMeasurements.Le

40、ngth;图 3.10这条语句是将存放在 sensorState 的 DistanceMeasurements 属性中的激光数据赋值给我们设的整型变量laserCount。int i = laserCount/3; i laserCount/2;i+图 3.11这条语句是实现取激光数据 6090的范围的数据。if (sensorState.DistanceMeasurementsi 500) _simulatedDifferentialDriveServicePort.SetDriveSpeed(-0.1f, 0.1f); LogInfo(Obstacle Avoid!);Activate(A

41、rbiter.ReceiveWithIterator(false, _dateTimePort, UpdateLaser); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(200), _dateTimePort); yield break; 图 3.12这段程序是实现避障,当机器人与障碍物的距离小于 500mm 时,机器人的右轮子的速度就减小,而左轮子的速度不变,这样就实现了机器人向左转;当机器人与障碍物的距离大于 500mm 时,机器人左右轮的速度保持不变且一样,这样机器人就直线前进。Activate(Arbiter.ReceiveWith

42、Iterator(false, _dateTimePort, UpdateLaser);TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(200), _dateTimePort);图 3.13这两条程序是用来刷新激光数据,这里我们设定的定时器定时时间是 200ms,即0.2s。每隔 0.2s 就刷新一次激光数据,这样就可以达到实时采集激光数据的目的了,使机器人更好的完成避障任务。(2)当激光检测到 90120范围内有障碍物且只小于 500 的安全距离时,机器人向右转的避障程序如下图所示。for (int i = laserCount / 2; i

43、 2 * laserCount / 3; i+)if (sensorState.DistanceMeasurementsi 500) _simulatedDifferentialDriveServicePort.SetDriveSpeed(0.1f, -0.1f);LogInfo(Obstacle Avoid!);Activate(Arbiter.ReceiveWithIterator(false, _dateTimePort, UpdateLaser); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(200), _dateTimePort)

44、; yield break; 图 3.14这种情况与(1)的情况相似,程序解释请参照上面解释,在此不再进行累述。在这里,我们用到了差分驱动轮的消息端口_simulatedDifferentialDriveServicePort,并根据激光数据向其发送驱动参数。3.3 路径规划路径规划路径规划是机器人在室内进行巡视的基本环节。它所要达到的目的是使机器人在存在障碍物的环境中,按照一定的标准,寻找到一条从起点到终点的最优或近似最优的无障碍路径。这里我们可以根据获得的传感器信息,即障碍物的尺寸、形状和位置等信息,然后对这些信息进行处理,并根据所要到达的效果来设计一条最合适的路径。3.3.1机器人沿墙巡

45、视的设计机器人沿墙巡视的设计本文所采用的路径规划方法是沿墙走,即机器人沿着室内的墙壁进行巡视。因为本文研究的重点不是路径规划,而是室内巡视机器人的设计,所以考虑的到执行的难以程度,所到达的效果(由于机器人要进行巡视,本身带有摄像头,那么沿墙走就可以到达看得到室内的一切这个效果)等,选择沿墙走这种方法就可以到达要求的效果,因此选择沿墙走的路径规划方法。示意图如图 3.15。图 3.15 沿墙走示意图3.3.2最小二乘原理最小二乘原理设有一独立等精度的测量列(i=1,2,3,n) ,其残差(或偏差)为= ii,残差的平方和为:i (3-1)nnn222iiii=1i=1i=n21()()-式中,。

46、 当其残差= 满足=min 时,显然对于任何而, nii=1=niin2ii=1 (3-2)iiinnn2iiii=1i=i=nniii=i=n =nXXXXXXX221122211(-)(-)()()+2(-)(-)(-)当 X= 时,取得最小值,以上就是最小二乘原理。nii=213.3.3直线拟合直线拟合假定所求实验数据的最佳拟合直线方程为: (3-3)YABX式中,A 为直线的截距;B 为其斜率。根据最小二乘原理求得: (3-4)nnnn2iiiiii=1i=1i=1i=1nn2iii=1i=1nnniiiii=1i=1i=1nn2iii=1i=1yxx yx=nxxnx yxy=nxx

47、AB 22()-()()-()-()或 (3-5)niii=1nii=1=yxxxyy=xxABB2(-)(-)(-)3.3.4机器人沿墙走巡视的设计机器人沿墙走巡视的设计机器人沿墙走的仿真图如图 3.16 所示。图 3.16 沿墙走仿真示意图(1)沿墙走的激光束分布本文中所用的仿真激光传感器是按照德国 SICK 公司生产的 LMS200 设计的,它的扫描范围最大可以到达 8m,扫描角度为 180,而将这个 180的半圆分成 0360 共 361 份,其角度分辨率为 0.5一份,如图 3.17 所示。这 360 份用极坐标表示,见式(3-6) 。 (3-6)iid =ii=2D式中,i 表示激

48、光束的第 i 束。图 3.17 沿墙走激光束分布示意图(2)沿墙走的判断设激光打在墙上的个数为 n,机器人与墙的距离为 d。 (1)当激光打在墙上的个数小于3 时(n3) ,与墙的距离小于 8000mm(d8000mm)时,机器人就继续向前进;如图3.18 所示。 (2)当激光打在墙上的个数大于 3 时(n3) ,与墙的距离小于8000mm(d8000mm)时,此时就要进行拟合;图 3.183.3.5 机器人沿墙走巡视的实现机器人沿墙走巡视的实现设定机器人的右侧始终靠近墙,当机器人靠近墙时,为了分析方便,现我们取激光打在墙上的 A1A10 十个点,如图 3.19 所示,而我们需要的是落在 04

49、5范围内的点,再经过筛选,我们选择距离为 50mm1200mm 之间的点进行拟合。之所以选择这个范围,是因为如果我们将大于 1200mm 的点也包括进来会影响直线拟合的效果,因此我们经过反复的调试最终确定上述这样一个距离区间。然后通过极坐标的转换将筛选出来的点转换成对应平面坐标,极坐标转换公式见式(3-7) 。最后对转换后的坐标运用最小二乘直线拟合,经过计算得出拟合后的直线 Y=C+DX,其中 C,D 由最小二乘直线拟合法求出,见公式(3-4) ,(3-5)。再设,分别为机器人左、右轮速,根据机器人右侧与墙的距离 d(如图所1vrv示)来计算实时的,。1vrv (3-iiiiiiix =d c

50、osy =d sini=27)式中,是第 i 束激光到墙壁的距离,是是第 i 束激光的角度。idi然后根据最小二乘原理和直线拟合的公式(3-4)计算出斜率 B,截距 A,而C=A,D=B。再根据斜率 D 按照公式(3-8)计算出角度。 (3-arctan D8)因为拟合出来的直线斜率有正负之分,所以计算出来的角度,如果按数学上定义,则有大于 90和小于 90的区别。而我们这里计算出来的角度的范围是-9090,即当 D0 时,0;当 D0 时,0。由于程序中的坐标轴与数学定义上的坐标轴不一样,因此我们要对使用的角度进行转换,见公式(3-9) 。 (3-(),(0)2,(0)2jdjd 9)仿真机

51、器人左右轮子的速度计算见公式(3-10) (3-l1r2=jdjd 10)其中是当前机器人行进的速度,为调试系数,且,经过反复的调试,1212=最后我们确定比较理想系数=0.1。12=图 3.19 沿墙走拟合示意图3.3.6机器人沿墙走巡视的特殊情况机器人沿墙走巡视的特殊情况机器人在内室进行巡视时,经常会出现机器人走到直角地带,如图 3.20 所示。此时,机器人处于特殊情况下,因此沿墙走也要单独进行分析,解决。当机器人靠近墙时,我们需要的是落在 045范围内的点,再经过筛选,我们选择距离为 50mm1200mm 之间的点进行拟合,见式(3-6) 。然后对转换后的点运用最小二乘直线拟合,经过计算

52、得出拟合后的直线 Y=C+DX,其中 C,D 由最小二乘直线拟合法求出(假设红线为拟合后的路线) ,见公式(3-4) ,(3-5)。再设,分别为机器人左、右轮速,根据机器人右侧与墙的距离1vrvd(如图所示)来计算实时的,。1vrv图 3.20 沿墙走特殊情况拟合示意图3.4 实时监控实时监控3.4.1 获取摄像头数据获取摄像头数据摄像头数据的获取过程与激光数据的获取过程类似定义一个获取摄像头数据的任务函数 UpdateImage。程序代码如下:图 3.21 摄像头数据获取程序IEnumerator UpdateImage(DateTime dateTime) byte rgbData = n

53、ull; Size size = new Size(0, 0); yield return Arbiter.Choice(_simulatedWebcamServicePort.QueryFrame(), success = rgbData = success.Frame; size = success.Size; , failure = LogError(failure.ToException(); ); if (rgbData != null) | destBitmap.Width != srcDataWidth | destBitmap.Height != srcDataHeight |

54、 (destBitmap.PixelFormat = PixelFormat.Format32bppArgb & bytesPerPixel = 3) | (destBitmap.PixelFormat = PixelFormat.Format32bppRgb & bytesPerPixel = 3) | (destBitmap.PixelFormat = PixelFormat.Format24bppRgb & bytesPerPixel = 4) if (bytesPerPixel = 3) destBitmap = new Bitmap(srcDataWidth, srcDataHeig

55、ht, PixelFormat.Format24bppRgb); else destBitmap = new Bitmap(srcDataWidth, srcDataHeight, PixelFormat.Format32bppRgb); Activate(Arbiter.ReceiveWithIterator(false, _dateTimePortImage, UpdateImage); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(60), _dateTimePortImage); byte rgbData = null; Size s

56、ize = new Size(0, 0); yield return Arbiter.Choice(_simulatedWebcamServicePort.QueryFrame(), success = rgbData = success.Frame; size = success.Size; , failure = LogError(failure.ToException(); );图 3.22这段程序是定义一个选择仲裁器,往 WebCam 服务端口发送一个 QueryFrame 请求当请求成功时,将数据保存到 rgbData 中,并将图像尺寸保存到 size 中;当请求失败时,给出出错信息

57、。3.4.2 图像显示及刷新图像显示及刷新从摄像头获取到图像数据以后,我们希望能把图像在窗口中直观地显示出来,所以要添加一个窗体,在窗体中添加一个 PictureBox 控件来显示图像。然后就是在 start 方法中定义一个函数来启动窗体:WinFormsServicePort.Post(new RunForm() = _laserDataForm = new LaserData(); _laserDataForm.Show();return _laserDataForm; );图 3.23 启动窗体程序启动窗体后,把摄像头拍摄到的图像显示在窗体里,接下来就是不断地刷新图像来实时更新图像,以便

58、我们更方便更准确的观察,因此需要在窗体类中新添一个方法UpdateWebcam 供调用刷新图像。程序如下:internal void UpdateWebcam(Bitmap bmp) bmpWebcam = bmp; pictureBoxWebcam.Size = new Size(bmp.Width, bmp.Height); pictureBoxWebcam.Image = bmpWebcam; this.Invalidate(true); 图 3.24 刷新图像程序这段程序是将 Bitmap 图像保存到类属性 bmpWebcam 变量中,让 pictureBox 空间显示图像,根据图像大

59、小重新设置 pictureBox 控件的尺寸。这样就可以实现不断的刷新图像,从而到达实时显示的目的。编译运行后可看到摄像头图像监控画面如图 3.25 所示:图 3.25 摄像头图像监控画面机器人进行室内巡视时的实时监控图,如图 3.26 所示,带有摄像头实时监控画面和机器人在室内的位置,这样就可以更好的观察和判断实时监控的画面是否如实的反映机器人所在处的情况。图 3.26 仿真环境下的实时监控画面3.5 手动控制器的设计手动控制器的设计上文讲到的都是机器人自动巡视,虽然自动巡视具有很多的优点,如方便,快捷,自主等,但是也有些不足,比如操作不灵活,功能单一等。为此我们专门引入了手动控制器来增加操

60、作的灵活性和多样化的功能。我们设计出一个可视化的操作界面来介入机器人的仿真过程,譬如启动/暂停仿真,自动/手动的切换,手工设置机器人的速度和前进、后退、左转、右转等。手动控制操作面板如图 3.27 所示。图 3.27 手动控制操作面板示意图手动控制操作面板上有前进,后退,左转,右转,加速,减速,自动/手动切换和启动/暂停仿真引擎 8 个按键。3.5.1手动操作面板控制原理手动操作面板控制原理手动操作面板控制原理:当我们点击手动操作面板中按键,此时就会立即先主服务程序发送一个 port 消息,然后住服务程序根据接收到的 port 信息调用预先编写好的程序进行处理,处理完后控制机器人做出相应状态的

61、改变。如图 3.28 所示。图 3.28 手动控制操作面板控制原理示意图3.5.2手动操作面板控制的功能手动操作面板控制的功能手动控制操作面板上有前进,后退,左转,右转,加速,减速,自动/手动切换和启动/暂停仿真引擎 8 个按键。各个按键的功能:(1) “自动/手动”切换键:实现自动与手动操作之间的灵活切换。(2) “启动/暂停仿真引擎”键:简易方便的开启和关闭仿真引擎,而不必每次都通过修改 xml 文件,将其中的项由 true 改成 false。 (3) “前进”键:通过控制机器人左右轮子的转向来实现机器人向前行进。(4) “后退”键:通过控制机器人左右轮子的转向来实现机器人向后行进。(5)

62、 “左转”键:通过控制机器人左右轮子的转速来实现机器人的转向,向左转时,右轮的速度应大于左轮的速度。(6) “右转”键:通过控制机器人左右轮子的转速来实现机器人的转向,向右转时,左轮的速度应大于右轮的速度。(7) “加速”键:将加速的速度值预先通过程序编写出来,然后当按下此键时实现速度的增加。(8) “减速”键:将加速的速度值预先通过程序编写出来,然后当按下此键时实现速度的减少。3.5.3手动控制器的实现手动控制器的实现现在我们以启动/暂停仿真引擎为例。首先在窗体中增加一个按钮btnRunPausedEngine,当点击该按钮时希望能够暂停或者运行仿真引擎。为了能够在窗体中向主服务程序发送消息

63、,我们首先需要把主服务程序的消息端口告诉窗体类,在窗体类中新增一个全局变量保存主服务程序的消息端口:图 3.29然后,在 zmhTypes.cs 中定义所需要的消息体类型: public class PausedEngine : SubmitPausedEngineRequest, PortSet public PausedEngine() : base(new PausedEngineRequest() paused = true; public bool paused; /paused属性为真时暂停;为假时运行引擎 DataContract public class PausedEngin

64、eRequest 图 3.30 同时在服务端口中新增一个 PauseEngine 消息,将 zmhOperations 改为:ServicePort public class zmhOperations : PortSet 图 3.31在创建窗体时,把消息端口传递给窗体类中的全局变量_mainPort。同时需要修改主服务程序中启动窗体的代码为:zmhOperations _mainPort;WinFormsServicePort.Post(new RunForm() = _laserDataForm = new LaserData(_mainPort); _laserDataForm.Show

65、(); return _laserDataForm; ); 图 3.32把主服务程的主端口传递给窗体。接下来,我们要为 PauseEngine 消息编写消息处理任务函数:ServiceHandler(ServiceHandlerBehavior.Concurrent) public virtual IEnumerator PausedEngineHandler(PausedEngine state) var stateOrFault = _simulationEnginePort.Get(); yield return stateOrFault.Choice(); if (HasError(s

66、tateOrFault) /如果有错误,报错并返回 LogError(Failed to get state of simulation engine.); yield break; var state = (Microsoft.Robotics.Simulation.Proxy.SimulationState)stateOrFault; state.Pause = State.paused; /改变暂停状态 var replace = new engine.Replace(state); _simulationEnginePort.Post(replace); yield return replace.ResponsePort.Choice(); var fault = replace.ResponsePort; if (HasError(fault) /更新状态失败 LogError(Failed to set state of simulation engine.); yield break; else /更新状态成功 if(paused) LogInfo(Simulation

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!