能力风暴机器人高级编程控制_第1页
能力风暴机器人高级编程控制_第2页
能力风暴机器人高级编程控制_第3页
能力风暴机器人高级编程控制_第4页
能力风暴机器人高级编程控制_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、能力风暴机器人高级编程控制通过前面的学习,同学们对能力风暴机器人的结构和传感器已经有了比较全面的了解,并且能够利用VJC系统编写可视化的流程图程序来控制机器人的动作,这对进一步学习和研究机器人是非常重要的。能力风暴机器人的编程方式有两种,即流程图方式和JC代码方式。流程图方式虽然简单直观,但功能有限,如果要编写更复杂的程序,特别是进行机器人创意设计时,就需要使用JC代码方式来编写程序了。使用JC代码方式编程,将有利于我们进一步掌握计算机解决问题的思路和方法,更深层次地理解机器人智能化的工作原理,为进一步研究和制作机器人奠定基础。本章我们将通过VJC系统开发版软件,介绍如何在JC编程环境下直接使

2、用JC代码编写程序。同时还将结合国内外机器人大赛中的一些比赛项目,如:机器人灭火、机器人踢足球、机器人创意制作等,引导同学们综合实践机器人项目编程控制的方法与全过程。-78JC 语言编程方法简介在前面的学习中,我们为机器人编写控制程序都是采用VJC系统中的流程图形式,相信同学们已经感受到这种编程方法确实直观易学。然而,如果我们要编写更自由、更复杂的机器人程序一般就要采用第二种编程方法-JC语言编程。本节我们就来了解JC语言编程的基本 方法。由于VJC系统仿真版不支持JC代码编程,所以,本节编程必须在VJC系统开发版中进行,并下载到真实机器人上调试。VJC新建|打开回。法程图程序鼠府超用碍程用前

3、定关闭JC编程的基本操作.进入JC编程界面用JC语言编程时,首先要在计算机中安装VJC系统开发版软件。启动软件时,双击桌面上的VJC图标,知识链接 在VJC对话框中选择 “JC代码程序”,再单击 “确定”按钮,就可进入图3-1-1 VJC新建对话框JC编程界面,界面组成如图3-1-2 。I二y.PFU垢般D祖日工凤山金口也佬打0X911K循 丫几忍方旦基智聚英-【JL1I二一盘丝当机器人连接在计算机上时,在JC代码命令窗JC代码程序下载按钮 编程方式切换按钮 口可直接执行条或若干条JC语JC代码程序编辑窗口 句,执行的结果将显示在编译窗口内。这一调试技巧JC代码命令窗口常用于编辑时直接测试某些

4、命令编译窗口语句的效果。图3-1-2 JC语言编程界面-79-:流程图编程方式与JC代码编程方式可通过VJC工具栏上的编程方式切换按钮进行切换,这种方式有利于初学者从流程图编程方式起步,然后逐步过渡到用 JC语言方式进行编程。.编辑JC语言程序在JC代码编辑窗口内逐行用JC语句编写程序,每一句的后面均可加入注释(注释内容放在7* */ 之间),便于阅读和修改。例如:下面就是一个用JC语言编写的控制机器人走正方形的程序。知识链接Main()一个JC语言程序一般由一个 主函数(main()函数)和若干个自 定义函数组成。程 序的执行自动从main()函数开 始,在主函数的执行过程中,可以调用库函数

5、,也可以调用自定义函数,图3-1-3机器人走正方形的JC程序调用后还要返回分析上面的JC程序可以看出,编写JC程序有如下基本规定:到main()函数,(1) 一个JC程序至少有一个主函数,主函数说明语句一般是: 在 main( ) 函数中void main( ) 结束整个程序的其中: void 为函数返回值类型, void 类型表示该函数不返回值,运行。main( ) 函其它返回值类型还有: int (整型)、 float (浮点型)。 main 为函数是系统定义的。数名,主函数一般均命名为main,自定义函数可命名为其它名 称。每个函数名后面必须有一对圆括号 “()”,圆括号内可以定义函数的

6、参数。2)每个函数说明语句的下面都会有一对花括号“ ”,用于标出函数定义的开始位置和结束位置。-803)在函数定义范围内是一系列用于控制动作、循环、判断等的JC语句或库函数(JC的库函数请参看本书附录),每个JC语句后面必须以分号 “ ;” 结束。4)如果在循环体或分支体内是一组语句,那么这组语句必须包含在花括号“ ”内。3下载调试编辑好的 JC 程序可通过“下载”按钮下载到机器人中进行调试。下载前首先按照 1.2 节阅读材料所述连接方法,将真实机器人与计算机通过下载线正确地连接起来,然后打开机器人的电源开关,再单击JC工具栏的“下载”按钮,就可将程序下载到机器人中如果程序编写无误,下载时系统

