移动机器人路径跟踪实验.ppt
机器人路径跟踪实验,许群,能力风暴,第一部分,一.控制主板结构说明,(1)LCD插座:探索者配备了一个16x2的液晶显示模块,将其正确插入该插座,机器人在运行过程中可以显示2行16字符的文本信息,是探索者与操作者的交互界面之一;(2)直流电机口3:探索者控制主板上扩展了四个直流伺服接口,编号为0,具备PWM(脉宽调制)功能,可以用于各种直流驱动装置,如直流马达、继电器等执行机构,旁边的红色和绿色用于指示方向;(3)直流电机口2:同(2);(4)直流电机口1:同(2);(5)直流电机口0:同(2);(6)移动轮电机1:探索者教育机器人左右各装备了一个直流驱动马达,分别对应于WHEEL0和WHEEL1两个五芯插座,是探索者的主要移动机构,安装时应注意左右对应关系;(7)移动轮电机0:同(6);(8)电源插座:电池组上电源线连接在此处,连接时应注意电池极性;(9)充电插座:探索者配备的12伏500毫安充电器上的同轴插头插入此插座可以对连接在机器人上的8节9.6伏串联电池组进行充电;(10)充电指示:黄颜色的发光二极管,用于指示探索者是否处于正常充电状态,若快速充电跳线插座短路,则该指示灯不起作用;,(11)扩展电源插座:用于给探索者上扩展的直流电机口03和移动轮电机驱动口01提供额外的电源,电源极性请见板上的标注,附加电源的规格为57节1.5伏干电池或78节1.2伏串联充电电池,但一般要求等效电压等于或略高于连接于(8)的电池电压;(12)电源开关:用于打开和关闭探索者;(13)电源指示:绿颜色的发光二极管,用于指示探索者是否处于工作状态;(14)电压低指示:红颜色的发光二极管,灯亮时,表示电源电压太低;(15)功能按钮:该按钮占用通用数字输入口7,在用户程序中可以获得该按钮的状态,另外,该按钮与复位按钮联合使用可以使控制板进入特殊启动模式,从而能够进行操作系统的装入;(16)复位按钮:按下此按钮使控制板复位,当与功能按钮联合使用可以使控制板进入特殊启动模式,从而可以进行操作系统的装入,具体做法是先按下功能按钮并保持,然后按一下复位按钮;(17)通用数字口0-6、8-9:通用数字输入口,从左至右编号为0到6和8-9;(18)通用模拟口7-4:通用模拟输入口,从左至右编号为7到4;(19)通讯指示:黄颜色的发光二极管,灯闪烁时,表示控制板正与PC机进行通讯;,(20)串行通讯插座:RS232串行通讯接口;(21)麦克风:用于采集声音信号,占用通用模拟接口2;(22)红外调节1:用于调节红外发射管1的发射强度;(23)红外发送1:红外发射管1插座;(24)红外接收:红外接受头插座;(25)红外发送0:红外发射管0插座;(26)红外调节0:用于调节红外发射管0的发射强度;光敏传感器1:预设的光敏电阻插座1,与右边的光敏传感器对应,也 可以作为通用模拟输入口使用,编号为1;光敏传感器0:预设的光敏电阻插座0,与左边的光敏传感器对应,也 可以作为通用模拟输入口使用,编号为0;扩展接口:该扩展接口插座与LCD插座一起构成了探索者的扩展总 线;红外频率调节:用于调节红外振荡电路的频率,使其位于38KHz左 右;(31)快速充电:若需对电池组进行快速充电,应将该跳线座短路;(32)蜂鸣器:可以在用户程序的控制下产生不同频率的声响。,二.C语言基础和JC,C基础 main()函数 JC简介 交互式C语言(简称JC)是用于能力风暴个人机器人(基于68HC11)的专用开发系统。JC由两部分组成:编译环境(包含交互式命令行编辑和调试功能)和能力风暴操作系统。JC实现了C语言的一个子集,它包括控制语句(for,while,if else),局部变量和全局变量,数组,指针,结构体,16位和32位整数,和32位浮点数。运行JC 首先要安装JC。把能力风暴接到你计算机的一个串口上,打开能力风暴电源开关,并运行JC。电源开关拨至“下载”位置(左边),JC将引导你首先下载操作系统;若控制板上已有操作系统,将电源开关拨到“运行”位置(右边),运行JC时,JC将初始化能力风暴内存并下载系统库函数。,能力风暴库函数文件 JC库函数库函数文件为能力风暴控制板的硬件提供了标准C的接口函数。这些函数是用C或者汇编语言写成的驱动程序。库函数提供了诸如控制电机,发出声音,输入传感器值等功能 为更好理解库函数如何工作,建议研究一下库文件的源代码。能力风暴主库文件列表为lib_as.lis。相关内容:输出控制 传感器输入 定时命令 音频函数,1.输出控制 函数stop()关闭两个电机 motor(int m,int p)用于电机功率水平的控制 void drive(int trans_vel,int rot_vel)同时设定两个电机的速度,控制能力风暴的平移和旋转。trans_vel平移速度,rot_vel旋转速度。rot_vel0能力风暴逆时针旋转。该函数将左轮速度设为(trans_vel-rot_vel),右轮速度设为(trans_vel+rot_vel)。,2.传感器输入 数字输入 int digital(int p)返回数字口p上传感器的值,(1为真,0为假)。如果从传感器数字硬件读到的值为零伏或逻辑零,digital()函数将返回真。,模拟输入 int analogport(int p)返回模拟口p上传感器的值。返回值是0到255间的整数值。如果该传感器在硬件上只有开关两种状态,则硬件上的数字读数为1时返回值为255(就象一个数字开关断开,电位被拉高一样,导致一个最高读数),当硬件的数字读数为0,则返回0(就象一个数字开关合上,电位接地)。系统设定的传感器端口全局变量:int photo_right=photo(1);右光敏电阻 int photo_left=photo(2);左光敏电阻 int microphone=2;麦克风,例:analogport(photo_right);检测右光敏,返回值越小,光线越亮。analogport(microphone);检测麦克风,返回值越大,声音越响。,红外线系统 红外线系统由两部分构成:两个红外线发送器,以及一个红外线接收器 左右两个方向的红外线发送器分别发射一定频率的红外线脉冲信号,红外线接收器可以检测出这种频率的红外调制信号 红外线系统探测障碍的有效距离是1080厘米,int ir_detector()返回值 0b00:没有接收到红外,0b01:右边接收到,0b10:左边接收到,0b11:两边都接收到。,碰撞检测 在能力风暴四周有一个碰撞环,上面有四个碰撞传感器,可以检测是否撞上障碍以及碰撞发生的方位 int bumper()碰撞传感器检测。返回值低4位的意义,位0=右前,位1=左前,位2=右后,位3=左后。如果实际检测方位与此处定义不一致,请调整碰撞传感器的安装位置,3.定时命令 void sleep(float sec)等待一段等于或稍大于指定的sec时间(秒)后再执行后面的语句。sec是一个浮点数。例:sleep(1.5);/*等待1.5秒*/,void msleep(long msec)等待一段等于或稍大于指定的msec时间(毫秒)后再执行后面的语句。sec是一个长整数。例:msleep(1500L);/*等待1.5秒*/,多任务(1)多任务叙述 JC的一个强大的功能是它的多任务设置。在运行期间,进程可以被动态地建立和撤消。多个进程运行通过分时间片实现的。每个进程一次只执行一定数量的时间片。每个进程都有自己的栈,用于函数调用传递参数,存放局部变量,存放函数调用的返回地址。栈的大小在进程创建时确定。一个进程栈的缺省大小为256字节。,(2)创建新进程 int start_process(function-call(.),TICKS,STACK-SIZE)start_process取得一个进程标识,创建一个进程。有两个可选参数:进程的时间片数和栈大小。返回一个整数,它就是新进程的进程ID。,下面给出了创建一个进程的例子:void check_sensor(int n)while(1)printf(Sensor%d is%dn,n,digital(n);void main()start_process(check_sensor(2);,start_process(check_sensor(2),1,50);将创建一个check_sensor进程,它每次运行毫秒,栈大小为50个字节,(3)撤消进程 int kill_process(int pid);通过将进程ID传给kill_process来撤消一个进程。kill_process 返回值表明撤消进程是否成功。如果返回值是,表明进程被撤消。如果返回,表示没有找到该进程。,下面的代码显示创建一个check_sensor进程,秒钟后终止该进程的例子:void main()int pid;pid=start_process(check_sensor(2);sleep(1.0);kill_process(pid);,第二部分实验,设计目的:利用68HC11强大的可扩展性以及众多的剩余输入/输出端口,为探索者机器人增添传感器模块,以此来完善其与外界交互的能力,使其在迷宫运行中能更好的保持自身的姿态。,设计方案:设计围绕规范探索者机器人的行走路径来进行,在场地中布置白色轨迹线,让探索者机器人顺沿轨迹进行移动。,设计思想:提取行走路径信息(利用自然界光、热、质量、电、声等),转化为可识别的电信号,根据电信号变化识别路径,再对机器人行走作相应的调整。,实验耗材:,1.比较器LM339N(4个集成)2.光敏电阻10K20K,数量4个3.发光二级管4个电压3V4.普通电阻1K,4.7K,15K分别4个5.可调电阻010K4个6.导线若干,采集信号信号处理信号输入,控制过程,实验方法 利用传感器探测路径,判断行走信息。如图所示,1、2、3、4为4组信号探测器。根据他们在白色区域(行走轨迹)位置的不同,可输出不同的信号。每组信号探测器利用LED光源与光敏传感器组成一组传感器探头,用4组这样的探头组成的阵列来对白线进行识别,判断小车所处状态,并作出相应的反应。,如何实现路径信息转化为电信号?不同材质对光的吸收和反射的能力不同,背景反射能力差,路径反射能力高,如下图中所示,由半导体发光二极管LED与光敏电阻R构成了探头部分,由LED发射的光线照射到地面材质上,再经材质的漫射或反射,光线照射在光敏电阻上,使其电阻值发生变化,不同材质对光的吸收能力不同,则光敏电阻的阻值也随之变化。,电路 LED半导体发光二极管 光敏电阻 可微调电阻 运算放大器 接线头、电阻和导线,分立的单组传感器电路电路图,电路设计,LM339N芯片图,总体布局图,电路板制作过程注意的几点:锡焊技术,Proper Soldering Technique,Do not hold the iron against the joint for an extended period of time(more than 10 seconds),since many electronic components or the printed circuit board itself can be damaged by prolonged,excessive heat.Too much heat can cause the traces on the printed circuit board to burn off.,Improper soldering technology,电子器件的极性,Diodes:Diodes have two leads,called the anode and cathode.When the anode is connected to positive voltage with respect to the cathode,current can flow through the diode.If polarity is reversed,no current flows through the diode.Some components that are particularly sensitive to heat damage are:diodes,ICs,and transistors.,组元架置,LED1,光敏电阻,轨道,LED1,光敏电阻,轨道,光敏电阻阻值变小,光敏电阻阻值变大,输出信号为低电平,输出信号为高电平,探测器在轨道上,探测器不在轨道上,指示灯LED2亮,指示灯LED2暗,控制程序设计,当今的机器人的人工智能,为一种简单的逻辑智能,处理器严格按照程序员编写好的算法机制对信息做严格的一成不变的处理。所谓机器人“智能”的实现,大概可以归纳为三块:摄入信息流;处理信息并作出判断;根据判断输出信息流;本设计方案也就是围绕这三个步骤进行的。,信息摄入 把采集并处理后的输出信号传递给控制主板的通用数字输入口。采用探索者函数库中的数字数字输入函数:int digitalport(int p)信息处理,P为数字输入口编号。其返回数字口p上传感器的值。,如果从传感器数字硬件读到的值为零伏或逻辑零,peek()函数将返回真,为0。,例如:传感器1的输出信号接至数字输入口5端。传感器1在轨道上 输出信号1端为高电平 peek(0 x4000),将传感器1、2、3、4的输出信号分别接至数字输入口5、6、8、9端。,in1,in2,in3,in4,in5,in6,in7,通用数字输入口09,in8,Peek()=00001111,(1)在轨道上,直走,1,3,2,4,(3)偏左了,向右斜走,1,3,2,4,(2)偏右了,向左斜走,1,3,2,4,机器人行走的可能情况,(5)偏左多了,向右走,1,3,2,4,(4)偏右多了,向左走,1,3,2,4,(6)右切入,向左拐,1,3,2,4,(7)左切入,向右拐,1,3,2,4,(8)岔口,1,3,2,4,(9)悬空,1,3,2,4,除了摄入信息,程序还应能把零散的初始信息稍加整理,in5,in6,in7,in8,信息逻辑判断机制:peek()或着read()函数读取数字输入端口得信息。,信息输出(电机动作驱动指令输出):根据不同的判断得出的结论,程序根据预先设计的逻辑对电机发出不同的驱动命令,以动态的纠正探索者的行走路径,使其始终不脱离预定轨迹;,程序体设计:把上述的几个部分结合起来,就可以编写出探索者机器人的寻迹子程序,下边就是该子程序的算法流程框图:,程序:Viod main()peek();run_line();start_run();内容:a.传感器部分的function的设置 b.判断传感器返回值,执行动作,完成电路板的设计 完成程序编写,实验测试,1.运行setup.exe即可将软件按装到你的电脑,2.数据传输 找出 九针串口的2 接受数据(RXD)、3 发出数据(TXD)、5 信号地线(SG),通过数据线和三极插针,接至探索者控制主板的串行通讯插座的相应端上,3.打开vjc1.6,完成操作系统的下载,3.下载机器人控制程序程序 将文件下载到控制主板,测试过程中可以按复位键进行切换。,程序下载时,JC交互窗口会显示下载过程。下载完成后,程序并不马上运行,必须按下能力风暴的复位(RESET)键,系统才自动运行程序中的main()函数。程序装载后一直保留在能力风暴内存中,直到用户通过交互命令窗口卸载该程序文件或下载与其同名的新文件。这样我们第一个JC程序就完成了。这时你可以拔下串口通讯线。由于能力风暴采用专门设计的不挥发静态RAM,断电后程序能一直保存在能力风暴内存里。每次你打开电源开关或按下复位键,main()程序都会自动执行一遍。,作业1,设计一系统让机器人自由行走。当碰到障碍物时,检测并作方向调整。硬件设备:能力风暴 软件:,