移动机器人合作推箱子任务的仿真研究毕业论文.doc

上传人:文库蛋蛋多 文档编号:3990445 上传时间:2023-03-30 格式:DOC 页数:34 大小:1.10MB
返回 下载 相关 举报
移动机器人合作推箱子任务的仿真研究毕业论文.doc_第1页
第1页 / 共34页
移动机器人合作推箱子任务的仿真研究毕业论文.doc_第2页
第2页 / 共34页
移动机器人合作推箱子任务的仿真研究毕业论文.doc_第3页
第3页 / 共34页
移动机器人合作推箱子任务的仿真研究毕业论文.doc_第4页
第4页 / 共34页
移动机器人合作推箱子任务的仿真研究毕业论文.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《移动机器人合作推箱子任务的仿真研究毕业论文.doc》由会员分享,可在线阅读,更多相关《移动机器人合作推箱子任务的仿真研究毕业论文.doc(34页珍藏版)》请在三一办公上搜索。

1、编号: 本科毕业设计(论文)移动机器人合作推箱子任务的仿真研究A Simulation Study of Mobile Robots Cooperating in Box-pushing下属学院 理工分院 专 业 电气自动化 班 级 08自动化(2)班 学 号 姓 名 指导教师 职称 完成日期 201 2 年 4 月 9 日诚 信 承 诺我谨在此承诺:本人所写的毕业论文机器人物体收集任务仿真实现均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名): 年 月 日摘要【摘要】多个自主型机器人,可以在不依赖任何外部控制的情况下,协同完成任

2、务。本文研究的是两个相同的机器人在一个长形箱子的一侧时,协同合作直行推箱子的任务。在计算机上应用Robotic Studio仿真系统进行仿真,c#语言编写机器人的控制程序。机器人并不进行通信,依据自我的激光传感器感知所处环境,进行合作,完成任务。【关键词】多机器人;合作;推箱子;仿真。Abstract【ABSTRACT】Many independent robots can finish the task together without external control. This paper focuses on the study of two same robots cooperati

3、on in pushing box straight when they are in the same side of the box. Robotic Studio simulation system will be applied for emulation, and also the C# language will be used to for the control program of robots. There are no communications between robots, because they can cooperate to finish the task

4、by using their own laser sensors to know the environment.【KEYWORDS】Robots; cooperate;box-pushing; simulation.目录摘要IIAbstractIII目录IV1绪论11.1多机器人协作的背景及意义11.2本文研究内容22研究方法32.1问题描述32.2激光传感器32.3差分驱动轮62.4推箱子控制策略72.5应用软件仿真和开发环境83仿真实现103.1应用软件仿真环境建立103.2激光数据采集和处理123.3推箱子控制程序界面133.4推箱子控制程序154仿真结果174.1实验结果174.2实

5、验分析185总结19参考文献20致谢22附录231 绪论1.1 多机器人协作的背景及意义随着计算机、电子器件、通信、自动控制技术和传感器的高速发展与提高,自主移动机器人也高速发着。自主移动机器人具有多个模块:由传感器为主的感知模块,由电子器件和自动控制技术构成的处理、决策和执行等诸多的模块。通过这些模块,机器人可以像人一样自主的进行判断,独立的处理问题,更好的完成任务。自主性和适应性是自主移动机器人的最重要的特点。自主性使机器人在指定的环境下,不依靠外界的实时控制,自动的完成任务。适应性使机器人可以适应外部环境的实时变化,为完成任务,进行自主的判断和控制,调节自身的参数,做出相应的动作。自主移

6、动机器人的自主性和实时性是相辅相成的,缺一不可。1990年由美国麻省理工学院教授科林安格尔、海伦格雷纳和罗德尼布鲁克斯创立iRobot公司。iRobot公司是世界上知名的机器人研究制造公司,并大量的军用、警用、探险、家用机器人产品,由iRobot设计制造的机器人帮助美国军方进行扫雷,也可以侦测敌军,用卫星导航GPS把数据传回指挥中心,进行导弹空袭,命中率奇高。美国911事件中,深入世贸大厦底下协助搜救工作的四具机器人“PackBot”就是iRobot的产品。2002年美国国家地理频道胡夫金字塔密室探险,那具具备光纤镜头、高解像度相机、全球最小地面雷达仪的钻壁机器人“金字塔漫游者”也是iRobo

