机器人制作天空宝典
前言………………………………………………………………………………………………5
理论篇……………………………………………………………………………………………6
如何制作机器人小车---给初学者………………………………………………………9
概念剖析:什么是BEAM机器人?………………………………………………………18
经验篇……………………………………………………………………………………………20
制作机器人常用的单片机性能特点及使用经验…………………………………………21
制作机器人常用传感器盘点………………………………………………………………35
制作机器人机械结构的一些经验…………………………………………………………41
看看你的实验室还缺了什么………………………………………………………………45
项目篇……………………………………………………………………………………………51
瓢虫机器人制作教程………………………………………………………………………52
日本爱好者制作的微型巡线小车…………………………………………………………68
如何制作你的第一个机器人………………………………………………………………74
基于笔记本电脑的移动机器人……………………………………………………………92
一个BEAM四足机器人的制作过程………………………………………………………105
用Arduino控制的三轮小车……………………………………………………………116
国内机器人爱好者的作品………………………………………………………………123
资源篇
楼主最近还看过
声音:你可以为别针1和地线装一个扬声器,写下代码:SoundSoundSoundSound1,1,1,1,(100,(100,(100,(100,5)5)5)5)或者在上例中添加:SoundSoundSoundSound1,1,1,1,(b1,5)(b1,5)(b1,5)(b1,5)有趣的声音取决于前方物体的距离。你也可以在别针2和地线安装灯或发光二极管,写下:HighHighHighHigh2222-开灯,LowLowLowLow2222-关灯。在另一个伺服电机上装一直激光笔如何?以后你可以转动激光笔,打开或者关闭它,用它指向某个地方等等。你可以做任何想做的事^_^。欢迎来到自制机器人世界,这里有成千上万的驱动器和感应器在期待着你来将他们组装成机器人o(∩_∩)o******************************************************************************译者简介:费清,男,23,江苏昆山,本科。兴趣广泛,热爱生活,热爱IT事业,酷爱足球和音乐。5年软件开发经验,目前就职于一家IT企业,主要从事市政系统的BS/CS设计与开发,并阶段性处理项目业务逻辑。四年前开始接触人工智能与机器人技术,并开始热衷于此。在校期间曾参加第二、三届江苏省大学生机器人大赛并取得一定成绩。本人业余时间热衷于开源项目的学习与开发,在一次次相互交流中不断汲取知识提高能力。
基于笔记本电脑的移动机器人
作者:TeleToyland和RoboRealm
译者:胡泊
机器人天空(http://www.robotsky.com)
93
这个项目是由TeleToyland和RoboRealm合作完成的。我们的机器人由一台普通的笔记
本电脑和一个由电机和轮子驱动的平台组成。我们刻意保持机器人平台的易于搭建性,我们
希望利用这个工程来展示搭建一个机器人平台并不难,期待看到更多的朋友加入进来。
第一步:准备材料
电机:我们使用从网上购买的由电机、轮子、光电编码器组装好的套件。这将比我们自
己动手组装的更加可靠和稳定。在我们这个作品中,并没有应用到光电编码器,但是在机器
人开发中光电编码器绝对是一个值得一用的传感器。
我们还从网上购买了一个万向轮,我们的机器人采用的是两个电机带动的驱动轮加一个
由万向轮作为平衡轮的驱动方式。电机驱动方面,我们采用了两个HB-25电机控制模块。
其余部分,一块12"x10"大,1/2"厚的胶合板,两块木块,一些螺栓螺帽。
第二步:搭建移动平台
第三步:将万向轮固定在机器人平台上
在机器人平台后部中间位置按照万向轮末端三个固定孔的位置打好三个通孔,使用沉头
螺栓配合螺母将万向轮固定在机器人平台上,与两个电机上带动的轮子形成一个稳定的三点
支撑。
第四步:电机控制模块、电池、开关
我们将HB-25电机控制模块安装在电机的后面,这样可以将中间的大部分空间留给电池
组。
将电机与电机控制模块连接,将电机线剪成合适的长度,一端固定在电机上,另一端固
定一个金属的连接片,这样可以便于拆装。注意一定要控制好电机线的长度,过短不便连接,
如果过长则需要将过长的导线固定好,避免卷入电机。
我们把电源开关装在胶合板的下面,这样可以保证机器人移动平台正面的简洁。
第五步:伺服控制与把手
控制HB-25怎样去控制电机运动有很多种方法,我们在网上找到了直接利用计算机usb
口来进行控制的模块。
到目前为止,我们并没有用到电机上自带的光电编码器,将来在进一步的开发中可能会
用到。在一些复杂一点的控制中,光电编码器将是不可或缺的传感器。
所有的机器人都需要一个方便的把手!
在我们的这个作品中,我们用了一点剩下的铝板的边角料,在机器人胶合板的后部打了
两个孔,用螺钉将把手固定在了机器人上。
第六步:笔记本
在机器人的前部固定了两个排列在一起的摄像头,这两个摄像头采得的图像用来使机器
人避开前方的障碍物。两个摄像头通过USB接口将图像数据传给计算机。
我们的笔记本是一台MSI-Winbook笔记本,它可以很好的固定在机器人的移动平台上。
我们选择这款笔记本的原因一个是外形尺寸比较合适,还有一个就是价格较低($350)。
现在我们用一个USB接口来控制电机,还有两个USB接口来连接摄像头,好在MSI-
Winbook刚好有三个USB口,这样我们就不需要再扩展USB口了。
现在机器人用的还是自己的电池。
第七步:软件
我们在笔记本电脑上运行自己编写的图像处理软件,可以分辨出机器人前方障碍物的位
置。机器人上的两个摄像头被手动调成了不同的焦距。一个摄像头焦距调的比较近,另一个
正相反。这样我们可以通过比较两个摄像头得到的不同图像来确定障碍物的位置。这种算法
虽然在距离精度上差一些,但是求解速度非常快。
下面的图像显示了两个摄像头对机器人面前的不同距离的可乐罐和DrPepper罐采集
到的图像。我们可以明显的看到两个摄像头的不同焦距产生的效果,我们的算法就是根据两
幅不同焦距的图片来判断哪个障碍物离自己更近一点。
注意下面的图像,左侧的图像远处的罐子正处在焦距上,近处的罐子则有些失焦了。右
侧的图像则正好相反。通过判断图像的边缘强度可以判断哪个对象正处在焦距上,哪个对象
失焦。
每个图像都被分割成三个垂直的部分:左、中、右。我们可由此来判断障碍物的方位,
来控制机器人转向。
一个
BEAMBEAMBEAMBEAM
四足机器人的制作过程
原文链接:http://www.instructables.com/id/A-Servo-based-4-legged-Walker/
译者:胡泊
第一步:准备零件和所需的材料
制作一个四腿的行走机器人非常简单,所需零件也非常少,两个电机,机器人的腿(用
直径合适的铁丝弯制),电池,底板(我用的是一种非常酷的塑胶材料,当它被在热水中加
热时就会变软,冷却后又会回复硬度),用来将电池和电机固定在底板上的螺钉,一小块电
路实验版(可以在电子市场买到),一个用来安放ATMega的28针芯片插座,胶,烙铁和焊
锡,以及刀子。
装配之前我还画了一张草图,在上面标出了需要打孔和切割的位置,有一张草图可以让
第五步:关键的一步:将固定好腿部零件的十字臂装在伺服电机上
将绑上了腿部的十字臂固定到伺服电机上,然后用钳子小心地把机器人的前后腿一点点
折到图中所示位置。这是一个非常精巧的活,一不小心甚至可能弄坏你的伺服电机,而且要
保证前后腿左右基本对称,否则机器人很难走的很好。我当初可是花费了好大力气才把它弯
成我想要的形状,这里我得对你说一句:“GoodLuck!”
第六步:大脑
因为这个电路非常简单,所以我就没有给出详细的电路图
因为使用的是伺服电机,并且只是做很简单的运动,所以不需要额外的驱动电路,直接
用单片机输出的脉宽调制信号来控制电机动作。
我切了一小块电子实验中常用的实验板来做这个电路,用胶水粘了一些插针在上面。两
个三针的用来连接伺服电机,一个两针的用来接电池,一个五针的用来传输程序到单片机里,
还有一个28针的插座用来安放我的ATMega8单片机。
所有的插针粘好后,我在实验板的反面用电线按照电路原理图将必要的针脚焊接在一
起。
第七步编程
将程序下载到单片机中有很多办法,我用的是最简单的一种方法,只需要一根如图中所
示的下载线通过计算机并口将程序下载到单片机中。
使用这种方法有一个地方要切记:千万不要通过数据线对你的并行口施加5v以上的电
压,那会烧坏你的并口,甚至毁掉你的整台电脑。不过在这个工程中最高电压也只有3.6v,
不过还是小心一点好。
我的代码在后面的附件中,程序功能很简单,只是靠输出脉冲信号来控制伺服电机的动
作,与其他复杂的机器人相比算是很简单的了。
第八步:蹒跚学步
现在所有的工作都已经做好了,我的机器人马上就要迈出它人生的第一步了,不过这时
候可不能对它报太大的期望,毕竟就是一个婴儿迈出第一步的时候也是摇摇晃晃的。这时候
就需要不断的调整机器人的步伐,调整前腿的后腿的相对运动关系,当然这是一个枯燥而漫
长(光荣而艰巨?)的过程。经过多次的调整,我的机器人可以走的有点模样了。
现在,我可以骄傲的宣布:我的BEAM机器人做好了,有志者事竟成!
用用用用ArduinoArduinoArduinoArduino控制的三轮小车控制的三轮小车控制的三轮小车控制的三轮小车
作者:Mickey
/*编者注:Arduino是源于意大利的一个开放源码的硬件项目。包括一片单片机开发板和一
套程序开发环境软件。因其易于上手,成本低廉而受到众多单片机初学者的欢迎。*/
硬件:
1.3轮小车1台
2.ArduinoDM板1个
3.GP2D12红外测距传感器2个
4.杜邦线若干
5.电机驱动板1个
6.LCD16021个
<此处内容被屏蔽>2V电池包1个
软件:
1.arduino-0011
实验目标:
使小车能自主地在房间内行驶,并自动躲避障碍物。
实验目的:
利用Arduino开发板与红外线测距传感器、电机驱动板、液晶显示等通讯,完成一些简单
的任务,激发初学者对机器人的制作热情。
实验原理:
使用2个GP2D12成八字型安装,探测左右2边的障碍物,当然这样也会有个弊端,就是中
间要是出现一个较小的障碍物就会探测不到,所以能安装3个GP2D12最好了。这里我们就
用2个将就实验,实验原理很简单,就是左边探测到一定距离的障碍物就控制2个电机向右
转,右边探测到一定距离的障碍物就控制2个电机向左转,至于小车转向多少度呢,这个小
车没有使用编码盘和电子罗盘,所以转向就只用了个简单的延时来处理。
实验代码:
/************************************************************/
intGP2D12_L=0;
intGP2D12_R=1;
intledpin=13;
intLCD1602_RS=12;
intLCD1602_RW=11;
intLCD1602_EN=10;
intDB[]={6,7,8,9};
inten1=5;
intin1=4;
intin2=3;
inten2=2;
intin3=1;
intin4=0;
charstr1[]="www.DFRobot.cn";
charstr2[]="L=00cm";
charstr3[]="R=00cm";
/************************************************************/
voidLCD_Command_Write(intcommand)
{
inti,temp;
digitalWrite(LCD1602_RS,LOW);
digitalWrite(LCD1602_RW,LOW);
digitalWrite(LCD1602_EN,LOW);
temp=command&0xf0;
for(i=DB[0];i<=9;i++)
{
digitalWrite(i,temp&0x80);
temp<<=1;
}
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
temp=(command&0x0f)<<4;
for(i=DB[0];i<=10;i++)
{
digitalWrite(i,temp&0x80);
temp<<=1;
}
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
}
/************************************************************/
voidLCD_Data_Write(intdat)
{
inti=0,temp;
digitalWrite(LCD1602_RS,HIGH);
digitalWrite(LCD1602_RW,LOW);
digitalWrite(LCD1602_EN,LOW);
temp=dat&0xf0;
for(i=DB[0];i<=9;i++)
{
digitalWrite(i,temp&0x80);
temp<<=1;
}
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
temp=(dat&0x0f)<<4;
for(i=DB[0];i<=10;i++)
{
digitalWrite(i,temp&0x80);
temp<<=1;
}
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
}
/************************************************************/
voidLCD_SET_XY(intx,inty)
{
intaddress;
if(y==0)address=0x80+x;
elseaddress=0xC0+x;
LCD_Command_Write(address);
}
/************************************************************/
voidLCD_Write_Char(intx,inty,intdat)
{
LCD_SET_XY(x,y);
LCD_Data_Write(dat);
}
/************************************************************/
voidLCD_Write_String(intx,inty,char*s)
{
LCD_SET_XY(x,y);//设置地址
while(*s)//写字符串
{
LCD_Data_Write(*s);
s++;
}
}
/************************************************************/
voidMotor(charx,chary,charm,charn)
{
digitalWrite(en1,HIGH);//驱动1使能
digitalWrite(in1,x);
digitalWrite(in2,y);
digitalWrite(en2,HIGH);//驱动2使能
digitalWrite(in3,m);
digitalWrite(in4,n);
}
/************************************************************/
voidsetup(void)
{
inti=0;
for(i=0;i<=13;i++)
{
pinMode(i,OUTPUT);
}
LCD_Command_Write(0x01);
delay(50);
LCD_Command_Write(0x28);//4线2行2x7
delay(50);
LCD_Command_Write(0x06);
delay(50);
LCD_Command_Write(0x0c);
delay(50);
LCD_Command_Write(0x80);
}
/************************************************************/
voidloop(void)
{
floattemp;
intval_L,val_R;
chari,a,b,c,d;
LCD_Command_Write(0x02);
delay(50);
LCD_Write_String(1,0,str1);
delay(50);
LCD_Write_String(1,1,str2);
delay(50);
LCD_Write_String(9,1,str3);
delay(50);
while(1)
{
val_L=analogRead(GP2D12_L);//读左边GP2D12模拟信号
val_R=analogRead(GP2D12_R);//读右边GP2D12模拟信号
temp=val_L/5.8;
val_L=90-temp;//90cm以上超出范围
temp=val_R/5.8;
val_R=90-temp;
LCD_Write_String(1,1,str2);
LCD_Write_String(9,1,str3);
a=0x30+val_L/10;
b=0x30+val_L%10;
c=0x30+val_R/10;
d=0x30+val_R%10;
LCD_Write_Char(3,1,a);//显示左右距离
LCD_Write_Char(4,1,b);
LCD_Write_Char(11,1,c);
LCD_Write_Char(12,1,d);
if(val_L>30&&val_R>30)//30cm以内有障碍转向
{
Motor(LOW,HIGH,LOW,HIGH);
delay(500);
}
elseif(val_R<30&&val_L<30)
{
Motor(HIGH,LOW,HIGH,LOW);
delay(500);
Motor(HIGH,LOW,LOW,HIGH);
delay(500);
}
elseif(val_L<30&&val_R>30)
{
Motor(HIGH,LOW,LOW,HIGH);
delay(500);
}
elseif(val_R<30&&val_L>30)
{
Motor(LOW,HIGH,HIGH,LOW);
delay(500);
}
}
}
**************************************************************
作者简介:
Mickey男
现任北京龙凡汇众机器人科技有限公司电子工程
师,主要负责机器人电路设计和淘宝业务。本人从小就喜欢机器人制作,
大学毕业工作几年后才开始从事机器人事业,能从事该事业我感到无比快乐,希望我的制作
也能给大家带来进步和快乐。
国内机器人爱好者的作品
作者:刘天龙
我以前做的都属于业余级机器人,积累了一些机器人设计、零件加工、组装等方面的经
验。
机器人爱好者想做机器人,但却觉得不知从何下手,原因有很多,其中之一可能是爱好
者对自己想做的机器人的愿景过高在作怪。
作为业余爱好者,没有专业设备和经费,想做出科幻片里的机器人是不容易的。但不妨
我们开动脑筋,想出一些既简单、有趣又有用的机器人来做。
如果实在不知做什么样的机器人,那么看一些和机器人相关的影视作品,非常有助于开
阔思维。
其实机器人本来就是为方便人们而研制的,我们何不从生活需要出发做一些有用的机器
人呢?
吸尘机器人能够帮助人们清扫地面,从而保持地面清洁,减少家务劳动负担。吸尘机器
人又是一种小型轮式移动机器人,没有复杂的机械结构,结构和功能设计自由度很大,可以
做的很复杂,作为博士科研项目,也可以做的很简单,同样能完成简单的清扫任务。
我们首先要思考这种机器人有什么功能。首先它能在地上跑,由于房屋障碍物复杂,要
求机器人能灵活转向,因此最好选择两个主动轮、一个万向轮的三点式驱动结构。要完成避
碰功能,我们要在机器人四周设置碰撞检测装置,这种传感器可能是碰撞开关、超声波测距
仪、红外测距仪甚至激光测距仪,爱好者根据自身情况随意选择。为完成吸尘功能,需要在
底盘上开个吸尘口,同时在机器人合适部位安放真空泵。
完成了功能构想,我们要思考机器人具体形态,以及内部各个元件的分布。要进行三维
空间结构构思。尽量使机器人体积小巧,同时注重结构坚固、使用方便,对于移动机器人,
要考虑重量平衡,如果机器人重量不平衡可能向前、后栽倒。考虑到机器人需经常原地转向,
外形应做成圆柱形。先在底盘上布置主要部件,比如传感器、电路板、真空泵、驱动装置,
然后在放置次要部件,比如电池,用电池来配平机器人前后重量。
我们可以先在一张纸上画出机器人底盘轮廓,然后将各种元件在纸上摆放,不断调整各
自位置。有条件的爱好者可以考虑通过“计算机辅助设计”来进行结构设计。对于机器人初步
结构设计,我建议使用3DMAX三维动画软件,该软件相对于UGAUTOCAD等专业软件
具有易学易用的特点,简单的三维建模直接用鼠标拖拽就可实现,做初步设计效率非常高。
关于电路板设计:电路板上元件分布非常重要,好的元件分布不仅能带来布线方便,抗
干扰,同时要结合机器人结构进行设计,考虑与其他外部器件连接方便、散热容易,对于要
求高的机器人还要考虑人机交互方便的问题等。可以先将各种元件插在泡沫板上调整布局,
满意后再绘制PCB电路板。
如何获得机器人外壳?或者主体结构构件?现在自己周围转转,看看有没有什么东西能
用的上,找不到的话到大型超市去找,那些塑料盒、脸盆、衣服挂、晾衣架、真空吸盘……
全部可以作为机器人结构件。
电钻是不可少的工具。对于很多塑料构件,除了用锯切割外用电钻切割也是很好的方法。
铣床既是靠旋转“钻头”实现切割工件的。一般小型电钻为12V变压器供电,变压器输出功率
不够,当电钻钻比较硬的东西时容易卡住,如果换用12V蓄电池给电钻供电,蓄电池输出功
率非常大,你会发现电钻立刻变得动力十足。
电热式胶枪是很方便的粘接工具。胶枪总是忘下滴热熔胶,用一个易拉罐底接着这些胶,
积攒多了后把它放在电烙铁散热片上,一会易拉罐底里的胶就会融化,然后用牙签沾着胶摸