智能小车设计实验指导书

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

智能小车设计实验指导书王恒编2011年4月I目录目录.....................................................................................................I实验阶段一智能小车路径规划.......................................................1实验阶段二智能小车环境感知与控制...........................................6实验阶段三智能小车行为控制.....................................................12附录:库函数......................................................................................17-1-实验阶段一智能小车路径规划一.实验目的1.熟悉智能小车的硬件开发平台与软件开发环境。2.掌握智能小车路径规划程序设计。二.实验内容1.熟悉智能小车硬件设计。2.学习智能小车的软件使用方法,学会软件的编写、调试与下载。3.编写第一个智能小车程序。4.编写智能小车移动程序。5.编写复杂的智能小车路径规划程序。三、实验设备及工具硬件:能力风暴AS-UII开发平台,程序下载线。软件:PC机操作系统Win2000或WinXP、VJC开发平台。四、实验原理与步骤智能小车实验平台配备有5种传感器,对环境的感知能力很强。执行器配备有二只高性能直流电机、一只喇叭和一只2*16字符的液晶显示器。整个小车通过Motorola公司8位单片机来进行控制。智能小车的硬件结构如下图所示:-2-1、第一个VJC程序,Hellorobot!双击桌面上的VJC1.5开发版图标,进入了智能小车编程界面。VJC1.5开发版支持流程图程序和交互式C语言(JC)程序。下面我们就用VJC1.5开发版的流程图为智能小车编写第一个程序“Hello,robot!”。这个程序要求在能力风暴的液晶显示屏LCD上显示“Hello,robot!”我们要编写的程序如图4-1左图所示:a)点击工具栏中的按钮,新建一个程序;b)用鼠标将“执行器模块库”中的模块拖入到流程图生成区,放在主程序模块正中的下边沿的位置,看看“主程序”模块与“显示”模块之间是不是有箭头连接,有则说明连接上了,否则再调整一下“显示”模块的位置。c)右键点击“显示”模块,就会出现如图4-1右图(部分)所示的对话框,请将显示信息由HI改写为Hello,robot!设定完毕,按确定就可以了!d)在“程序模块库”中选择结束模块,将它连在“显示”模块之后,这样整个程序就编写完成了,按工具栏中的“保存”,将程序保存在VJC目录下!e)将智能小车与计算机连接起来(用串口连接线,一端接计算机的九针串口,一端接智能小车后面控制面板上的下载口)。f)将智能小车的“开关”按钮打开,使智能小车处于开机的状态。g)按VJC界面中的按钮,待看到“下载成功!”字样时,取下串口连接线,将机器人放在平稳的地方,按智能小车头顶上的“RUN”按钮,智能小车的液晶显示屏上就会显示出Hello,robot!下面我们用JC语言编同样的程序,并对JC编程的相关知识作个简单介绍:voidmain(){printf(Hellorobot!\n);}•main是主函数,每一个JC程序总是从main函数开始执行的;main函数的开始和结尾分别有个“{”和“}”•viod可以理解为“不带返回值”;所以第一句就可以理解为一个程序的“开头”。•printf函数的作用是:向输出设备(这里是指LCD显示器)输出若干个任意类型的数据。那么printf一句的含义就是把Hello,robot!输出到智能小车的液晶显示屏上。•程序中每一句结尾都要加“;”这是C语句结束的标志。如果你把上面这段程序下载到智能小车中去,智能小车就会显示Hello,robot!每个VJC的图形模块都代表一组JC代码。-3-2、让智能小车动起来下面我们就尝试着让智能小车动起来。在VJC1.5开发版执行器模块库中有一专门控制智能小车“移动”的模块,这里我们就用它来编写一个智能小车直线行走的程序。要求:先让智能小车以速度100前进3秒,再让智能小车以速度-60后退5秒,再在原地以功率80旋转1秒。(如图4-2所示)示范操作步骤如下:2.1在VJC1.5开发版窗口中编写流程图a)编写流程图:用鼠标将“执行器模块库”中的“移动”模块移到流程图生成区并与主程序模块连接上;b)设置时,右击“移动”流程图模块,在弹出框中输入移动速度为100、时间为3;c)再用鼠标将“执行器模块库”中的“移动”模块移到流程图生成区并连接;d)在流程图的末端位置;e)设置第二个“移动”流程图模块,点击右键在弹出框中输入移动速度为-60、时间为5;f)再将“执行器模块库”中的“转向”模块连接到程序中,点击右键进入设置对话框,分别设置速率和时间为:80和1g)再将“程序模块库”中的“任务结束”移入到流程图生成区并连接在程序的末尾。-4-点击“工具栏”中的“编辑JC程序代码”按钮,切换到JC代码界面,可以对此界面中显示的JC代码进行修改,比如我们可以让智能小车后退7秒,那么我们就可以把程序中与“移动”模块相对应的参数5.000000修改为7.000000。2.2保存源代码程序点击工具栏中的“保存”按钮,输入文件名,按“确定”。2.3程序下载此时,能力风暴要处于开机状态,并且串口连接线已与计算机连接。点击“工具”中的“下载当前程序”按钮,就会出现下载对话框,等待出现“下载成功!”字样,说明程序已经下载到能力风暴里了。2.4运行程序将串口连接线取下,将智能小车带到安全的地方,按智能小车身上的“运行”键,能力风暴智能智能小车就按程序要求快速前进3秒,再后退7秒,然后再旋转1秒。2.5走出规则轨迹下面我们让能力风暴在地上走出一个规则的轨迹。voidround(){drive(60,30);wait(10.0);stop();}能力风暴逆时针走直径约一米的圆形路径。voidrectangle(){inti;for(i=0;i4;i++){drive(100,0);wait(1.0);-5-drive(0,60);wait(0.2);}stop();}能力风暴逆时针走约一米见方的正方形路径。其中wait(0.2)是能力风暴转90度弯所需要的时间。该值和转弯速度以及能力风暴的电机有关,需要实际调整,此外地面的摩擦力也有影响。利用wait()函数是控制电机工作的常用方法。五、实验考核编写智能小车程序,实现下列连续的路径规划:(1)智能小车走两遍1.5米直径的圆;(2)原地停止1秒后,智能小车走三遍等边三角形(或等腰直角三角形);(3)再次原地停止1秒后,智能小车走一遍8字形。(或9字形、D字母型、B字母型等,每组的考核指标由指导老师随机抽选)。-6-实验阶段二智能小车环境感知与控制一.实验目的1.掌握智能小车对环境的感知方法;2.掌握光敏传感器、碰撞传感器、红外传感器的使用方法;3、掌握智能小车环境感知与控制程序设计。二.实验内容1.学习智能小车光敏传感器的使用方法与程序设计;2.学习智能小车碰撞传感器的使用方法与程序设计;3.学习智能小车红外传感器的使用与编程;4.编写复杂的智能小车环境感知综合程序。三、实验设备及工具硬件:能力风暴AS-UII开发平台,程序下载线。软件:PC机操作系统Win2000或WinXP、VJC开发平台。四、实验原理与步骤1、光敏传感器的使用在VJC1.5开发版的“传感器模块库”中,有让智能小车能够感知环境信息的模块,这些功能模块的调用能够带给智能小车感觉。比如说“光敏检测”能够让智能小车感觉到外界光线的强弱;“红外测障”能够让智能小车检测前/左/右方的障碍等等。下面我们就试着让智能小车感知外界环境。能力风暴智能智能小车上有2只光敏传感器,它可以检测到光线的强弱。光敏传感器其实是一个光敏电阻,它的阻值受照射在它上面的光线强弱的影响。能力风暴智能智能小车所用的光敏电阻的阻值在很暗的环境下为几百KΩ,室内照度下几KΩ,阳光或强光下几十Ω。在JC语言中,光敏传感器的库函数是:左光敏,photo(1);右光敏,photo(2)。在程序运行过程中库函数仅在被调用到时执行一次,即采集数据一次。下面的例子让智能小车对外界的光线进行检测,并在LCD上显示左右光敏所检测到外界光线的平均值。示范操作步骤如下:1.1编写流程图a)用鼠标将“控制模块库”中的“永远循环”模块移到流程图生成区并与主程序模块连接上;b)用鼠标将“传感器模块库”中的“光敏检测”模块移到“永远循环”模块内部并连接上;c)设置时,右击“光敏检测”流程图模块,在弹出框中方向一栏选择“平均”,按确定;d)再用鼠标将“执行器模块库”中的“显示”模块移到流程图生成区并连接在“光敏检测”的后面;e)设置“显示”模块,点击右键在弹出框中选择“应用变量”,就会出现一个“变量百宝箱”的界面,在此界面中点击“光敏”图标,在“光敏变量引用”中选择“光敏变量一”,按确定即可,这样“显示”模块中的“显示信息”就为“光敏变量一”;f)再将“程序模块库”中的“任务结束”移入到流程图生成区并连接在程序的末尾。-7-我们也可以点击“工具栏”中的“编辑JC程序代码”按钮,切换到JC代码界面,对JC代码进行修改。1.2保存程序点击工具栏中的“保存”按钮,文件名输入:感光,按“确定”。此时,“感光.flw”流程图程序文件已被保存。1.3程序下载此时,能力风暴要处于开机状态,并串口连接线已与计算机连接。点击“工具”中的“下载当前程序”按钮,就会出现下载对话框,等待出现“下载成功!”字样,说明程序已经下载到能力风暴里了。1.4运行程序将串口连接线取下,将智能小车带到安全的地方,按智能小车身上的“运行”键,在智能小车的LCD上就会显示出外界光线的平均值。2、JC程序的基本程序结构下面是JC程序中最常见的一种程序模式。while(1)/*循环检测*/{ir=ir_detector();/*对环境采样*/if(ir0)/*条件判断*/{语句1;/*做相应的处理*/语句2;}else{-8-语句3;语句4;}wait(0.1);/*采样周期*/}3、碰撞检测传感器的使用方法碰撞传感器是使能力风暴智能智能小车有感知碰撞环上的碰撞信息能力的传感器。在能力风暴智能智能小车的左前、右前、左后、右后设置有四个碰撞开关(常开),它们与碰撞环共同构成了碰撞传感器。碰撞环与底盘柔性连接,在受力后与底盘产生相对位移,触发固连在底盘上相应的碰撞开关,使之闭合。我们把来自四周的碰撞分为八个方向在JC语言中,碰撞传感器的库函数是bumper(),在程序运行过程中此库函数仅在被调用到时执行一次,即采集数据一次。因此要连续查询碰撞传感器的状态就要在VJC交互式调-9-试窗口一行编辑框中输入如下程序块:{while(1){printf(bump=%d\n,bumper());wait(0.1);}}按回车,JC能立即编译这一段程序并下载运行,LCD上显示:bump=0(表示此时没有碰撞)按左前碰撞环,LCD上显示:bump=5。在其他方向施加碰撞,显示的值将不同。各个方向发生碰撞时返回值对应关系如下:无0,左前1,右前2,左后4,右后8下面结合智能小车“台球”程序来学习碰撞传感器的使用。voidmain(){intbill_trans=0;intbill_rot=0;intbmpr=0;while(1)/*无限循环检测*/{bmpr=bumper();/*检测碰撞传感器*/if(bmpr!=0){if(bmpr==0b0011)/*正前方发生碰撞*/{bill_trans=-80;/*后退*/bill_rot=0;}elseif(bmpr==0b1100)/*正后方发生碰撞*/{bill_trans=80;/*前进*/bil

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功