《智能机器人技术》实验报告.doc

上传人:灯火****19 文档编号:135272669 上传时间:2020-06-14 格式:DOC 页数:13 大小:426.50KB
返回 下载 相关 举报
《智能机器人技术》实验报告.doc_第1页
第1页 / 共13页
《智能机器人技术》实验报告.doc_第2页
第2页 / 共13页
《智能机器人技术》实验报告.doc_第3页
第3页 / 共13页
《智能机器人技术》实验报告.doc_第4页
第4页 / 共13页
《智能机器人技术》实验报告.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《《智能机器人技术》实验报告.doc》由会员分享,可在线阅读,更多相关《《智能机器人技术》实验报告.doc(13页珍藏版)》请在金锄头文库上搜索。

1、智能机器人技术课程报告华南理工大学本科生课程报告课程类别: 专业选修课课程名称: 智能机器人技术课程代码: 145030任课教师: 张平 李方机器人避障姓 名 学 号 院 系 计算机科学与工程学院 班 级 计算机科学与技术1班 成 绩 课程报告提交时间: 2013 年 1 月 3 日11目 录 1.实验目的12.实验任务说明12.1.实验任务描述12.2.人员分工13.实验内容13.1.基本理论13.1.1.simbad平台介绍13.1.2.simbad API介绍23.1.3.simbad声纳传感器介绍33.1.4.势场法介绍33.2.实验方案设计和实验方法过程43.2.1.实验方案43.2

2、.2.实验设计43.2.2.1.公式的设定43.2.2.2.公式系数设定43.2.2.3.算法流程53.2.2.4.angleAdjust方法53.2.2.5.transform方法73.2.2.6.reachGoal方法73.2.3.实验过程83.3.试验环境(软硬件配置)93.3.1.软件配置93.3.2.硬件配置93.4.实验结果与分析104.实验总结104.1.实验结论104.2.个人小结115.参考文献111. 实验目的熟悉机器人仿真软件(例如Simbad、Webots、TeamBots、Player/Stage/Gazebo、MotionPlaner等)的使用方法;掌握若干机器人路

3、径规划算法。2. 实验任务说明2.1. 实验任务描述在机器人软件平台上建立一个包含若干个静止障碍物和运动障碍物的仿真环境,设定机器人的起始点和终点后,机器人能够规划出一条从起始点到目标点的安全路径。查阅相关路径规划算法,实现一种以上算法并相互比较。要求给出源代码、试验结果并且进行演示。2.2. 人员分工 姓名工作内容林钊翔负责势场法的实现与一些共用方法的实现陈伟彬负责Bug2算法的实现3. 实验内容3.1. 基本理论3.1.1. simbad平台介绍使用simbad平台,只需要做好三步就可以设置好机器人控制器,这三步分别完成一个主程序、一个环境类、一个机器人类。在主程序中,主要是启动simba

4、d和机器人环境描述类。在环境类中,主要是描述环境中所有的组成成员,包括墙、箱、机器人等。这个类需要继承EnvironmentDescription类,在其中的构造方法中添加环境中的所有成员。在机器人类中,首先该类继承Agent类,并重写其中的两个方法initBehavior和performBehavior。其中,initBehavior是在每次机器人生命开始时都会被模拟器调用的,一般来说不会使用到;performBehavior是每步模拟器运行时都调用的,在正常操作时一秒会调用20次。 最后,就是编译和执行程序了。其中,编译命令为:javac classpath simbad-1.0 main

5、.java environment.java robot.java而运行命令如下:java classpath simbad-1.0: .main整个simbad平台运行起来后,界面如下图所示:3.1.2. simbad API介绍在本次实验中,主要用到的是simbad.sim这个包,其中包括了代表机器人和它所在的环境的类。主要有:Agent:Agent 就是机器人。Arch:机器人可以绕过或从下面通过的拱形结构。Box:可以作为机器人的环境中的障碍物。CameraSensor:可以从机器人的视角查看机器人的环境。EnvironmentDescription:代表 “环境”,可以在其中添加机器

6、人和墙或盒子等对象。LampActuator:可以添加到机器人上的灯。LightSensor:感应光线的强度。RangeSensorBelt:包含机器人周围的一组距离传感器。RobotFactory:用这个类在机器人上添加传感器。Wall:另一种障碍物。而从simbad平台提供的控制机器人与管理机器人的API看,主要分成两部分:(1) 状态APIboolean collisionDetected():当机器人碰撞到别的物体时返回true;int getCounter():返回经过模拟步骤的数量;double getOdometer():返回机器人运动的里程表,以米为单位;double getL

7、ifeTime():返回机器人总的生命时间,以虚拟秒为单位;void getCoords(Point3d coord):返回代理在环境中的坐标。(2) 移动APIvoid setRotationalVelocity(double rv):设置角速度,以弧度 / 秒为单位;void setTranslationalVelocity(double tv):设置平移速度,以米 / 秒为单位。3.1.3. simbad声纳传感器介绍在这次实验中,用得比较多的就是声纳传感器了,主要用于获取机器人到障碍的距离。使用传感器前,需要添加它们到机器人中,使用的语句具体如下:RangeSensorBelt son