7、会自动编译程序,并在编译窗智密下载理序f的-Th,口内显示“编译成功”,同时弹出下载提示信息,如图 3-1-4。如果程序编写 有误,下载时在编译窗口内会显示相应的提示信息。凶J 1.硼定机器人的吊口线已正询连搂J立墙定机器人的电源开关已打开串口工霸叶二: |编译成功,图3-1-4下载提示信息下载完毕后,拔掉下载线,将机器人放入调试的场地中,按下机器人上的 “运行”按钮,就可以运行或调试程序了。3.1.2 JC编程的相关知识用JC语句编程时,除了要熟记前面我们介绍的各模块对应的JC语句或函数外,还应了解一些 JC编程的相关知识。1.常量常量是程序运行过程中其值不能改变的量。JC中常量分为整型常量

8、、长整型常 量和浮点型常量。-81-(1)整型常量常见的整型常量有以下几种形式:十进制形式的整型常量:如: 0、 1、 255、 -1 等;二进制形式的整型常量:通常用“0b”作为前缀,如:0b1001001;十六进制形式的整型常量:通常用“0 x”作为前缀,如:0 x1abf;字符串型常量:字符串型常量是用双引号引起的一个或若干个字符,如“ a”、“abcd”;整型常量的取值范围从-32768 到+32767(十进制数 ) 。2)长整型常量在十进制整数后加上后缀“ L” 就变成了长整型常量,其取值范围从-2147483648 到+2147483647(十进制数) 。3)浮点型常量浮点型常量是

9、用小数形式或科学计数法表示的一类数,如:2.543E+8,后者表示2.543 X10。浮点型常量的取值范围从-383810 到 10。在能力风暴机器人中因无浮点运算硬件,浮点运算要比整型运算慢,所以尽量不要采用浮点运算。2变量变量是程序中用于存放数据的量,它在程序运行过程中可以发生改变。1)变量的命名变量的命名一般由字母、数字、下划线字符组成(首字符必须为字母),如:a、gi_1,但JC语言规定的专用词不能用作变量名,如: if 、 wait 、 drive 等,此外,变量名和函数名也不能相同。2)变量的类型在JC程序中,变量的类型可分为整型(int )、长整型(long)、浮点型( floa

10、t )和字符型( char )。3)变量的定义在JC程序中,要求变量必须先定义,后使用,通常变量定义-82-知识链接 语句放在函数外或函数内块的起始处。变量定义语句的格式有两种:类型 变量名;在一个定义类型 变量名 = 初始值 ;语句中,被定义的如: int gi_1=0 ;变量可以是一个, float time ; 也可以是同类型4)局部变量的多个变量,但是局部变量指在函数内部定义的变量(或函数的参数),它的作多个变量之间要用范围是局部的,即该变量只在该函数定义范围内有效。 用逗号分隔。5)全局变量变量被定义为某一类型后,其全局变量指在函数的外面定义的变量,如图 3-1-3 程序中的 a取值

11、范围应当符变量。全局变量在该程序的所有函数范围内均有效。合该变量类型。 当局部变量与全局变量同名时,在该函数内系统会自动屏蔽全局变量。为了避免产生混乱,一般多用局部变量,尽量少定义全局变量。3运算符号及运算顺序知识链接 算术运算符:加法+,减法- ,乘法 * ,除法 /关系运算符:大于 ,小于,等于=,大于等于=,小于等于 =,不等于!=如果在程序位运算符:按位或| ,按位与&,按位异或八,按位取反中用到逻辑运算,逻辑运算符:或运算| | ,与运算&,非运算! 总是把整数零作对于多种运算混合的表达式,一般运算顺序是: 为假 (false) ,任非运算 ?算术运算?关系运算?与运算和或运算。何非

12、零值作为真对于算术运算的顺序可概括为一句话:先括号、后函数、再乘(true) 。 除、最后加减。4屏幕显示函数及格式化字符参数在前面的学习中,我们已经了解到屏幕显示函数主要用于输出数据,语法格式如下:printf ( 格式化字符串, 参数 1 , , 参数 N) ;-83-如:printf (max=%d n” , max) 表示显示字符串 “max二 及其变量 max的值,其中 d 表示以十进制数的形式显示,“ n” 表示显示后光标自动换到下一行。我们将的作格式化字符,其它的格式化字符见下表:格式化字符数据类型 说明d Int 十进制整数%X Int 十六进制整数%b Int 二进制数%C

13、Int ASCII 字符%f Float 浮点数%S Char 字符串【实践名称】JC环境下的编程与调试。【实践目的】初步掌握用JC语言编写机器人控制程序的方法。 实践体验【实践项目】试编写一段机器人在场地内听令出发并自动走出迷宫的 JC 程序。【实践步骤】项目分析:这个程序编写思路我们在前面已分步讨论过,即:机器人听令出发后,采用左行规则划弧前进,不断检测左方和前方是否有障(墙),遇到碰撞时,先后退一点,然后右转再继续前进,直至到达迷宫出口。因为用 JC编程,除了要启动VJC开发版软件进入JC编程环境外,还会用到许多JC函数、存放检测值的变量以及循环结构和判断结构等,例如:声音检测函数:mi

