收藏 分销(赏)

机器人编程与设计RobotBASICPPT学习课件.ppt

上传人:精**** 文档编号:10010546 上传时间:2025-04-17 格式:PPT 页数:76 大小:8.11MB
下载 相关 举报
机器人编程与设计RobotBASICPPT学习课件.ppt_第1页
第1页 / 共76页
机器人编程与设计RobotBASICPPT学习课件.ppt_第2页
第2页 / 共76页
点击查看更多>>
资源描述
,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,机器人编程与设计,RobotBASIC,朱映辉,1,特点,机器人模拟器是对各种可能情况和不同硬件、软件组合方式进行实验的有效工具,节省组装真实机器人的时间和费用,使用,RobotBASIC,来编写算法使机器人与其所处环境进行交互,.,学习后不仅能对模拟器进行编程,也能够对机器人进行编程,对模拟机器人进行编程的算法和原则同样可应用于对真实机器人的控制,2,RobotBASIC,模拟器,象,BASIC,语言一样简单、易学(对初学者),(高级爱好者和有经验的编程人员)功能仍然足够强大,它拥有所有标准流动控制结构及对变量和矩阵真正无限的空间,能快速迅速地模拟多种类型的环境和状况,对算法进行检查,通过模拟,可确定需要什么类型的硬件进行选择(如传感器,),机器人不仅仅是硬件,3,RobotBASIC,语言,它有工具箱、命令和函数,对机器人进行真实、有效的模拟,进行图形显示,用输入、输出命令与用户交互,进行数学、三角和统计计算,创建并控制字符,并在字符和数字间进行转换,用一系列命令和函数创建并控制矩阵,能对数学课程中遇到的许多矩阵进行操作,4,一,机器人模拟器,终端屏幕模拟一个四面有墙的房间:,800 x600,像素(机器人活动空间),机器人默认大小:,40,像素,(,直径,),机器人的初始化,rLocate X,Y,Heading,Size,Color,X,Y,位置,(,整数,),Heading,可选,默认,0,指机器人要面对的方向,(0359),0,为北,90,为东,180,为南,270,为西,Size,可选,默认,20,像素的半径,在,550,之间,Color,可选,默认蓝色,Rlocate 300,300,45,40,red,end,5,机器人动作,rForward npixels,在面对的方向上前进或倒退几个像素,正,-,前,;,负,-,退,rTurn nDegrees,沿顺时针或逆时针旋转几度,(,整数,),负,-,逆时针,;,正,-,顺时针,rlocate 300,300,rturn 90,rforward 300,rturn-45,rforward-200,end,6,绕过障碍物,障碍物用圆形和矩形模拟,Circle x1,y1,x2,y2,PenColor,FillColor,rectangle x1,y1,x2,y2,PenColor,FillColor,x1,y1,x2,y2,确定边界,PenColor,轮廓颜色,FillColor,填充颜色,7,程序代码,rectangle 300,300,500,500,red,red,circle 100,100,200,200,blue,blue,circle 600,500,700,550,magenta,magenta,rlocate 50,50,rturn 90,rforward 400,rturn 135,rforward 300,rturn-45,rforward 300,rturn-90,rforward 250,rturn-45,rforward 400,end,8,练习,创建程序,使机器人从,(100,100),运动到,(300,300),然后从,(500,100),回到,(100,100),提示,定位,(100,100),朝向,135,前进,283,转,-90,前进,283,再转,-135,最近前进,400,按下图搭建环境并按箭头指示进行运动,9,二,RobotBASIC,传感器,RobotBASIC,中的机器人有一系列的传感器,使其对周围环境有感知的能力,控制算法通过传感器来分析环境,然后采取行动避障,并能发现、定位目标,10,部分编程结构,RobotBASIC,一般不区分大小写,但变量名、阵列名、标签区分大小写,变量很灵活,命名无限制,可存储任意类型数据,且可以改变变量中所存的数据类型和数值,.,注释,/,11,部分编程结构,条件语句,1.IF,条件,THEN,一种操作,2.IF,条件,多个操作,ENDIF,3.IF,条件,操作,ELSE,操作,ENDIF,12,部分编程结构,比较操作,=,循环,For-next,While-wend,13,(1),用缓冲器进行避障,缓冲器,rBumper(),RobotBASIC,机器人有,4,个缓冲器,前面和后面的分别形成,130,圆弧,侧面的仅形成,50.,缓冲器,位,值,后,2,0,1,右,2,1,2,前,2,2,4,左,2,3,8,14,rLocate 400,300,For a=1 to 500,if rbumper()=0 then rForward 1,Next,End,rLocate 400,300,While rbumper()=0,rForward 1,Wend,End,15,(2),红外传感器,红外传感器使机器人能够在接触到物体之前就探测到路径上物体的存在,原理,:,使用红外,LED(,发光二极管,),机器人向周围发出光线,若光线被反射回机器人,则晶体管电路可检测到,.,16,RobotBASIC,机器人有,5,个红外传感器,分别间隔,45,进行安装,使用函数,rFeel(),获得红外传感器状态的编码数字,机器人右侧的传感器是二进制数字中的最小位,.,17,rLocate 400,300,While rfeel()=0,rforward 1,Wend,End,rFeel(),比,rBumper(),探测物体的效果更好,因为最好是不发生碰撞,.,缺点,:,有可能探测不到小的物体,(,或大物体的边角,),因此,当想避免障碍物时,推荐同时使用,rFeel,和,rBumper,状态数据进行分析,.,18,(3),超声波和红外测距,rFeel,和,rBumper,的其中一个局限性是只能探测距机器人很近的物体,然而,最好能够对其路径上的远处物体进行探测,以尽早采取行动,.,RobotBASIC,机器人装有单一测距的传感器,因此面向与机器人相同的方向,.,函数,rRange(),获取机器人前方物体的距离,rRange(),返回,20,表明在距离机器人,20,个像素处有某个物体存在,.,19,下方程序使机器人在距离北墙,20,个像素处停止,rLocate 400,300,While rrange()20,rforward 1,Wend,End,20,(4),机器人视觉,RobotBASIC,机器人摄像头返回一个数字,表示其所看到的颜色,.,函数,rLook().,Circle 600,500,620,520,red,red,Rlocate 400,300,While rlook()red,rturn 1,Wend,end,21,(5),信号探测,若希望机器人找到房间里的某个位置,可在该处挂一个闪烁灯,(,可见或红外线的,),因为这个闪烁灯在房间的位置较高,所以即使其他物体处于机器人和目标位置之间,这个闪烁信号也一直可见,.,函数,rBeacon(color),返回一个非,0,值,表示机器人面对一个该颜色的信号,这数字实际就是机器人和信号之间的距离,;,若返回,0,表示机器人没有面对信号,.,若不想使用距离数据,可只当作真和假指示器使用,.,22,Circle 600,500,620,520,red,red,Rlocate 400,300,While rBeacon()=false,rturn 1,Wend,end,23,(6),指南针,指南针函数,rCompass(),返回机器人面对的当前方向,.,屏幕上方向,:,上北下南,左西右东,.,北,:0,东,:90,南,:180,西,:270,Rlocate 400,300,While rcompass()90 /,东部,rturn 1,Wend,end,24,(7),全球定位,两个函数,rGpsX(),rGpsY(),分别返回机器人位置的,X,和,Y,坐标值,.,可精确到,1,个像素,.,Rlocate 400,300,While rgpsy()30,rforward 1,Wend,End,/,展示机器人如何跟踪北墙位置并在距离墙壁,10,个像素处停止,.(,默认机器人的半径是,20),25,三,远程控制算法,在能够使机器人从环境获取的传感器信息作出运动决策前,必须掌握一些对机器人进行编程和控制的技能,.,远程控制形式有三种,:,只要按钮按下,开始运动,松开,就停止运动,按下按钮使机器人运动,然后释放按钮,机器人继续运动,直到再次按下按钮才停止,给定某个指令,机器人执行某些动作,然后等待给出下一个指令,为控制模拟机器人,需使用键盘和鼠标模拟远程控制器,.,26,(1),键盘,GetKey Var,检查按键是否有健按下,若有,它的代码值赋给变量,var,若无按下,则变量值为,0,在用户按下某健之前,程序流没有停止,WaitKey Exprs,var,该指令能暂停程序流,直到用户按下某健,上述,var,是,ASCII,码,可用,char(),将代码转换为字母,反之用,Ascii(),将字母转换为代码,27,(2),鼠标,ReadMouse var1,var2,var3,Var1,var2,是鼠标在屏幕位置的坐标值,Var3,存储鼠标的某个按键被按下,未按下时为,0,程序不会暂停或等待用户按下任意键,28,(3),输出至屏幕,Print Expr,Expr,将结果输出至屏幕,一次输出一行,满屏时会滚屏,XYString X,Y,Expr,Expr;,将结果输出至屏幕,X,Y,为结果输出的像素位置,29,(1),远程控制的第一种形式,控制键,:F,前进,B,后退,L,左转,R,右转,编程提示,:,Waitkey,Char(),Rbumper(),If,按键,=“F”THEN.,参见,tu4.1,30,(2),远程控制的第二种形式,控制按键与前者相同,.,按下键后使机器人连续运动,直到用户按下另一个键,.,编程提示,:,getkey,Char(),保存最近的键,检测按键时加延迟,delay 200,给用户松开按键的时间,Rbumper(),If,按键,=“F”THEN.,参见,tu4.2,31,(3),复杂远程控制,这种形式,机器人执行一系列动作,以完成用户设定的任务,.,模拟时,鼠标将被用作一个激光定位器,.,机器人锁定鼠标位置并运动到那里,.,机器人运动时还能在屏幕上画图,以期看见发生的动作,.,rPen up/down,color,rInvisible color,color,机器人将使用它的,GPS,和指南针来计算其当前位置和朝向与目标位置和朝向之间的差别,.,32,涉及的数学运算,机器人用坐标,Rx,Ry,表示,目标用,Tx,Ty,表示,.,机器人,x,y,坐标与目标之差分别为,dx,dy.,用于计算机器人与目标之间的距离,.(,毕达哥拉斯定理的应用,),函数,PolarR(dx,dy),用于完成计算并返回,R,值,.,函数,PolarA(dx,dy),返回角度值,为水平轴和机器人中心与目标中心连线之间形成的角度,(,即,TA).,33,角度,TA,可用于计算出机器人需要转的方向和度数,使机器人朝向目标,那么实际应转的角度为,dA.,第,1,个问题,:,角度,TA,是以东向为基准测量的,.,因此在,PolarA(),基础上再加上,90.,第,2,个问题,:PolarA(),返回的弧度,而不是度,.,转换,:1=/180 rad,因此,TA=PolarA(dx,dy)*180/pi()+90,那么,:dA=PolarA(dx,dy)*180/pi()+90-CH,dA,为,0360,之间的数字,当机器人旋转角度时,应检查转角是否大于,180,若是,可使机器人向另外一个方向旋转,.,34,复杂远程控制程序见,tu4.4,35,四、随机漫游,目标:创建自主移动机器人,要使机器人具有自主性,就需要使其具备绕过障碍物的自主决定能力。,机器人避开障碍物的方法:,旋转,180,并向远离障碍物的 方向运动,旋转足够的角度,避开障碍物,但不完全旋转,上述方法结合使用,36,什么是随机漫游,机器人在未知的环境中无目的运动的算法,即没有具体要实现的目标,而是在所处的环境中自由运动,只要不在某个地方待太长时间或不与障碍物碰撞即可。,Rlocate 400,300,While true,while rfeel()=0,rforward 1,wend,rturn 150+random(60)/180+/-30,Wend,end,37,(1),部分程序结构,标签和子程序,MainProgram:,gosub task_1,gosub task_2,End,/-,task_1:,.,Return,/-,task_2:,.,Return,/-,38,(2),相关指令,清除屏幕,(ClearScr),设置绘图颜色,(SetColor),设置画图的初始位置,(GotoXY),屏幕上画线,(LineTo),设置画线的宽度,(LineWidth),39,(3),向漫游环境中添加物体,用户自主绘制障碍物,可用函数如下,:,Readmouse x,y,m,Gotoxy x,y,Lineto x,y,参见程序,tu5.3,40,(4),更加智能的漫游,如何更有效地利用传感器信息,改进机器人行为的一种方式是使其确定旋转的最合适角度,而不是旋转一个随机量,.,逻辑操作,rFeel()=0 rFeel()=1 rFeel()=4.,rFeel()=2 or rFeel()=1,注意,:,若两个右侧传感器一起被触发,当前表达式不为真,可进行按位操作,:rFeel()&3,传感值,0001,0010,0011,1001,1000,Mask(&),0011,0011,0011,0011,0011,按位与,0001,0010,0011,0001,0000,真,/,假,真,真,真,真,假,41,(5),改进,第一次改进,根据障碍物的位置确定一个旋转角度,再加上个适当的随机角度,参加程序,tu5.7,第二次改进,当遇到障碍物时,将进行旋转,在旋转过程中,一感觉到可能的畅通路径就停止旋转,这样机器人将显得更加智能,.,参见程序,tu5.8,42,五、跟踪一条线,该任务使机器人沿着由线定义的指定路径运动。,任务设定:,绘制机器人跟踪的线(,InitializeRobot,),创建机器人(,DrawLine,),执行线跟踪算法测试(,FollowLine,),43,例程框架,MainProgram:,gosub DrawLine,gosub InitRobot,rforward 10,gosub FollowLine,end,/-,InitRobot:,rlocate 200,71,-90,rinvisible green,return,/-,DrawLine:,linewidth 4,setcolor green,data c1;-170,71,160,72,145,80,140,90,130,100,125,110,120,140,data c1;130,200,140,250,130,270,145,300,200,350,300,325,data c1;450,375,450,450,600,450,600,400,650,200,500,350,mpolygon c1,return,/-,FollowLine:,/,线跟踪算法,Return,44,Data,语句和,mPolygon,Data,指令用于创建一个阵列,并将其后的数据接连放置在阵列中,如,:Data Nums;9,8,2,Numsn-1,可指明使用第,n,个元素,maxDim(),找出阵列中的元素个数,mPolygon,指令可实现任意连续直线的绘制,45,线传感器,RobotBasic,机器人有三个线传感器,一个安装在正前方,其余两个分别偏离正前左右,10,进行安装,.,函数,rSense(color),可读取三个线传感器的状态,(,如图,),注意,:,在进行任何直线感知测试之前,必须指定一个不可见颜色组的列表,并且直线的颜色必须在列表之中,(,最好是第一种颜色,),否则,将认为直线是障碍物,并报告出错,.,001,010,100,46,线跟踪尝试,FollowLine:,while true,if rsense()&1 then rturn 1,if rsense()&4 then rturn-1,rforward 1,wend,Return,特点,:,当线急转时,跟踪失败,.,47,首次改进,改进,:,机器人不断进行检测,判断是否存在传感器看见直线,并继续尝试跟踪直线,直到已有,50,次没看见直线,在失去直线后马上停止,.,FollowLine:,c=0,ta=0,while c 0,FN=6,Else,FN=12,Endif,While true,While(rFeel()&FN)or(rBumper()&4),rTurn-TurnDir,Wend,rForward 1,rTurn TurnDir,Wend,Return,问题:当遇到一个尖角时,仍会作远离墙壁的弧形运动。,60,改进,3,分析:机器人在尖角处仍作弧形运动?,在尖角处墙壁以棱角形式远离机器人,且机器人每前进,1,个像素,只旋转,1,。故机器人旋转的速度小于墙壁急转弯的速度。,参见,tu8.6,61,另一种改进,问题:,传感器留有缺口,传感器的尺度不易调整,无法控制距墙壁的距离,使用测距传感器,rRange(,角度,),可在指定的角度方向测量与物体之间的距离。,62,参见,tu8.8,63,七、矢量绘制机器人,机器人中心的笔的扩展应用:,在地板上绘图,写字,显示在清扫模拟中机器人所覆盖的区域,通过显示机器人所走路径体现某种算法的有效性,通过留下一条轨迹,解除一些疑惑,开发应用:,观察机器人的轨迹,用作远距离控制的草绘工具,若用激光刀替代画笔,机器人将能对难加工的复杂金属表面进行切削,设定数据,机器人在足球场等绘制界限和其他相关信息,64,绘图指令回顾,rPen ExprN1,ExprN2,ExprN1=0,抬高画笔,ExprN10,降低画笔,ExprN2,可选,设定画笔颜色,若未指定,画笔的颜色将被设置为不可见颜色列表,LineWidth,设置画笔所画线宽,65,1.,绘制正方形,rLocate 300,300,90 /-Initialize the robot facing East,rInvisible Magenta /-magenta color for the pen,LineWidth 4 /-line width of 4 is good here,rPen Down /-start drawing,for i=1 to 4 /-draw a square(4 sides),rForward 100,rturn 90,next,rPen Up /-stop drawing,rTurn 45 /-move out of the way,rForward 50,End,66,2.,绘制圆形,MainProgram:,/-Change these values to change the position of the circle,R_Init_X=100,R_Init_Y=300,R_Init_Heading=0,rLocate R_Init_X,R_Init_Y,R_Init_Heading,rInvisible Magenta,LineWidth 4,/-Change these values to change the size of the circle,fStep=1,tStep=1,gosub DrawCircle,rTurn 90 /-move out of the way,rForward 40,End,/=,DrawCircle:,rPen Down/-start drawing,for i=1 to 360/tStep,rForward fStep,rturn tStep,next,rPen Up/-stop drawing,Return,67,3.,绘制矩形,MainProgram:,/-change these to make the rectangle have,/-different orientation and position,R_Init_X=100,R_Init_Y=300,R_Init_Heading=-45,rLocate R_Init_X,R_Init_Y,R_Init_Heading,rInvisible Magenta,LineWidth 4,/-change these variables to change the size of the rectangle,RectWidth=100,RectHeight=50,gosub DrawRectangle,rTurn-45 /-move out of the way,rForward 40,End,/=,DrawRectangle:,rPen Down/-start drawing,for I=1 to 2,rturn 90,rForward RectWidth,rTurn 90,rForward RectHeight,next,rPen Up/-stop drawing,Return,68,4.,绘制等腰三角形,MainProgram:,/-change these to make the triangle have,/-different orientation and position,R_Init_X=400,R_Init_Y=300,R_Init_Heading=-90,rLocate R_Init_X,R_Init_Y,R_Init_Heading,rInvisible Magenta,LineWidth 4,/-change these values,Side=150,Angle=50,Data Sides;2*Side*cos(Angle*pi(1)/180),Side,Side,Data Angles;Angle,180-2*Angle,Angle,gosub DrawTriangle,rTurn-45 /-move out of the way,rForward 40,End,/=,绘制不同形状的三角形,只需在阵列,Sides,和,Angles,设置不同的数据即可。,DrawTriangle:,rPen Down/-start drawing,For i=1 to 3,rForward Sidesi-1,rTurn 180-Anglesi-1,next,rPen Up/-stop drawing,Return,69,5.,绘制任意形状,基本操作,:,设定一套使机器人旋转和移动的正确指令,结合抬高和降低画笔,可进行任意形状的图形绘制,参考方法:,使用,DATA,指令创建一个成对数据的阵列,每一对数据都代表针对机器人的一个指令,成对数据中的第一个元素设定要采取的行动,第二个元素提供与行动相关的参数,70,举例:,Data what;”p”,down,”f”,165,”t”,-120,”f”,58,Data what;”t”,-60,”f”,50,”t”,-30,”f”,100,Data what;”p”,up,”f”,40,71,绘制任意形状实例,MainProgram:,/-change these to make the shape have,/-different orientation and position,R_Init_X=400,R_Init_Y=300,R_Init_Heading=90,rLocate R_Init_X,R_Init_Y,R_Init_Heading,rInvisible Magenta,LineWidth 4,Data SomeShape;p,Down,f,165,t,-120,f,58,Data SomeShape;t,-60,f,50,t,-30,f,100,Data SomeShape;p,Up,f,40,For I=1 to MaxDim(SomeShape,1)/2,J=(I-1)*2,if SomeShapeJ=f then rForward SomeShapeJ+1,if SomeShapeJ=t then rTurn SomeShapeJ+1,if SomeShapeJ=p then rPen SomeShapeJ+1,next,End,72,6.ABC,机器人,给定一个成对数据的阵列,机器人可绘制任意形状,因此,若创建字母形状,则可以赋予机器人书写字母的能力,参加,tu10.8.bas,73,7.,书写字母的机器人,参见,tu10.10.bas,74,八、期末大作业,1.,根据理论教材所介绍过的课程知识点,写一篇相关的心得体会论文或知识点研究论文。(小论文,600-1000,字,不超,1000,字),2.,实验作业,使用,RobotBasic,编写姓名书写机器人程序,用机器人画笔书写自己的姓名,.,75,2,实验作业,:,模拟汽车行驶,左边虚线和右边实线代表可通行的路的两边沿,路中的方框代表汽车,模拟开始前用鼠标定位以控制自动生成方框汽车,(,位置随机,),机器人模拟行驶的汽车,它的直径应与方框汽车的宽度相仿,路的长度不小于,300,像素,机器人在有足够空间时能从路的下方前进并到达上方顶部,(,假设方框汽车静止不动,),76,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服