7、t的产品。直到2011年,iRobot已经于全球销售超过6百万的家用吸尘器机器人。现实的工业生产和日常生活中,我们已经应用了大量的机器人来辅助我们人类完成任务,使我们的工业生产、制造的效率大大提高,节省了人力劳动力,节省了生产成本,也极大的方便了我们的日常生活。如今机器人的产业正高速发展,可以预见机器人的应用有着巨大的市场前景。多自主机器人协作的方法,可以完成一个机器人不能完成的复杂任务,大大的提高机器人完成任务的效率。如探索任务,一个机器人要探索完整个区域,需要的时间是很长的,而多个机器人协同探索在很短的时间中就可以完成。在搬运任务中,对于重物和长形物体,要怎么实现搬运呢?这就需要多个机器人

8、相互合作来完成。在多自主机器人协作的研究中,机器人合作推箱子是重要的研究课题之一。在码头、仓库等货物流通的地方,人们需要使用叉车、起重机等车辆机械或直接人力来实现物体的搬运和装载,但是即使使用机械车辆,还是需要人为来进行控制,那么能不能设计出机器人,使它们自动的把货物搬运到指定地点呢?由于货物的重量、体积的大小不同,机器人的搬运能力是有限的,对超重的物体我们不可能为此设计不同的机器人,所以我们想到了多机器人合作搬运的方法,这样不管货物多种,我们可以用两个、三个或者更多来搬运货物。多机器人的应用将大大节省人力、时间,提高工作效率。多自主移动机器人的研究,可以提高人们的生活水品和生产效率,在研究中

9、不断的创新和解决问题,可以学到新的知识,巩固我们的基础知识,并学会灵活地运用。1.2 本文研究内容两个相同的机器人在箱子的同一侧,相互合作往前推箱子,但因为摩擦力,两个机器人对箱子的作用点的不对称等问题干扰,会使箱子发生旋转、偏移,从而影响推箱子任务的完成,所以需要合理的协作方法使两个机器人共同完成推箱子的任务。本文我们要研究以下几个方面:(1)机器人对环境的感知。介绍机器人使用了激光传感器来感知机器人所处外部环境。 机器人差分驱动轮。介绍机器人基于激光传感器对外界环境的感知,机器人采取相应的动作,控制机器人差分驱动轮来设定机器人的速度。机器人仿真平台跟编程软件。介绍一下Robotic Stu

10、dio仿真系统,机器人的仿真环境和编程控制机器人的方法。(2)如何实现。具体描述两个机器人相互合作推箱子的过程,给出流程图,及其控制算法。(3)实验结果。本段讲的是怎么样设计这个实验的,如何去做。分析实验中出现的问题,并给出解决方法。(4)总结。这部分将分析研究仿真结果与目标要求对比分析,仿真效果。2 研究方法2.1 问题描述两个完全相同的自主机器人在箱子的同一侧,保持直行推箱子。在仿真中加入人为的干扰,使箱子发生旋转,偏离直行方向,两个机器人互不干涉的进行自主判断,并进行自我调节,行驶快的机器人减速停止,行驶慢的机器人继续行驶,直到箱子方向重新向正前方时,两机器人再以相同的速度行驶推箱子。研

11、究的难点在于机器人完全相同,即程序也相同,而机器人在箱子旋转时,必然有一个机器人需要减速调节,一个机器人需要加速调节。针对以上问题,初步构想机器人推箱子流程图,如图2-1所示。机器人激光传感器的扫描进行外部环境的判断人为干扰机器人自我调节图2-1 多机器人推箱子流程图2.2 激光传感器激光传感器又可以称作激光测距仪,是机器人最常用到的传感器之一,可以来检测机器人当前所处的位置,以及前方的情况,进行避障。激光数据是在机器人正前方180范围内,共发射了361条激光,机器人通过激光传感器来确定箱子与机器人之间的倾斜角度。如图2-2所示 机器人018090图2-2 激光传感器示意图在此研究中,并不是用