8、ars = RobotFactory.addSonarBeltSensor(this);默认添加9个声纳传感器,以逆时针旋转的方式放置,开始在机器人的正前方0度位置。如果需要自定义添加的声纳传感器,则使用RangeSensorBelt sonars = RobotFactory.addSonarBeltSensor(this, sonarsNumber);每个声纳提供了一系列以米为单位的测量信息和命中状态,只有一个障碍坐落在声纳射线就可以获取到信息。要访问每个声纳传感器的内容,可以使用hasHit和getMeasurement方法。3.1.4. 势场法介绍势场法把机器人能处理成在人工势场影响下

9、的一个点,机器人跟随着场移动。目标表现为对机器人的引力,障碍物表现为斥力。所有这些力的叠加,施加于机器人,在大多数情况下,机器人被假定为配置空间中的一个点,这样一种人工市场平滑地引导机器人趋向目标,同时避免碰撞已知的障碍物。但是这种方法也有很多局限性。根据障碍物形状和大小,会出现局部极小;如果物体是凹的,则可能存在机器人在离物体最近的两个点来回震荡的情况。3.2. 实验方案设计和实验方法过程3.2.1. 实验方案(1) 搭建simbad平台,并建起机器人模拟环境;(2) 使用不同的路径规划算法,分别实现机器人避障方法;(3) 设置机器人初始位置和目标点,进行模拟;(4) 从机器人运动的路径长度

10、与时间来进行比较。3.2.2. 实验设计3.2.2.1. 公式的设定本次实验使用静态人工势场方法。借鉴万有引力公式:,记d(r,o)为机器人与障碍之间的距离,d(r,g)为机器人与目标之间的距离,则引力公式可以记为:其中为引力系数。斥力公式则记为:其中为斥力系数,为斥力的最大距离。只有在小于的范围才考虑斥力。最后求出合力:决定机器人的运动方向。3.2.2.2. 公式系数设定根据基于动态人工势场法的路径规划 毕盛等.基于动态人工势场法的路径规划J.机电产品开发与创新.2006,19(4):25-26.2 沈文君.基于改进人工势场法的机器人路径规划算法研究D.暨南大学,2009.3 (美)R西格沃

11、特,IR诺巴克什著.自主移动机器人导论.李人厚译.西安:西安交通大学出版社,2007提供的经验数据,设定为30,设定为1。而则根据本实验的环境选定为2。3.2.2.3. 算法流程(1) 判断机器人是否在目标点了,如果是,则提示到达目标点并显示有关机器人运行时间与距离,返回;否则进入下一步;(2) 获取机器人运动速度在x轴、z轴的分量;(3) 获取机器人距离传感器中编号为0、1、8(机器人前面三个)测量到的障碍距离,并分别加上机器人的半径;(4) 分别计算三个方向对机器人的斥力,保存在数组中;(5) 通过三个斥力大小与运动方向,计算出机器人运动方向与x轴正方向的夹角,求出这三个斥力在x轴与z轴的

12、分力,并用加法合并成斥力的合力,这个过程在transform方法中完成;(6) 计算机器人与目标点的距离;(7) 计算引力大小,并分解到x轴与z轴;(8) 分别计算x轴与z轴的合力,并计算机器人运动方向与合力方向的夹角;(9) 设置机器人的角速度为上一步所求夹角的值;(10) 判断机器人是否撞到障碍,如果有碰撞,随机转动,之后回到步骤(1)。3.2.2.4. angleAdjust方法本方法输入两个向量,返回第一个向量到第二个向量夹角的值,其中,返回值的范围为-p,p。由于本方法可以在两种算法中共用,因此本方法在MyRobot类中,具体说明如下:在simbad平台上,继承了Environmen

13、tDescription类的环境类坐标系如下图所示(只画二维,y轴在本实验中并不使用,故忽略): x 0 z其中,在坐标系中为顺时针旋转,为逆时针旋转。在simbad中,setTranslationalVelocity方法设置的角速度如果值为正时则机器人顺时针旋转,否则为逆时针旋转。在本实验中,向量是用Vector2d类来表示的,而该类提供了一个方法angle(Vector2d v2),返回的是调用该方法的向量v1与v2向量之间的夹角弧度值,范围在0,p。因此,而在本实验中,可能出现以下两种情况: v2 v1 v1 v2 (1) (2)由于使用angle方法返回的值在上面两种情况都一样,而在本

14、实验中,则会出现问题。例如,在上图,如果v1是机器人运动方向,v2是合力方向,则在(1)中返回的是正确的值,而在(2)中则是错误的值,应该是调用angle方法后返回值乘以-1才正确,否则机器人旋转后无法到达合力所示的角度。因此,在本方法中,首先把输入的两个向量标准化为单位向量,然后求出两个向量的夹角弧度值,然后使用v1顺时针旋转该弧度值后判断是否与v2相等,如果是,则返回该弧度值,否则返回该弧度值乘以-1后的值,具体代码如下:protected double angleAdjust(Vector2d v1, Vector2d v2) v1.normalize(); v2.normalize(); double angle =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号