机器人制作天空宝典
前言………………………………………………………………………………………………5
理论篇……………………………………………………………………………………………6
如何制作机器人小车---给初学者………………………………………………………9
概念剖析:什么是BEAM机器人?………………………………………………………18
经验篇……………………………………………………………………………………………20
制作机器人常用的单片机性能特点及使用经验…………………………………………21
制作机器人常用传感器盘点………………………………………………………………35
制作机器人机械结构的一些经验…………………………………………………………41
看看你的实验室还缺了什么………………………………………………………………45
项目篇……………………………………………………………………………………………51
瓢虫机器人制作教程………………………………………………………………………52
日本爱好者制作的微型巡线小车…………………………………………………………68
如何制作你的第一个机器人………………………………………………………………74
基于笔记本电脑的移动机器人……………………………………………………………92
一个BEAM四足机器人的制作过程………………………………………………………105
用Arduino控制的三轮小车……………………………………………………………116
国内机器人爱好者的作品………………………………………………………………123
资源篇
楼主最近还看过
如何实现?如何设计电路?如何设计结构?
这个机器生命方案采用ATmega16单片机做控制器,单片机的8路AD通道和其
余24个IO接口都被使用。AVR单片机AD转换频率高于音频,可以用来进行简单的语
音采集。机器生命的程序较复杂,而AVR单片机适合进行快速复杂运算。本设计的电路
板上除了ATmega16单片机外,还有2个LG9110电机驱动芯片、2个LM386音频功放芯
片,和LM393电压比较器芯片,再加上少量电阻电容和三极管,电路简洁,适合初学者
和中级爱好者动手制作。
LCD采用通用1602模块,支持3位控制线4位数据线,如果你采用IO口复用技
术,可用6条线控制LCD模块。
此方案涉及光电检测、自动充电、语音识别、超声波测距、键盘(4个碰撞开关)、
LCD液晶显示、电机驱动等技术,这些都是动手做简单机器人的基本技术,如果爱好者
能把这个机器生命做好,那么你的电路设计、调试经验和编程能力都会有很大的提高。
这个机器生命的技术含量相当于20世纪70年代国际机器人领域的先进水平。当
时已经有很多非常精密和复杂的工业机器人被应用,但这种简单的机器人怎么能称作先进
呢?因为技术的复杂和技术的先进不是一个概念,复杂+精密不一定等于先进。先进的东
西不一定复杂和精密。
AAAA
寻光
我们可以用光电二极管来检测光线强弱。当然也可以用光敏电阻。将光敏电阻和
一个固定电阻串联接在电源正负极之间,光敏电阻靠近正极一侧。从光敏电阻和固定电阻
连接点引出导线接到ATmega16的AD转换输入口。当强光照在光敏电阻时,光敏电阻阻
值变小,因此其压降变小,而固定电阻分压增多,引出的AD检测电位升高,被单片机转
化为数字量后判断光线增强。机器生命有5个光电传感器,其中4个面向机器人前后左右
四个方向,另一个指向太阳能板所面对的方向。通过编程可以让机器人自主移动到光线最
强的地方。
BBBB
充电
本设计采用4.8V镍氢充电电池为系统供电。太阳能电池板正负极通过一个三极管
与电池正负极相连。有一个电压比较器比较电池电压与太阳能板的压差,如果压差高于某
值,比较器控制三极管导通,太阳能电池板对充电电池充电。充电电池电压上升,当高于
某值时控制三极管关断,结束充电。为使太阳能板能对电池组充电,要求太阳能板在阳光
直射下输出电压高于8V。
CCCC
语音识别
用AVR单片机的高速AD检测功能能实现简单的语音识别。声音信号被驻极体电
容话筒接收后送至LM386音频功放芯片放大和过滤后送至单片机AD转换口,单片机对
音频信号幅值采样转化为一组数字,然后对这组进行取方差运算,得出一个特征值,该特
征值可以用于简单的语音识别。比如你发一个“e”,方差应该比较小,如果你发“p”爆
破音,方差应该较大。当然,如果你用更复杂的数据处理,会得到更好的识别效果。本设
计使用了2路声音信号,目的是让单片机判断出声源的大体方位。
DDDD
超声波测距
用AVR的1个IO口输出40KHz信号送至超声波发射电路,当超声波遇到障碍物
返回后,被超声波接收头接收,信号经CX20106A解码芯片处理,得到一个低电平脉冲,
用该脉冲引发AVR单片机中断,AVR通过检查发波和收到回波之间的时间差即可算出障
碍物距离。
EEEE
电机驱动
本设计采用2片LG9110电机驱动芯片驱动两台直流减速电机。LG9110输出最大
电流为800mA,仅需要2条控制线与单片机IO口直接相连即可控制一台电机正反转或者
停止。LG9110仅有8个引脚,使用非常方便。
FFFF
让机器生命更聪明
我的这个机器生命设计方案能实现最酷的效果是:白天,阳光明媚,机器生命跑
到阳光底下晒太阳,太阳光会随着时间变化,机器生命能自动跑到最合适的位置享受日光
浴。到了晚上,机器生命会找个安静的地方闭目养神,等待明天太阳升起。你可以训练机
器生命,让它知道自己的名字叫什么。比如你叫着它的名字,同时站在它面前用强光照射
它的太阳能电池板,如此反复训练,会使机器生命听到自己名字后向声源方向跑去,在距
离声源一定远处停止,因为以往这样做它都能享受强光照射并充电。这就如同真正的宠物
狗,你叫它名字它就跑到你跟前希望能获得食物。这一切都是完全能够实现的,关键就在
于编程序实现它。
GGGG
想象无极限,你的机器宠物将无所不能
以上方案中,ATmega16的功能被发挥到极致,以至于没有空闲的IO口,系统不
能再扩展了。如果你用ATmega128单片机做,那么它拥有53个IO口,30多个中断,128Kb
的程序存储器,4Kb的RAM,使得你能编写更复杂的程序、储存更多的动态数据、连接
更多的外设,你的机器生命将变得非常有生命力。比如加入三轴加速度传感器、地磁传感
器、GPS定位、雨水传感器甚至摄像头、无线通信模块等,重新设计一个坚固和强劲的
底盘,你的机器生命就可以在室外自由探索了。
以上芯片外设来源说明:在淘宝上购买很容易
底盘:340元的高级履带式1:16电动坦克模型
加速度传感器、地磁传感器:美国AD公司的40元ADXL330加速度传感器
GPS定位:几十元的车载外置GPS天线
最后,我想说,机器人是非常好玩的,只要你有想象力,有毅力,努力研究实践就能创
造奇迹。
日本爱好者制作的微型巡线小车
译者:JingChen
巡线(LineFollowing)小车比赛就是众多机器比赛中的一种。这种比赛是以小车在线
上的运行速度大小来决出胜负的。笔者自己制作了一个很小的(体积还不到一般巡线小车的
五分之一)能够在桌面上运行的巡线小车。如图一所示:
巡线小车
关于巡线小车
巡线小车是沿着桌面上的线运行,且具有自我操控的功能。其基本的操作有:
(1)利用小车前端的图像传感器来捕捉线的位置。大多数参赛者都会使用几个图像反射器
来进行图像处理,而少数具有领导能力的参赛者使用的是图像传感器来进行图像处理。另外,
对线的感应过程还需要高分辨率和高鲁棒性(即系统的健壮性)。
(2)利用操控机制来控制小车追踪线。这仅仅是一个伺服操作(以机械位置或角度作为控
制对象的自动控制)。在运用数字PID过滤器或者任何其他的伺服算法来稳定跟踪运动时,
任何相位的补偿都是必须的。
(3)通过车道的状况来控制车速。在通过一条曲线时,由于轮胎和路面的摩擦,小车的速
度是要有一定限制的。
小车寻的线有两种,分别是:黑底白线和白底黑线。大部分竞赛都是采用第一种线,且线的
宽度介于15和25毫米之间。下面是白底黑线的示意图:
图二:小车在白底黑线上运行
巡线小车的硬件部分
下图三显示了巡线小车的底面和侧面。所有的机械部件和电线都是在一块原始的板子上进行
安装的,这块板子同时也构成了小车的底盘。
巡线小车有两个驱动车轮和一个自由车轮。驱动车轮由一个7毫米直径的球轴承和一个橡胶
轮胎构成。自由车轮是一个5毫米的球轴承。要让驱动车轮动起来,还需要两个微小的用于
蜂窝电话,寻呼机或者任何移动设备的振动马达。小车的主轴用一个弹簧板压在轮胎上,其
输出力矩就移转给车轮了。
驾驶装置的实现有很多不同的方法。但主要是通过小车左右轮之间不同的旋转速度来驾驶小
车的。这样驾驶就不需要任何额外的致动器,只需要控制车轮的速度就可以了。
巡线小车最新的硬件资料图表如下:
巡线小车的软件部分
图像反射器
为了探测小车将要运行的线,大多数参赛者都用两个或更多的图像反射器。与地面反射率
成比例输出的电流通过一个电阻被转换为电压,并且测试这个电压看线是否被探测到。然而
环境光线引起的光敏电流会被添加到输出电流,因此阈值电压是不断变化的,而不是固定在
某一级的。
多数用于工业用途的图像探测模块都用柔和的光线以此来避免环境光线的干扰。被探测到的
信号通过一个带通滤波器(一个允许特定频段的波通过同时屏蔽其他频段的设备)被过滤,
没有用的信号就会被过滤掉。因此,只能探测到从光发射器发射来的比较柔和的信号。当然,
探测器绝对不能因为环境光线而达到饱和。探测器在线性区域进行探测时,这是必须的。
在这个项目中,脉冲光是用来排除环境光线的。这非常适合按顺序扫描以防下一个传感器干
扰的阵列传感器。微控制器开始扫描传感器的状态,采样输出电压,打开LED并且再次采
样输出电压。两次采样的不同之处在于LED的光敏电流和环境光线被排除后的输出电压。
其余的传感器也按上述顺序进行扫描。
控制器Amtel公司的ATmega8
线感应器六个图像反射器
供电装置两个CR2032锂电池(一个用于控制器,一个用于马达)
马达两个小马达分别用于左轮和右轮
尺寸45毫米长,33毫米宽,12.5毫米高
重量15克(包含两个锂电池)
性能在椭圆线上53厘米每秒
跟踪控制
将被跟踪的线的位置是与中心值做对比的,定位误差同比例、积分、差分滤波器一起被处理
来生成控制命令。巡线巡线用当前最流行的用于伺服控制的算法PID来跟踪线。
在伺服系统中比例项是相同的。它是一个不依赖于时间的增益放大器。应用差分是为了改
善对干扰的响应,同时弥补控制对象滞后的相位。大多数情况下为了稳定跟踪运行,D项是
必须的。这个项目中从巡线原因来看,I项是不必要的。提高了DC增益的I项是用于消除
左偏移误差的。但是,由于其本身的相位滞后,它常常会降低伺服系统的稳定性。而巡线操
作能够忽略这样的跟踪偏差,因此I项是不必要的。
当小车偏离线或者到达线的末端时,感应线的传感器就会产生一个错误。这时就会马达会停
止,微控制器进入零功率消耗的休眠状态。
?Developmentdiary[Ja]
?Circuitdiagram
?FirmwareMay23,2004
*******************************************************************************
译者简介:
JingChen:中国科学技术大学软件工程硕士
如何制作你的第一个机器人
原文链接:http://letsmakerobots.com/start
译者:费清
如何制作你的第一个机器人?
如果你在寻找一个更加便宜和快速的工程,以下这个你可能会感兴趣。
如果你以前从来没有制作过任何东西,下面这个视频也许会激发你的潜力,因为它是如此容
易。
怎样用不到200美元的钱就可以制作出一个超酷的机器人
这样确实很酷,因为:
1.这些电子设备用的都是真正的部件。
(他不是那种需要你花很多时间的思考才能工作的自制小玩具,也不是随便搭配就能做成的
转杯)
2.这些基础的很容易做出来,你将在1小时之内拥有一个机器人!
3.你可以从这开始慢慢发展,
光看名字就很清楚了,下面会有更多关于这个芯片的资料。
4.一个PICAXE单片机的伺服电机加强包
你可以使用任何的标准伺服电机,最好再有一个300欧姆的电阻器。
售价:30美元
5.一个夏普GP2D120电感式电压调整传感器芯片
11.5英寸或者其他范围也可以。但是对于这个项目来说,不要买“数字版”的夏普传感器。
售价:20美元
6.两个带有轮子的齿轮马达
其比率越高,机器人就越强壮,而越低,他就越快。对于这个项目来说,我建议比率应在120:1
到210:1之间。
售价:总计31美元
你还所需要这些东西:
双面胶,普通的胶带纸,简单的焊接装置,一把普通的小钳子或者剪刀和一把螺丝起子。
如果为了好玩,你也可以用这些:
发光二极管,灯光的闪动那样会是你的机器人看起来更酷;
一个很小的扬声器,机器人对声音的反应可以使你和他交流;
用SRF05超声波传感器代替夏普的红外传感器,或者用更多的。SRF05超声波传感器价格更
贵一些但是更精确,其探测范围也更大,而且看起来更酷。
好吧,你已准备好了材料,你想开始动手做了,现在开始!
首先,把轮子装到你的齿轮马达上,接着为他装上轮胎.
使用双面胶是为机器人快速装上器件一个方法.
装入电池,这样你对它的重量和平衡会有一个很实际的认识。在其底部粘上双面胶会更好.
如果你觉得我的设计太简单的话,你也可以自行设计.
最重要的是我把电池,伺服电机和轮子都粘在了一起。轮子和伺服电机可以自由的旋转,它
可以设法在轮子上保持平衡或者不是。
为了避免意外发生,应该取出电池。
现在是制作“大脑”了。
你应该有这样一块工程主板。可以注意到他上面有一块芯片,把它取出来。这块芯片是复合
晶体管驱动,它很方便的装在主板上,但是在这个项目中我们不需要它。所以:拿掉吧!
我们可以用平头螺丝起子很容易的把芯片从插口撬出来,但是一定要小心。
一块新的芯片,从未使用过是很难直接插入插口的,所以你需要把所有的引脚弄弯到一个适
合的角度,是他们能正好插入。最后,确保所有的引脚都在插口里。
如果你买的是从Picaxe单片机升级的伺服电机,那么你得用他的黄色芯片代替复合晶体管。
注意,那个黄色的芯片并不是可以填满主板上所有的插口。正如照片所示,只需要把八个脚
插入正确的插口就可以了,他本身是一个电阻,所以也就不需要别的电阻了。
这个黄色的芯片实际上是在套装里的一个8*330欧姆的电阻。因此,如果你需要一个电阻器,
你只需要插入0号槽,我们在使用一个伺服电机时将使用这个槽。
再将一块大的芯片,“主脑”,微控制器Picaxe28单片机插入工程主板。
确保位置很重要,在每一个的末尾都有标记,包括主板。这必须组装在一起。
芯片将通过两个引脚从主板上获得动力。
剩下的26个引脚分布在主板的周围,你可以对他们进行编程。所以你可以通过上载到微控制
器的程序发送输入输出电流来检测和控制事物。
现在插入L293D马达控制器。
这将要使用微控制器的4个输出信息并把他们转变成2个。听起来很笨?好吧。。。任何从微控
制器的输出信息都只有“开”和“关”。所以如果仅仅是使用这些,那么机器人只能向前进或者
停止,他不会倒走!这样遇到墙时显然很不合适!
这块主板制作的很精巧,2个信号输出口有独自的的位置--在马达控制器附近--分别被标以
(A)和(B)。后面将有更多关于他的信息。
你在主板的后面可以找到一些奇怪的塑料。他们没有什么用处,只是一些出厂时的残留物。
在你需要那些被遮挡的插口时只需把他们揭下来就可以了。
取4根电线,把他们和4个“A&B”两极焊
接在一起。(或者其他的连接方法)
如果你有其他遇热会融化收缩的塑料或者胶带纸,那也是很好的办法。
两个“A”输出端链接马达,另两个“B”端口链接另一个。不管谁和谁,只要保证A接口连到
了马达上,“B”接到了另两个点上。
现在让我们连接伺服电机。
如果你已经阅读了关于Picaxe单片机的文档,你就该知道要是你要增加私服电机,你就得
使用两
个不同的电源。先不管这个,现在我们不在乎这个,这只是一个简单的机器人,而且据我的
经验我这样方法他也能很好的工作。
如果想使用标准的伺服电机那就为他的“0”输出口焊接一个针。
如果你的线是(黑,红,白),或者(黑,红,黄),那么黑线应该连在最边上。我的是(棕
色,红色,橙色)的,所以棕色线在最边缘。
指示一般是红线,标记为V,或者是这些里面的一种(“V”“V+”“+”“1”)。这时电流的来源。
黑线(我是棕色线)是G(或者“G”“0”“-”)。这就是地线,电流的流向。
最后一根就是信号线。
其他设备可能只需要地线和信号线,有些对于输入输出的正极,地线都需要。每一件事物都
有不同的叫法,所以一开始可能会疑惑,但是之后你将会习惯。因为他真的很简单.
现在连接他的头--夏普的电感式电压调整感应器。
有很多种方法可以完成他,一下是一些提示:
红线应接到V1,或者接到类似有“V”这样的标记处。
无论在哪,黑线都是接地线的。
白线连接模拟输入口1。
如果已经阅读过该工程主板的相关文档,那么你应该知道怎样连接和使用附带的缎带。
在这张照片上可以看到,我是从旧的烧坏的伺服电机上把电线剪下来,焊接上针,就像连接
伺服电机一样把他连上去。
无论你是用缎带或者我的方法连接夏普的电感式电压调整器,你都应该将剩下的3根模拟输
入信号线连到V端。我跳过了一些步骤,你可以发现剩下的3根线的连接很便捷。
在这里方便不使用的信号输入很重要的原因是他们是左浮动的。这就意味着,在你试图读入
信号时,如果没有连接好,那么你将会得到很多各式的数据。
接下来是很有趣的工作。(或者说让他具有生命)
无论如何都要把电池正极的红线和工程主板上的红线(V)连在一起,还有黑线(-)和地
线。具体怎么做取决于你的设备工具。如果电池和主板都有别针,那么你应该确保从电池的
正极出发到主板的“地线”。虽然并不是经常,但有时候别针会相反,所以只要保证把相配的
别针组一起。
还有就是不要供给主板超过6伏的电压。
一个小提示:在这里我们只用一个电池工作。除了V1和V2,你以后可能会要用同样的地线。
那样的话你的别针可以只用一个电源,马达等其他的部件用别的电压。
在你自己的电脑上装一个Picaxe单片机编程的编辑器,按照手册把插口/USB接口/串口都连
接起来,把电池装进还未装头的机器人,往机器人插入插口杆。。。进入编辑器,写程序:
servoservoservoservo0,0,0,0,150150150150
按下F5,等待程序的转换,接着你的伺服电机会有点拉动(或者旋转,这取决于他的初始
状态)。
如果在这里出错,联系我,或者翻阅手册检查端口,直到没有错误警告并可以工作。
作为测试,试着写下:
servoservoservoservo0,0,0,0,200200200200
按下F5,伺服电机会旋转一个角度后停下来。为了回来,写:
servoservoservoservo0,0,0,0,150150150150
按下F5,现在,机器人的头正向朝前了。
粘上头--夏普的电感式电压调整感应器。
你好世界,我是一个机器人,准备好接受你的命令去探索世界!^_^
你已经做好基础的工作了。
这个设计也许还周到,你也可以使用其他部件等。但是如果你是像上面所述的方法一样连接
的,
下面是一些小提示,作为你开始对机器人编程的参考。
在你的编辑器内输入(或者复制-粘贴)以下代码,连好机器人后按下F5
++++++++++++
main:main:main:main:
readadcreadadcreadadcreadadc1,1,1,1,b1b1b1b1''''takestakestakestakesthethethethevoltagevoltagevoltagevoltagereturnedreturnedreturnedreturnedtotototoanalogueanalogueanalogueanaloguepinpinpinpin1,1,1,1,andandandandputsputsputsputsititititintointointointo
variablevariablevariablevariableb1b1b1b1
debugdebugdebugdebug''''thisthisthisthisdrawsdrawsdrawsdrawsoutoutoutoutallallallallvariablesvariablesvariablesvariablestotototothethethetheeditor.editor.editor.editor.SetSetSetSetitititittotototo““““ByteByteByteByte””””ififififititititisisisisonononon““““
WordWordWordWord””””
gotogotogotogotomainmainmainmain
++++++++++++
现在,把你的手伸到机器人头的前面,注意变量b1的变化。你可以用你已有的只是快速的
判断出
将会发生什么。
现在我建议你将机器人放在火柴盒上,这样轮子就可以开始转动。
在你的编辑器内输入(或者复制-粘贴)以下代码,连好机器人后按下F5
++++++++++++
highhighhighhigh4444
lowlowlowlow5555
++++++++++++
其中一个轮子会转向一个方向,是不是向前转呢?那么,这就是轮子前进的指令。
如果要让轮子向后转,你可以试试:
++++++++++++
lowlowlowlow4444
highhighhighhigh5555
++++++++++++
要转动另一个轮子:
highhighhighhigh6666
lowlowlowlow7777
(或者其他向反方向转动的方法)
伺服电机你已经试过了。
自始至终,转到一边是:
servoservoservoservo0,0,0,0,75757575
转到另一边是:
servoservoservoservo0,0,0,0,225225225225
转到中间:
servoservoservoservo0,0,0,0,150150150150
这里有一个小程序,它将使机器人转圈,在障碍物前停下来,巡视四周确定最好的路,转弯
和大
胆的向前进。
++++++++++++
SymbolSymbolSymbolSymboldangerleveldangerleveldangerleveldangerlevel====70707070''''howhowhowhowfarfarfarfarawayawayawayawayshouldshouldshouldshouldthingthingthingthingbe,be,be,be,beforebeforebeforebeforewewewewereact?react?react?react?
symbolsymbolsymbolsymbolturnturnturnturn====300300300300''''thisthisthisthissetssetssetssetshowhowhowhowmuchmuchmuchmuchshouldshouldshouldshouldbebebebeturnedturnedturnedturned
symbolsymbolsymbolsymbolservo_turnservo_turnservo_turnservo_turn====700700700700''''ThisThisThisThissetssetssetssetsforforforforhowhowhowhowlonglonglonglongtimetimetimetimeweweweweshouldshouldshouldshouldwaitwaitwaitwaitforforforforthethethetheservoservoservoservototototo
turnturnturnturn(depending(depending(depending(dependingononononitititit′′′′ssssspeed)speed)speed)speed)beforebeforebeforebeforewewewewemeasuremeasuremeasuremeasuredistancedistancedistancedistance
main:main:main:main:''''thethethethemainmainmainmainlooplooplooploop
readadcreadadcreadadcreadadc1,1,1,1,b1b1b1b1''''readreadreadreadhowhowhowhowmuchmuchmuchmuchdistancedistancedistancedistanceaheadaheadaheadahead
ififififb1b1b1b1<<<<dangerleveldangerleveldangerleveldangerlevelthenthenthenthen
gosubgosubgosubgosubnodangernodangernodangernodanger''''ififififnothingnothingnothingnothingahead,ahead,ahead,ahead,drivedrivedrivedriveforwardforwardforwardforward
elseelseelseelse
gosubgosubgosubgosubwhichwaywhichwaywhichwaywhichway''''ififififobstacleobstacleobstacleobstacleaheadaheadaheadaheadthenthenthenthendecidedecidedecidedecidewhichwhichwhichwhichwaywaywaywayisisisisbetterbetterbetterbetter
endendendendifififif
gotogotogotogotomainmainmainmain''''thisthisthisthisendsendsendsendsthethethetheloop,loop,loop,loop,thethethetherestrestrestrestareareareareonlyonlyonlyonlysub-routinessub-routinessub-routinessub-routines
nodanger:'nodanger:'nodanger:'nodanger:'thisthisthisthisshouldshouldshouldshouldbebebebeyouryouryouryourcombinationcombinationcombinationcombinationtotototomakemakemakemakethethethetherobotrobotrobotrobotdrivedrivedrivedriveforward,forward,forward,forward,thesethesethesetheseyouyouyouyou
mostmostmostmostlikelylikelylikelylikelyneedneedneedneedtotototoadjustadjustadjustadjusttotototofitfitfitfitthethethethewaywaywaywayyouyouyouyouhavehavehavehavewiredwiredwiredwiredyouryouryouryourrobotsrobotsrobotsrobotsmotorsmotorsmotorsmotors
highhighhighhigh5555::::highhighhighhigh6666::::lowlowlowlow4444::::lowlowlowlow7777
returnreturnreturnreturn
whichway:whichway:whichway:whichway:
gosubgosubgosubgosubtotalhalttotalhalttotalhalttotalhalt''''firstfirstfirstfirststop!stop!stop!stop!
'Look'Look'Look'Lookoneoneoneoneway:way:way:way:
gosubgosubgosubgosublturnlturnlturnlturn''''looklooklooklooktotototooneoneoneonesidesidesideside
pausepausepausepauseservo_turnservo_turnservo_turnservo_turn''''waitwaitwaitwaitforforforforthethethetheservoservoservoservototototobebebebefinishedfinishedfinishedfinishedturningturningturningturning
gosubgosubgosubgosubtotalhalttotalhalttotalhalttotalhalt
readadcreadadcreadadcreadadc1,1,1,1,b1b1b1b1
'Look'Look'Look'Lookthethethetheotherotherotherotherway:way:way:way:
gosubgosubgosubgosubrturnrturnrturnrturn''''looklooklooklooktotototoanotheranotheranotheranothersidesidesideside
pausepausepausepauseservo_turnservo_turnservo_turnservo_turn''''waitwaitwaitwaitforforforforthethethetheservoservoservoservototototobebebebefinishedfinishedfinishedfinishedturningturningturningturning
gosubgosubgosubgosubtotalhalttotalhalttotalhalttotalhalt
readadcreadadcreadadcreadadc1,1,1,1,b2b2b2b2
''''DecideDecideDecideDecidewhichwhichwhichwhichisisisisthethethethebetterbetterbetterbetterway:way:way:way:
ififififb1<b2b1<b2b1<b2b1<b2thenthenthenthen
gosubgosubgosubgosubbody_lturnbody_lturnbody_lturnbody_lturn
elseelseelseelse
gosubgosubgosubgosubbody_rturnbody_rturnbody_rturnbody_rturn
endendendendifififif
returnreturnreturnreturn
body_lturn:body_lturn:body_lturn:body_lturn:
highhighhighhigh6666::::lowlowlowlow5555::::lowlowlowlow7777::::highhighhighhigh4444''''thisthisthisthisshouldshouldshouldshouldbebebebeyouryouryouryourcombinationcombinationcombinationcombinationthatthatthatthatturnsturnsturnsturnsthethethethe
robotrobotrobotrobotoneoneoneonewaywaywayway
pausepausepausepauseturnturnturnturn::::gosubgosubgosubgosubtotalhalttotalhalttotalhalttotalhalt
returnreturnreturnreturn
body_rturn:body_rturn:body_rturn:body_rturn:
highhighhighhigh5555::::lowlowlowlow6666::::lowlowlowlow4444::::highhighhighhigh7777''''thisthisthisthisshouldshouldshouldshouldbebebebeyouryouryouryourcombinationcombinationcombinationcombinationthatthatthatthatturnsturnsturnsturnsthethethethe
robotrobotrobotrobotthethethetheotherotherotherotherwaywaywayway
pausepausepausepauseturnturnturnturn::::gosubgosubgosubgosubtotalhalttotalhalttotalhalttotalhalt
returnreturnreturnreturn
rturn:rturn:rturn:rturn:
servoservoservoservo0,0,0,0,100100100100''''looklooklooklooktotototooneoneoneonesidesidesideside
returnreturnreturnreturn
lturn:lturn:lturn:lturn:
servoservoservoservo0,0,0,0,200200200200''''looklooklooklooktotototothethethetheotherotherotherothersidesidesideside
returnreturnreturnreturn
totalhalt:totalhalt:totalhalt:totalhalt:
lowlowlowlow4444::::lowlowlowlow5555::::lowlowlowlow6666::::lowlowlowlow7777''''lowlowlowlowononononallallallall4444haltshaltshaltshaltsthethethetherobot!robot!robot!robot!
ServoServoServoServo0,1500,1500,1500,150''''facefacefacefaceforwardforwardforwardforward
waitwaitwaitwait1111''''freezefreezefreezefreezeallallallallforforforforoneoneoneonesecondsecondsecondsecond
returnreturnreturnreturn
++++++++++++
优秀的程序可以使机器人向前进,转头,下决策,做较小的调整适应,转向“有趣的洞”,比
如
大门口,在前进时还可以一齐工作。当他的转头时还旋转,那看起来真的非常的酷。
点击此处可以看伪代码:http://letsmakerobots.com/node/25