12、激光传感器来进行避障,而是应用激光传感器来感知所处环境的变化,来确定机器人当前所处情况,进而判断执行相应的动作。即激光传感器将检测机器人和箱子之间的夹角角度,如图2-3所示。 机器人yx0图2-3 测量计算如图2-3中,我们设机器人的激光传感器为远点,正前方为y轴,建立平面直角坐标系,其中虚线为箱子,机器人与箱子的倾斜角度为。前面已知机器人激光传感器在正前方180度发射了361条激光,激光到达物体时会反射回来,得到此条激光角度时,物体和机器人激光传感器的距离。要测机器人与箱子之间的倾斜角度,我们需要以下几个步骤:1. 将激光传感器的数据换成算成直角坐标数据;2. 利用最小二乘原理进行曲线拟合,

13、算出如图2-3中虚线的斜率,即可算出。机器人的激光传感器共发射361条激光,所传回的数据储存在一个361长度的数组中。此时我们已知每条激光的长度,也知道第一条激光为0,第361条激光为180,可以将极坐标转换为直角坐标。最小二乘原理:最小二乘法是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。算术平均值 (1-1)残差的平方和 (1-2)式中设不按式(1-1)来计算,而按其他方式计算,如对于n个独立等精度的数据,任取其中n+k个计算其平均值,记为y,其残差的平方和为: (1-3)式中,。据式(1-2)及式(1-3),并注意 ,则有:所以,即为最小值,记为:。由此可见,真值的最

14、佳估计值即算术平均值,具有残差平方和最小值的特性,这就是最小二乘原理。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。曲线拟合:在科学实验与统计研究中,常常需要从一组数据中求得变量x与y之间最佳函数关系式y=f(x)。这就需要用到最小二乘原理及曲线拟合来解决问题。在这里只用到直线拟合。两个变量间的线性关系是一种最简单的、也是最理想的函数关系。运用最小二乘原理,其基本原则是各个数据点与拟合直线的偏差的平方和为最小值。假定最佳拟合直线回归方程为: Y=A+BX (2-1)式中A为直线的截距,B为其斜率。令 (2-2)据最小二

15、乘原理要使为最小,按照通常求极限的方法,去其对A,B的偏导数,并令其为0,可得两个方程,对于两个未知数A、B,有唯一解。 (2-3) 则有如下方程组,称之为正则方程组: (2-4) 解得: (2-5) 已知式(2-5)中B为直线的斜率,B与的关系为:B=tan。2.3 差分驱动轮轮式移动机器人是比较简单的机器人形式,它由一个万向轮作为支撑,两个差分驱动轮来进行行驶,通过控制左右差分驱动轮的速度,来进行机器人行驶方向的旋转和机器人行驶速度的控制。在此研究中,我不需要对机器人进行细致的控制,因为两个机器人的在最初时都是朝向箱子的正前方的,只需保证机器人左右两个差分驱动轮的速度一样就可以完成研究,不

16、考虑机器人的转向问题,即左右差分驱动轮速度不同时,可以调整机器人行驶方向。利用已得到的B值(如图3所示,虚线的斜率),作为因变量,构造机器人行驶速度V的函数,求得函数V,使机器人依据B值调整行驶速度。2.4 推箱子控制策略两个机器人协同推箱子,其重点和难点在于相同的两个机器人的合作,而且他们之间并没有及时通讯,机器人只能利用自我的激光传感器来进行外部环境的感知,进而协同合作。在完全无干扰的情况下,两个机器人可以直行推箱子,很好的完成任务,但现实环境下,由于地面高低摩擦力的不同,会出现一个机器人行驶的慢,另一个机器人相对较快的情况,这就会使箱子发生旋转,此时需要机器人进行动作,调整自我的行驶速度

