为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[精品]10月19日虚拟机器人材料

2017-12-19 9页 doc 62KB 10阅读

用户头像

is_421808

暂无简介

举报
[精品]10月19日虚拟机器人材料[精品]10月19日虚拟机器人材料 10月19日虚拟机器人材料 启动后,出现4个选择: 一、 快速启动:快速启动运行部分程序实例。另外可以导入或者导出外部的程序实例。 二、 场地编辑: 在场地上点鼠标右键设置属性:可以改变场地的大小,修改场地的名字,最重要的是可以导入外部的图片在作为场地的背景。比如要虚拟机器人走轨迹,我们可以通过PHOTOSHOP等绘图工具自己绘制一条轨迹曲线,然后将它应用到我们的场地中。其中要注意两点:图片的格式需要为JPEG格式,并且放到map文件夹下;所画的线条不能太粗也不能太细,经我们多次实...
[精品]10月19日虚拟机器人材料
[精品]10月19日虚拟机器人材料 10月19日虚拟机器人材料 启动后,出现4个选择: 一、 快速启动:快速启动运行部分程序实例。另外可以导入或者导出外部的程序实例。 二、 场地编辑: 在场地上点鼠标右键设置属性:可以改变场地的大小,修改场地的名字,最重要的是可以导入外部的图片在作为场地的背景。比如要虚拟机器人走轨迹,我们可以通过PHOTOSHOP等绘图工具自己绘制一条轨迹曲线,然后将它应用到我们的场地中。其中要注意两点:图片的需要为JPEG格式,并且放到map文件夹下;所画的线条不能太粗也不能太细,经我们多次实验发现线条粗细在PHOTOSHOP中选择3或者4最为合适。 在场景组件选择中有常用和标识点两中,场景组件中有火焰,方体等,选择你需要的组件——添加部件——点场地中的位置,就可以把组件放到场地上了,然后在组件上点鼠标右键设置长宽高和坐标等属性;标识点里面主要是定义启动程序后机器人的初始点和最后的终点等,如不定义,则启动程序时自己放机器人的位置。 三、 机器人搭建: 启动后只能看到一个主机(有的书上叫主板),搭建机器人的组件主要有以下: 1( 传感器:指南针传感器(模拟:传感器正向指向不同的方向,有不同的数值)、 火焰传感器(模拟:离火焰越近值越小)、灰度传感器(模拟:颜色越深值越大)、 碰撞传感器(数字:只有0和1两个值明碰还是没有碰)、红外避障传感器(数 字:只有0和1两个值表明前方一定距离内有障碍还是没有障碍)。 2( 马达:分Z马达和直流电机,Z马达的样子就像个Z,轮子需要安装到它上面; 直流电机,灭火机器人需要安装风扇,就需要利用它。 3( 轮子:轮子分为万向轮和小轮宽胎,万向轮方便转弯,所以它一般安装在前方。 小轮宽胎用于稳定机器人行走,至少需要两个安装在后方。 4( 其他配件:铜柱和风扇,机器人灭火的时候需要用到它们。 安装过程:省略 端口设置:两Z马达一般设置为0和1;直流电机设置为2;模拟端口(2-6和16-24);数字端口(7-15) 安装过程中注意:传感器的位置(前方还是后方,左还是右,传感器的位置很大程度上决定程序的编写);Z马达的端口(0还是1,决定了转弯的时候哪一边转的快,哪一边转的慢,或者是谁正转谁反转);传感器的感应夹角和感应距离(过早感应或过晚感应程序编写不同,也有可能出现感应不到物体或者卡死不动等现象) 四、 进入仿真 1( 规则选择:不同的比赛项目对传感器数量,马达转速等都有要求,不同的比赛主办 方会事先给出规则。(可以从其他地方找到规则导入) 2( 场地选择:你现在要运行的程序的场地 3( 编写程序(这部分下面专门说明) 4( 选择机器人 然后下一步开始测试 五、 程序的编写 下面以几个实例来说明: (1) 控制一个虚拟机器人在空白场地上全速行驶2秒后停下来 图形下的程序流程如下: C语言程序: 1 void main() { motor(0,100); motor(1,100); sleep(2.0); stop(); } (2) 走简单轨迹机器人,走一条自己绘制的S形曲线 1( 先用PHOTOSHOP绘制一条S形线,保存为JPEG格式,并在map文件夹下,在场 地属性里选择场景纹理,选择你所画的图片,保存场景。 2( 机器人搭建,需要2个Z马达,2个小轮胎,1个万向轮,2个灰度传感器,Z马达 端口设置为0和1(以左0右1为例);灰度传感器,端口设置为5和6(左6右5 为例) 3( 程序编写如下: 图形下的程序流程 C语言程序: void main() { while(1) { if( analog(5)>200) { motor(0,30); motor(1,-30); } else { if( analog(6)>200) { motor(0,-30); motor(1,30); } else { motor(0,100); motor(1,100); } } } (3) 机器人走迷宫并灭火程序: } 1( 机器人的搭建:需要2个Z马达,2个小轮胎,1个万向轮,3个红外线避障传感器, 2 直流电机1个,铜柱若干,火焰传感器3个 先实现走迷宫,程序如下: void main() { while(1) { if( digital(8)==1 || digital(9)==1) { motor(0,50); motor(1,-50); } else { if( digital(7)==1) { motor(0,100); motor(1,100); } else { motor(0,-50); motor(1,50); } } } } 走迷宫的时候用了7,8,9号3个端口,当8号或者9号探测到障碍的时候,这时候向右转,在8号和9号都没有探测到而7号探测到的时候直接行走,如果3个传感器都没有探测到障碍,那么向左转。 这时候还是应该继续右转 这时候该直行了 这时候该右转 这时候该左转 然后要加上灭火 3 图形下的程序流程如下: 火焰传感器分布: 5 4 6 4 C语言程序代码: void main() { while(1) { 当3个火焰传感器中的某一个的探测值小于 if( analog(4)<100 || analog(5)<100 || analog(6)<100) { 100,表示离火焰已经比较近了,这时候进入 if( analog(5)<80) 方向微调时期,目的就是让风扇更接近火焰, { 风方便灭火。 motor(0,100); motor(1,100); sleep(0.1); 当最中间火焰传感器的值小于80时,再让机 off(0); off(1); 器人前进了0.1 秒,这时候离火焰更近,停 motor(2,100); 止马达0和1,启动直流电机2,带动风扇转 sleep(1.0); 动,开始灭火,灭火时间延迟1秒 } else { if( analog(4)<50) { motor(0,-20); motor(1,20); 可能出现的左右微调时间,在这段时间下, } 移动速度较慢,若左边探测值很小,表明火 else 焰在左方,向左转一点,反之右转一点 { motor(0,20); motor(1,-20); } } } else { if( digital(8)==1 || digital(9)==1) { motor(0,50); motor(1,-50); } else { if( digital(7)==1) 在离火焰很远的地方,走正常的迷宫 { motor(0,100); motor(1,100); } else { motor(0,-50); motor(1,50); } } } } } 此程序非优化,实际在调试过程中有时候会卡住或者灭不了火,需要不断调整传感器的感应夹 角、感应半径,或者调整程序中设置的模拟信号的程序分支触发值,有的程序代码也根本不会 5 执行到,同样的程序有可能在不同的机器上,有时候通的过,有时候就通不过。 目前的虚拟机器人,省上组织的比赛项目一般为:组的机器人走迷宫(如第3个实例的前半部分);初中组的为机器人走迷宫灭火(火焰有多支,需要一一灭掉并达到指定点);高中组的为机器人走八卦图(程序较为复杂,特别是临场很容易机器人走卡,完不成任务)。 比赛的地图:比赛的地图和软件自带的地图并不一样,由参加比赛时现场决定为准。所以平时训练需要提供多种不同形式的地图,提高学生应变能力。 比赛的胜负:在能完成任务的情况下,谁花的时间最少,谁就是最优胜者。所以比赛的时候已经能够完成任务了,还要考虑如何调整才能让机器人花的时间更少,需要对程序进行优化,让机器人少走路,走的更快等。 因为这个仿真软件不够成熟,厂家也在不断更新,在实际应用中会出很多错,也会出很多奇怪的现象。所以在比赛的时候都是只能去适应它,程序或许逻辑没有问题,但是也需要做不断的调整和修改才能完成任务。 最后,由于没有,以上内容都是我们在实际应用中实践而写,或许会有一些问题,若兄弟学校以后也搞此类活动,可以共同探讨软件的一些不足和更优化的方法 双流中学实验学校 2007年10月 6 7
/
本文档为【[精品]10月19日虚拟机器人材料】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索