能力风暴编程_第1页
能力风暴编程_第2页
能力风暴编程_第3页
能力风暴编程_第4页
能力风暴编程_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

第4章能力风暴编程14.1第一个VJC程序,Hellorobot!双击桌面上的VJC1.5开发幅员标,进入了机器人编程界面。VJC1.5开发版支持流程图程序和交互式C语言〔JC〕程序。下面我们就用VJC1.5开发版的流程图为机器人编写第一个程序“Hello,robot!〞。这个程序要求在能力风暴的液晶显示屏LCD上显示“Hello,robot!〞我们要编写的程序如图4-1左图所示:图4-1Hello,robot!点击工具栏中的“新建〞按钮,新建一个程序;用鼠标将“执行器模块库〞中的“显示〞模块拖入到流程图生成区,放在主程序模块正中的下边沿的位置,看看“主程序〞模块与“显示〞模块之间是不是有箭头连接,有那么说明连接上了,否那么再调整一下“显示〞模块的位置。右键点击“显示〞模块,就会出现如图4-1右图〔局部〕所示的对话框,请将显示信息由HI改写为Hello,robot!设定完毕,按确定就可以了!在“程序模块库〞中选择结束模块,将它连在“显示〞模块之后,这样整个程序就编写完成了,按工具栏中的“保存〞按钮,将程序保存在VJC目录下!将机器人与计算机连接起来〔用串口连接线,一端接计算机的九针串口,一端接机器人后面控制面板上的下载口〕。将机器人的“开关〞按钮翻开,使机器人处于开机的状态。按VJC界面中的“下载〞按钮,待看到“下载成功!〞字样时,取下串口连接线,将机器人放在平稳的地方,按机器人头顶上的“RUN〞按钮,机器人的液晶显示屏上就会显示出Hello,robot!voidmain(){printf("Hellorobot!\n");}24.2让机器人动起来下面我们就尝试着让机器人动起来。〔相关的知识介绍请参看VJC1.5开发版使用手册》〕在VJC1.5开发版执行器模块库中有一专门控制机器人“移动〞的模块,这里我们就用它来编写一个机器人直线行走的程序。要求:先让机器人以速度100前进3秒,再让机器人以速度-60后退5秒,再在原地以功率80旋转1秒。〔如图4-2所示〕图4-2机器人移动4.2.1在VJC1.5开发版窗口中编写流程图(示范操作步骤)a)编写流程图:用鼠标将“执行器模块库〞中的“移动〞模块移到流程图生成区并与主程序模块连接上;设置时,右击“移动〞流程图模块,在弹出框中输入移动速度为100、时间为3;b)再用鼠标将“执行器模块库〞中的“移动〞模块移到流程图生成区并连接在流程图的末端位置;设置第二个“移动〞流程图模块,点击右键在弹出框中输入移动速度为-60、时间为5;c)再将“执行器模块库〞中的“转向〞模块连接到程序中,点击右键进入设置对话框,分别设置速率和时间为:80和1d)再将“程序模块库〞中的“任务结束〞移入到流程图生成区并连接在程序的末尾。3voidmain(){drive(100,0);wait(3.000000);stop();drive(-60,0);wait(5.000000);stop();drive(0,80);wait(1.000000);stop();}Voiddrive(intmove,intturn)点击“工具栏〞中的“编辑JC程序代码〞按钮,切换到JC代码界面,可以对此界面中显示的JC代码进行修改,比方我们可以让机器人后退7秒,那么我们就可以把程序中与“移动〞模块相对应的参数5.000000修改为7.000000。44.2.2保存源代码程序点击工具栏中的“保存〞按钮,输入文件名,按“确定〞。4.2.3程序下载此时,能力风暴要处于开机状态,并且串口连接线已与计算机连接。点击“工具〞中的“下载当前程序〞按钮,就会出现下载对话框,等待出现“下载成功!〞字样,说明程序已经下载到能力风暴里了。4.2.4运行程序将串口连接线取下,将机器人带到平安的地方,按机器人身上的“运行〞键,能力风暴智能机器人就按程序要求快速前进3秒,再后退7秒,然后再旋转1秒。54.2.5走出规那么轨迹下面我们让能力风暴在地上走出一个规那么的轨迹。voidround(){drive(60,30);//顺时针转弯wait(10.0);stop();}能力风暴顺时针走约一米见方的正方形路。voidrectangle(){inti;for(i=0;i<4;i++){drive(100,0);wait(1.0);drive(0,60);wait(0.2);}stop();}能力风暴逆时针走约一米见方的正方形路径。其中wait(0.2)是能力风暴转90弯所需要的时间。该值和转弯速度以及能力风暴的电机有关,需要实际调整,此外地面的摩擦力也有影响。利用wait()函数是控制电机工作的常用方法。64.3让机器人感知环境信息

在VJC1.5开发版的“传感器模块库〞中,有让机器人能够感知环境信息的模块,这些功能模块的调用能够带给机器人感觉。比方说“光敏检测〞能够让机器人感觉到外界光线的强弱;“红外测障〞能够让机器人检测前/左/右方的障碍等等。下面我们就试着让机器人感知外界环境。让机器人对外界的光线进行检测,并在LCD上显示左右光敏所检测到外界光线的平均值。示范操作步骤如下:4.3.1编写流程图a)用鼠标将“控制模块库〞中的“永远循环〞模块移到流程图生成区并与主程序模块连接上。b)用鼠标将“传感器模块库〞中的“光敏检测〞模块移到“永远循环〞模块内部并连接上;右击“光敏检测〞流程图模块,在弹出框中方向一栏选择“平均〞,按确定。c)再用鼠标将“执行器模块库〞中的“显示〞模块移到流程图生成区并连接在“光敏检测〞的后面;d)设置“显示〞模块,点击右键在弹出框中选择“应用变量〞,就会出现一个“变量百宝箱〞的界面,在此界面中点击“光敏〞图标,在“光敏变量引用〞中选择“光敏变量一〞,按确定即可,这样“显示〞模块中的“显示信息〞就为“光敏变量一〞;f)再将“程序模块库〞中的“任务结束〞移入到流程图生成区并连接在程序的末尾。图4-4机器人感光VJC程序也可以点击“工具栏〞中的“编辑JC程序代码〞按钮,切换到JC代码界面,对JC代码进行修改。74.3.2保存程序点击工具栏中的“保存〞按钮,文件名输入:感光,按“确定〞。此时,“感光.flw〞流程图程序文件已被保存。4.3.3程序下载此时,能力风暴要处于开机状态,并串口连接线已与计算机连接。点击“工具〞中的“下载当前程序〞按钮,就会出现下载对话框,等待出现“下载成功!〞字样,说明程序已经下载到能力风暴里了。4.3.4运行程序将串口连接线取下,将机器人带到平安的地方,按机器人身上的“运行〞键,在机器人的LCD上就会显示出外界光线的平均值。84.3JC程序的根本程序结构下面是JC程序中最常见的一种程序模式。while(1) /*循环检测*/{ir=ir_detector(); /*对环境采样*/if(ir>0) /*条件判断*/{语句1; /*做相应的处理(模块A)*/语句2;}else{语句3;/*做相应的处理(模块B)*/语句4;}wait(0.1); /*采样周期*/}94.3.1一个机器人“台球〞程序下面结合“台球〞程序来学习碰撞传感器的使用。voidmain(){intbill_trans=0;/*定义直行变量*/intbill_rot=0;/*定义转弯变量*/intbmpr=0;/*定义碰撞变量*/while(1)/*无限循环检测*/{bmpr=bumper();/*检测碰撞*/if(bmpr!=0){stop();wait(0.1);/*碰后停0.2秒确定两个开关均触发*/if(bmpr==0b0011)/*正前碰撞*/{bill_trans=-40;/*后退*/bill_rot=0;}elseif(bmpr==0b1100)/*正后碰撞*/{bill_trans=40;/*前进*/bill_rot=0;}elseif(bmpr&0b1010)/*右侧碰撞*/

{bill_trans=0;bill_rot=-40;/*左转*/drive(bill_trans,bill_rot);wait(0.25); /*左转0.25秒*/bill_trans=40;bill_rot=0;/*前进*/}elseif(bmpr&0b0101)/*左侧碰*/{bill_trans=0;bill_rot=40;/*右转*/drive(bill_trans,bill_rot);wait(0.25);/*右转0.25秒*/bill_trans=40;bill_rot=0;/*前进*/}drive(bill_trans,bill_rot);/*驱动*/}}}在该函数中有一个检测传感器的常用结构“while(1){检测传感器;作出响应;}〞。在这个例子里,能力风暴响应来自外部四个方向上的碰撞,并相应地改变运动方向。看起来象打台球。104.4.2红外和光敏的使用能力风暴的红外传感器可以说是它最有用的武器。通过红外传感器,能力风暴可以探测到前方和左右两侧10~80厘米以内的障碍,就象它的一对“眼睛〞。下面我们看一个有趣的程序,看看如何使用能力风暴的“眼睛〞。11voidmain(){intir=0;/*红外检测变量*/intbmp=0;/*碰撞检测变量*/intold_bmp=0;/*前一次的碰撞检测结果*/intfol_trans_def=80;/*预设的前进速度*/intfol_rot_def=40;/*预设的转弯速度*/printf("Follow\n");/*显示在LCD屏幕上*/while(1){ir=ir_detector();/*取红外系统检测结果*/bmp=bumper()&0b0011;/*检测前、左、右方向碰撞*/

if(old_bmp&&(!bmp))/*连续两次碰撞测试*/wait(0.5);/*等一会*/

elseif(bmp)/*如果前方有碰撞*/stop();/*停止运动*/

elseif(ir==0)/*前方没有物体*/stop();/*停止运动*/

elseif(ir==4)/*前方有物体*/drive(fol_trans_def,0);/*往前追*/

elseif(ir==1)/*物体在左侧*/drive(fol_trans_def,fol_rot_def);/*转向左*/

elseif(ir==2)/*物体在右侧*/drive(fol_trans_def,-fol_rot_def);/*转向右*/

wait(0.1);/*让运动持续一会*/ol

温馨提示

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

评论

0/150

提交评论