17、,进而调整箱子的方向。此研究中的机器人为基于行为的机器人,把机器人的动作和所处环境进行一一对应。当箱子方向偏离正前方时,即箱子发生了旋转,此时机器人可以通过激光传感器来感知到箱子的旋转,如图4所示 机器人 机器人图4 机器人推箱子的一种情况虽然两个机器人互不相干,没有通讯系统,但机器人通过箱子的旋转进行了通信。此时,两个机器人都可以通过激光传感器检测到机器人和箱子之间的旋转角度和方向。当发生如图3所示的情况时,左侧机器人自主进行判断,将继续行驶,右侧机器人检测到此情况时,将自主的减速停止,此时,由于左侧机器人行驶,右侧机器人停止,箱子和机器人之间的角度将慢慢的减小,直至两个机器人箱子和机器人平

18、行,此时两个机器人将以同一设定速度开始行驶。在现实环境中,机器人将面临复杂的地理环境,而地面的材质的不同,是否平整等问题的影响下,两个机器人以相同的设定速度行驶,但因为摩擦力的不同,机器人实际的行驶速度会发生差异,而两个机器人行驶速度的一快一慢,会使箱子发生旋转,进而影响机器人推箱子的方向,使机器人不能直行推箱子。在仿真环境中,并没有相应的干扰因素,所以如果不自己加入相应的干扰因素,两个机器人将非常完美的完成直行推箱子的任务,从而没有达到此次研究机器人合作的初衷,所以,我们加入了认为的干扰因素。通过C#编程,窗口事件来控制机器人的停止和行驶,当机器人行驶时,单击窗口按钮,相应的机器人将停止行进

19、,另一个机器人会继续行驶,此时箱子会发生旋转,以此来实现机器人行驶的一快一慢。当再次点击时,停止的机器人将按照设定的速度继续行驶,依照协作方法,继续直行推箱子。2.5 应用软件仿真和开发环境在本研究课题多机器人推箱子任务的仿真中,所用到的是仿真环境为微软推出的机器人仿真平台Visual Simulation Environment 2008 R3软件完成,机器人的控制程序和控制窗口用Visual Studio 2008 C#编程实现。MRDS为我们提供了一个很好的虚拟环境实验平台,在此可视化仿真平台上,我们可以模拟真实的物理环境,也可以自己依据研究要求构造搭建仿真环境。由于采用了AGELA物理

20、引擎,所以可以在虚拟环境中模仿真实的物理环境。仿真环境是由虚拟引擎服务、物理引擎管理包、本地硬件引擎库和实体几部分组成的。虚拟引擎服务组件主要用于绘制实体部分,同时它还为硬件引擎提供虚拟的时间。该组件建立了整个虚拟世界的框架,同时它还提供了整个虚拟环境的服务或者分布式的系统;物理引擎管理包使用户从底层的物理引擎界面脱离出来的组件,该组件为硬件模拟提供了一个更加简洁和更容易管理的界面;本地硬件引擎库支持硬件AGEIA PhysX技术的处理器可以通过AGEIA PhysX技术加速;实体是指虚拟世界的一些仿真实体模型,通过Microsoft Robotic Studio给这些实体预定义,让用户在虚拟

21、环境中能够更加的调用,用户可以在虚拟环境中使用这些预定义模块建立的复杂的环境,如箱子,球体,桌椅,等物体。MRDS的虚拟环境有很多优点:(1)开发者可以在虚拟环境中分步进行调试,随意的添加构造仿真环境中的物体,这在真实物理环境下是很难实现的。(2)在虚拟环境里,已经提供了多种真实环境中的机器人模型、传感器和运动系统,开发者可以再虚拟环境中大胆的进行试验,测试,而不担心会因操作不当而造成损失。(3)开发者可以自己随意的添加组件到机器人上面,然而在虚拟环境里很容易实现,但是在现实环境里就没那么容易了(4)机器人在虚拟系统中可以实现学习功能,可以在特殊的虚拟环境,让其在虚拟环境里进行学习然而在这个虚