14、crophone( ), 碰撞检测函数: bumper()红外检测函数:ir_detector (),单轮驱动函数: motor (1, 100) ,双轮驱动函数: drive (-60 , 0)编程与调试:(1)启动VJC开发版,进入JC编程界面;-84( 2) 在代码编辑窗口内逐行输入下列程序: TOC o 1-5 h z int Ir,bmp,mic=0; /* 定义三个全局的传感变量*/void main() /* 定义主函数*/while (mic80) mic=microphone(); /* 循环检测声音*/while(1)bmp=bumper();if (bmp!=0) /*

15、有碰撞,则倒退一点再右转前进 */drive(-60,0);wait(0.1000);stop();drive(0,80);wait(0.2000);stop(); TOC o 1-5 h z else /* 否则检测前方是否遇到墙*/Ir=ir_detector();if (Ir=4)drive(0,80);wait(0.2000);stop();else /* 否则检测左方是否遇到墙*/if (Ir=1) drive(0,80);wait(0.1500);stop();else /* 无墙无碰时,按左行规则划弧前进*/motor(1,50);motor(2,100);wait(0.1000

16、);( 3)将机器人通过下载线与计算机连接起来,打开机器人电源开关,单击VJC工具栏中的“下载”按钮,将程序下载到真实的机器人中;( 4)下载完毕时,拔掉下载线,将机器人放在真实的迷宫场地,按下“运行”开关,并拍手发声,检验机器人能否走出迷宫。:如果用真实的机器人实践本程序,首先应调整红外检测的距离,调整方法可参看相关的说明书。通过实际运行,再微调一下其它参数,如转弯的时间、速度等。如果无真实的机器人,则下载调试这一步省略不做,只要理解并能在 JC环境下编出程序即可。-85( 1)你能编写一段机器人自动寻光的JC 程序吗?(2)你能编写机器人绕标比赛的JC程序吗?试试看,如有困难,先打开前面编

17、写过的机器人绕标比赛流程图程序,分析其对应的JC代码,然后再独练一练立用JC语言进行编辑。本节主要学习了能力风暴机器人的 JC语言编程的基本方法。介绍了 JC环境的进入、界面组成以及如何编辑 JC程序、如何下载JC程序等。另外还介绍 了与JC编程相关的基础知识,如:常量、变量、运算符、表达式、运算顺显示命令等。最后通过一个小实践项目,体验了JC编程控制机器人的全过【反思评价】回顾本节学习内容,评价本节学习情况。( 1) 我在本节学会了:2) 对于 JC 程序的基本格式及相关的基础知识:我已理解并能运用? 初步理解? 还需进一步学习 ? ( 3) 对照流程图程序:我可以写出对应的JC 代码程序?

18、我可以读懂对应的 JC 代码程序 ?我还需要别人的帮助或提示才能读懂 ?(4)用JC编程并控制机器人运行:我已熟练掌握? 初步掌握 ? 还需进一步实践和研究?-86-阅读材料北京时间 1997 年 5 月 12 日凌晨 4 时 50 分,当“深蓝”将棋盘上的兵走到 C4位置时,卡斯帕罗夫推秤认负。至此轰动全球的第二次人机大战结束,“深蓝”以3.5 : 2.5 微弱的优势取得了胜利。那么“更深的蓝”是何许人也?卡斯帕罗夫又是何许人也?“更深的蓝”是美国 旧M公司生产的一台超级国际象棋电脑,重 1270公斤,有 32 个大脑(微处理器),每秒钟可以计算2 亿步。“更深的蓝”输入了一百多年来优秀棋手

19、的对局两百多万局。卡斯帕罗夫是人类有史以来最伟大的棋手,在国际象棋棋坛上他独步天下,无人能出其右。可是,在临近世纪末的 1997 年,孤独求败的卡斯帕罗夫不得不承认自己输了,而战胜他的是一台没有生命力、没有感情的电脑。也许这是一件偶然的事件,可是,这件事使人类看到了一个自己不愿看到的结果:人类的工具终于有一天会战胜自己。“深蓝”和卡斯帕罗夫曾于 1996 年交过手,结果卡斯帕罗夫以 4: 2 战胜了“深蓝”。经过一年多的改进,“深蓝”有了更深的功力,因此又被称为“更深的 蓝”。“更深的蓝”与一年前的“深蓝”相比具有了非常强的进攻性,在和平的局面下也 善于捕捉杀机。卡斯帕罗夫与“更深的蓝”的较量,引来了全世界无数棋迷和非棋迷的关注。人们对此次人机大战倾注了巨大的热情,各种新闻媒体都竞相报道和评论此

温馨提示

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

评论

0/150

提交评论