22、拟系统中也还是有缺点和局限性的:MRDS所提供的虚拟环境缺乏真实环境中的噪声数据,所以一旦在实际环境中运用在怎么流畅还是要利用时间去调试。实际的机器人也会时不时的出现一些小问题,在实际环境里还是有些误差的,虚拟系统还是无法准确的模拟一切的,尤其是实时性问题。在Visual Studio 2008中创建一个DSS项目,由于在仿真环境中利用到了差分驱动轮,激光传感器。因此,需要添加三个partner:Simulation Engine, Simulated Generic Differential Driver, Simulated Laser Range Finder。在Visual Simul

23、ation Environment 2008 R3中创建一个仿真环境。如图所示。天空、地板、还有光源和推箱子所必须的两个带有差分驱动轮、激光传感器的自主型移动机器人和一个长方形的箱子。3 仿真实现3.1 应用软件仿真环境建立应用Microsoft Robotic Studio软件创立仿真环境:地面、天空、箱子和两个机器人,并对机器人进行修饰和添加激光传感器。仿真环境如图3-1所示。图3-1仿真环境示意图对于机器人的控制程序,此研究中使用C#语言编程实现,在C#中我们可以创建传感器监视窗口和控制按钮,十分方便。机器人的控制程序可以简单的分析为: 机器人从传感器获取传感器数据机器人自主进行运算输出

24、控制命令要想实现机器人合作推箱子,自主机器人根据箱子斜率B:为正,为零,为负,需要的行为模型为:依照设定速度行驶,减速停止。每个机器人是应该按照设定速度行驶呢,还是减速停止,是根据箱子斜率B计算的,而箱子的斜率B则是由机器人的激光传感器数据计算出来的。此外,因为是两个机器人合作推箱子机器人主服务程序流程图如图3-2所示:机器人判断自我的左右机器人速度V的设定标志位p是否为真计算箱子与机器人倾斜角,即B值3-2机器人程序流程图具体实现方法如下:在Visual C# 2008里,新建一个项目,选择Microsoft Robotics的DSS Service模板,并在“Partners”选项卡中,选

25、择希望添加的合作关系,然后点击“Add as Partner”按钮。其中Simulation Engine是仿真所必须的,其他的可根据创建的环境来选择,在此研究仿真中,我们在仿真环境中使用了差分驱动轮和激光传感器。因此,总共需要添加三个Partner:Simulation Engine, Simulated Generic Differential Driver, Simulated Laser Range Finder。当然也可以创建完后,在程序里手工添加。 / / SimulationEngine partner / Partner(SimulationEngine, Contract =

26、 engine.Contract.Identifier, CreationPolicy = PartnerCreationPolicy.UseExistingOrCreate) engine.SimulationEnginePort _simulationEnginePort = new engine.SimulationEnginePort(); / / SimulatedLRFService partner / Partner(SimulatedLRFService, Contract = laserrangefinder.Contract.Identifier, CreationPoli

27、cy = PartnerCreationPolicy.UseExistingOrCreate) sicklrf.SickLRFOperations _simulatedLRFServicePort = new sicklrf.SickLRFOperations(); / / SimulatedDifferentialDriveService partner / Partner(SimulatedDifferentialDriveService, Contract = drive.Contract.Identifier, CreationPolicy = PartnerCreationPolic

28、y.UseExistingOrCreate) drive.DriveOperations _simulatedDifferentialDriveServicePort = new drive.DriveOperations();以上生成分别对应了我们所选择的三个合作关系,同时定义了跟每个伙伴的消息端口。也可以在此处用手工修改合作关系。DSS程序是从E1Service类的Start方法开始运行的。因为机器人仿真运行软件的原因,两个机器人的DSS程序虽然一样,但需要不同的名字,所以另一个机器人程序命名为E2。3.2 激光数据采集和处理机器人往哪个方向行驶,实现合作等重要问题都是通过激光传感器来感知

29、外界环境后判断出来的获取激光数据: IEnumerator UpdateLaser(DateTime dateTime) / IEnumerator UpdateLaser() var sensorOrFault = _simulatedLRFServicePort.Get(); yield return sensorOrFault.Choice(); if (!HasError(sensorOrFault) sicklrf.State sensorState = (sicklrf.State)sensorOrFault; WinFormsServicePort.Post(new FormIn

30、voke() = _laserDataForm.UpdateLaserData(sensorState.DistanceMeasurements); ); /*此处添加控制代码*/ Activate(Arbiter.ReceiveWithIterator(false, _dateTimePort, UpdateLaser); TaskQueue.EnqueueTimer(TimeSpan.FromMilliseconds(600), _dateTimePort); yield break; 此段程序为每过600毫秒就会执行一下UpdateLaser,这样激光数据每过600毫秒就更新一次,以此来

31、实时检测外部环境的变化,是机器人作出正确可行的行为,完成任务。已知激光传感器总共发射361条激光,每条激光的长度存在一个长度为361的数组sensorState.DistanceMeasurements中。而曲线拟合中我们用到的是直角坐标,所以我们需要把激光的极坐标转化为直角坐标,并存入数组_x,_y,程序如下:for (int i = 170; i 191; i+=10) ai = sensorState.DistanceMeasurementsi; _xm = ai * Math.Cos( i * Math.PI / 360); _ym = ai * Math.Sin( i * Math.

32、PI / 360); m+; m = 0;利用最小二乘原理进行曲线拟合,曲线拟合函数public double line()如下,其中我们用到了求和函数public double sum(double z)和求积的和函数public double sum2(double z, double z1):public double line() double k = 0; x = sum(_x); x2 = sum2(_x, _x); y = sum(_y); xy = sum2(_x, _y); int n = 3; k = (n * xy - x * y) / (n * x2 - x * x);

33、 /为斜率 return k; /求和函数 public double sum(double z) double n = 0; for (i = 0; i 3; i+) n += zi; return n; /求积的和函数 public double sum2(double z, double z1) double n = 0; for (i = 0; i 3; i+) n += zi * z1i; return n; 3.3 推箱子控制程序界面在仿真的过程中,我们需要干扰来测试机器人合作是否有效的执行。我们需要控制其中一个机器人突然停止,这可以通过窗口事件实现,窗口事件可以手工的设置机器人状

34、态。此时,我们需要在仿真服务中定义操作接口,通过消息来激活相应的操作。首先在窗体中增加一个按钮,当点击这个按钮时,希望能够使相应的机器人暂停行驶或继续行驶。为了能够在窗口中向主服务程序发送消息,我们需要把主服务程序的消息端口告诉窗体类,在窗体类中新增一个全局变量保存主服务程序的消息端口,依靠此端口,我们设置机器人的状态,在主服务程序中进行判断并控制机器人的输出。图3-3控制和显示窗口如图3-3所示,有两个窗体,每个窗体上部为机器人激光传感器的平面示意图,此图一机器人激光传感器发射处为原点,正前方为Y轴,水平为X轴;下部有一个按钮,即人为干扰的“停止/启动”按钮。主服务程序中,获得机器人状态的函

35、数如下,并输出机器人状态,其中p为false时,机器人输出速度为V,p为true时,机器人输出速度设为0:public virtual IEnumerator PausedEngineHandler(PausedEngine state) var stateOrFault = _simulationEnginePort.Get(); yield return stateOrFault.Choice(); p = state.paused; LogInfo(Paused Mseeage + p.ToString(); 3.4 推箱子控制程序图3-4仿真效果在仿真环境中,有两个机器人,当箱子发生旋

36、转时,如图3-4所示,左侧的机器人需要加速行驶,右侧机器人需要减速行驶,即虽然两个机器人检测计算出相同的B值,但因为位于箱子左右侧的差别,也需要产生不同的动作,所以研究需要机器人对于相对于箱子的自我位置进行判读。而左右侧的判断只需进行一次就可以,实现函数如下:/判断左右 if(!rlflag) for (int i = 0; i sensorState.DistanceMeasurements.Length; i+) if (sensorState.DistanceMeasurementsi 8000) r = i; l+; if (r - l / 2) 180) rl = 1; else r

37、l = -1; rlflag=true; LogInfo(rl + rl.ToString(); LogInfo(rlflag + rlflag.ToString(); 其中rlflag为是否分出左右的标志位,当为false时,机器人判断箱子中点相对于机器人第180条激光的位置,当机器人激光小于8000的激光编号的中间值小于180时,把全局变量rl设为1,表示此机器人为左侧机器人,否则rl设为-1,为右侧机器人,并把rlflag设为true,下次获得激光时将不再判断机器人的左右。图3-4是一种仿真情况:在仿真进行中,两个机器人直行推箱子,这是突然施加人为干扰,即单击右侧控制窗体的“启动/停止”

38、按钮,此时,右侧机器人突然停止,左侧机器人的激光传感器检测到外侧数据,经过计算得出B值,建立v=f(B)的函数:V=*rl*B+0.4 (3-1)在式3-1中,0.4为机器人初始设定速度,B为0时,机器人输出速度0.4;rl为机器人左右判断值,当左右不同时,rl为1或-1,使机器人在初始速度0.4的基础上,加减与B的值成比例的速度,为比例系数,当不同时,机器人输出速度的超调不同,控制方法的好坏不同,在试验中,的值设为0.5;在以上的基础上,本研究又对机器人的速度进行了约束,即0=v=0.5,具体程序如下:if (v 0.5) _simulatedDifferentialDriveService

39、Port.SetDriveSpeed(0.4f, 0.4f); _simulatedDifferentialDriveServicePort.SetDriveSpeed(v, v);4 仿真结果4.1 实验结果我们利用机器人仿真软件进行仿真。在这个仿真环境中,有一个长形的箱子,在箱子的同一侧,有两个完全相同的机器人,机器人的任务就是相互协作,完成直线推箱子的任务。图4-1机器人合作推箱子效果示意图如图4-1所示,机器人能够合作向前直行推箱子,当有一侧的机器人出现故障停止或减速行驶时,另一侧的机器人会及时的发现,并停止行驶进入等待状态,当停止的机器人继续行驶并使箱子又恢复到面向机器人正前方时,机

40、器人将恢复到初始状态,继续同时向前推箱子。4.2 实验分析在实行仿真的过程之中,会出项各种各样的问题和错误,我们需要一点一点的修改和调试。出现的问题有:(1)在仿真环境中,机器人只会原地状态轮子转,却无法向前行驶,这是因为机器人的位置不对,处于浮空状态,无法接触地面。(2)机器人推不动箱子,这是因为箱子的设置问题,是箱子和地面连在一起,使机器人向前行驶却无法推动箱子。(3)程序无法调试和生成,这是因为程序中引用路径的问题,依据自己安装软件的位置,设置相应的引用路径,并添加需要的引用就可以解决(4)在仿真环境中添加人为干扰,使两个机器人同时停止和行驶,没有达到目的。原来这是因为在主服务程序中,是利用已有的函数进行仿真引擎的停止和运行来控制机器人的,结果在同一仿真环境中,停止引擎,两个机器人都停止了行驶。解决方法是在主程序中设置标志位,当需停止时,不停止仿真引擎,只把相应的机器人轮子速度输出设为(0,0),当需行驶时,机器人轮子速度输出设置为相应值,使机器人行驶。5 总结本课题研究的是多自主型移动机器人在箱子同一侧时,合作向正前方推箱子的任务,在Visual Simulation Environment 2008 R3中创建仿真环境,利用Visual Studio 2008编写以控制程序,给控制机

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号