编者注:这个名叫RoboBrrd的鸟形机器人项目来自RobotGrrl,原文发布于Makezine。Makezine对本项目的难度评级为“适中”,制造耗时估计在3-20小时之间。接下我们就来仔细观摩一下这个奇葩的鸟型机器人到底是怎样炼成的吧?
RoboBrrd是一款实验人机交互的机器人模型,普通人就可以用有限的材料搭建起来。其设计灵感来自于鸟类,它有着可以动的嘴和翅膀,通过感知外界的输入它就会做出不同的反应。一系列动作的组合让RoboBrrd可以展示多种行为,而正是这些动作让我们看到了人类与机器人之间很多有趣或者滑稽的交互。通过这些互动,这个“鸟人”也展示出了属于它自己的性格和特点。
通过很多方面将人与机器人联系起来,例如性格特点以及对环境的感知。在机器人研究领域,这些特点的研究统称为社会化机器人。这类研究旨在探索机器人与人类能够如何进行互动,以及如何基于更自然的方法相互沟通。
下面我们通过三个方面来简单介绍一下RoboBrrd:
首先是外观与对机器人的最初印象。RoboBrrd的仿生设计(虽然可能有些逗B的成分掺和进去了)让我们对一个熟悉的物种赋予一定的人格。从而人类就可以更容易地认知其主要特点,并且对于这家伙大概能做什么有一定的预判。
其次机器人能够通过其移动、动作或者其他表现形式的输出向人类传达具有特定含义的信息。RoboBrrd通过它鸟嘴、翅膀、和脚步等多方面的自由度让人类看到其表现出来的行为。例如,LED的眼睛能够表明它当前的状态,并且可以根据它的需求来表达当前的情绪。
最后这个机器人能理解人类向它传达的信息。基础的RoboBrrd有一个动作感应器,一些倾斜传感器,以及两个光敏电阻(LDRs)。这些传感器将能够让它感知周围环境中发生的一些事情,并且做出相应的动作。
下面我们来了解一下,造一个RoboBrrd需要知道的技术方面和机械方面细节:
如何用有限种类的材料设计一个机器人
设计一种让它动嘴的机制(将旋转变换成某种平移)
LM317稳压电路
TLC5940 PWM(Pulse Width Modulation脉宽调制) 变换电路
伺服程序
传感器程序
行为输出程序
造一个萌丑萌丑的RoboBrrd可能有一点儿难度,后面我们要讲的第一步会帮助你决定你RoboBrrd的复杂度,以及需要什么零件。
如果你会科学上网,下面这些视频教程也许会有很大的帮助:
以及一些图片资源:
源代码:
你可以自由定义你的RoboBrrd要有多复杂,以及你希望它都能做些什么。上图是一些示例。
确认一下你已经有了什么部件,以及将会需要什么部件。这也会帮助你决定将要搭建的结构和配置。
如果这是你的第一个机器人,也许简单小巧一些的结构会更容易实现。然后你可以慢慢给RoboBrrd加上更多的零件和功能。
前面板是这个小机器人的主要部分,它的上面将包括鸟的嘴和眼睛。我们可以用四根铅笔,一些雪糕棍或者咖啡搅拌签来搭建基础结构。
把铅笔顶部的橡皮部分切掉,然后做一个正方形边框。我们留着这几个橡皮后面可能会用到。
将雪糕棍粘到边框里,要确保他们尽可能地相互垂直。
鸟嘴可能是RoboBrrd最难的一部分。我们要非常非常耐心地来进行这一步!要确保我们做的鸟嘴能够刚好嵌入到之前做的前面板框架中。而且,鸟嘴的两半部分要在后面边缘处能够相互触碰。
这一步我们依然要用到雪糕棍(略宽)和咖啡棍(略窄),还有锥子之类可以戳孔的工具。
鸟嘴的整体分为上下两个部分。下面的步骤教给大家如何制作上半部分,然后再做一个一模一样的反过来就是下半部分了。
首先做一个基本的三角形(4)。
剪短一根雪糕棒,然后在靠近直边的一段戳一个孔(5),要小心不要把木头戳分叉。如果不小心戳坏了,要重新来过哦。
将戳过孔的小棍粘到三角形一个边的中心(6),然后用咖啡棍将这个立起来的小棍在相邻的两边支起来(7),以及向另外一个角也搭一根(8)。
剪一个咖啡棍,长度等于前面板两个雪糕棍之间距离(9)。将一个小木片(每边一个)粘到打孔的小棍和鸟嘴的对角斜边那根棍之间(10)。
同上一布,制作鸟嘴的另外一半。
将(9)中的小棍穿到(10)所带来的空间中,如图(11)。检查一下两半鸟嘴的大小和形状跟前面板的其他零件都大致吻合。然后将咖啡棍跟雪糕棒粘到一起。
同上,将下半部分鸟嘴也粘上去。
再拿两根雪糕棒,在两段分别打孔(14)。将其跟之前打孔的小棍用线穿在一起(15)。
休息一下吧。刚刚已经完成了RoboBrrd最具挑战的一部分!
首先准备更多的雪糕棒、咖啡棍、线、绳子。
制作两个铅笔方框(16)。
用咖啡棍在方框中编织成网状(17)。这个将会是RoboBrrd头部的底面,所有的联动伺服装置和电子设备都会被安置在这儿。
将前面板和底板连在一起(18)。要确保他们尽可能地相互垂直。
将背板安置在有鸟嘴的正面板的对面(19)。同样,要尽可能地让它们相互垂直。
在顶侧安置两根铅笔完成整个立方(20)。
继续加置一些雪糕棒来固定(21)。
我们的机械结构先告一段落,下面我们来组装一些电子设备。因为小RoboBrrd的内部空间非常有限,所以在组装好所有部件之前,对电子部分进行一下测试是非常有必要的。我们接下来就要把所有将要用到的电子零件都测试一下。
测试一下所有的伺服系统,确保它们都能正确地运转。这里可以使用Arduino伺服代码库里面的“Sweep”示例。在后面的步骤中我们要给它们分别提供电力,所以现在我们先看一下这些零件是不是都能正常运作。
可以使用“Fade”的示例来测试所有的LED灯是否都能点亮。
如果想要使用其他的传感器,也请在组装前就确保他们都能工作。可以使用“AnalogInOutSerial”这个例子来测试。
首先,我们需要两个乒乓球。RoboBrrd的眼睛将会非常神奇,因为他们看上去是白色的,但是眼睛可以通过LED变成任何的颜色!
在乒乓球上打一个孔,能够把LED灯放进去。
把装有LED的乒乓球安置在RoboBrrd的前面板上(23)。要注意,我们要确保之后还能将LED取出来。然后在乒乓球上画出炯炯有神或黯然忧伤或是色迷迷的眼睛吧(24)!
给LED灯接上足够长的线(能够连到RoboBrrd的背部即可),把导线拧成股,并粘到乒乓球里(25)。
这个底座将制成可以动的翅膀,它跟鸟嘴的底座很相似只不过更短一些。左右翅膀做成一模一样的两个底座。这里可以选择做成一个然后再复制另外一个(当然不是复制粘贴啦),或者搭好两个结构之后分别填入其他零件。这里我们依然会用到很多雪糕棍和咖啡棍。
检查一下伺服电动机的大小和边缘,确保装上翅膀后能够自由地移动,然后把伺服叶片连到马达上。
将两个略长于伺服电动机宽度的咖啡棍粘到其两侧(26)。
将这两个小棍连同电动机粘到底座的雪糕棒上(24)。然后把这部分放到RoboBrrd里面试一下,看看大小是否合适,再减去多余的部分。
剪两根与上一步相同长度的雪糕棒。
剪两个雪糕棒,其长度略大于伺服马达宽度+咖啡棍+雪糕棒的这一部分。把他们粘到之前一对的雪糕棒上作为底座(28)。
测量一下你需要这两个底座有多远的距离。它们应该比伺服电动机的长度略长。剪两个小棍并且把底座粘到一起(29)。
粘上两个雪糕棒,将两个底座的顶端连接起来(30)。
试着转动一下伺服马达,并且轻轻给底座施压来测试底座是否足够牢固和稳定。如果你想让它更牢固,请尽情地发挥创造力吧。
好了,现在我们已经有两个翅膀的马达了,下面需要把它们安置到RoboBrrd的内部。这部分应该稍稍靠向前面板,但是不要靠得太近以至于移动的时候会有阻碍或者磕碰。调整好了位置之后,粘到上面。
嘴部是整个RoboBrrd最具挑战性的一部分,下面的步骤需要你有很大的耐心,所以,如果你已经觉得累了就先休息一下吧。制作嘴部联动的步骤与翅膀非常相似,而且仍然要用到雪糕棒和咖啡棍。
检查一下伺服电动机的大小和边缘位置,大多数的运动应该位于靠近鸟嘴的位置。
与之前的步骤一样,来做一模一样的马达支架。
测量并决定这个马达部分要放到RoboBrrd内部的位置,再强调一遍,不要离鸟嘴太远。在RoboBrrd的底座支架上用铅笔做记号。
取一根雪糕棒,在圆头的一端戳个孔。比照一下电动机叶片的长度,确保这个小棍的长度足够完全使鸟嘴完全开合(32)。(opps,原作者的编号中漏过了31号^_^)这跟小棍将作为电动机叶片的延展部分,暂且称之为延伸棒。
如果嘴部的骨架够不到这个延伸棒,可能需要再粘一根雪糕棒上去来延长一下嘴部的结构。然后不要忘记在尾部打孔。
当确定了延伸棒的长度之后,减去多余的部分。
将嘴部的结构同延伸棒用线穿起来。
将延伸棒与马达叶片粘起来。
测试一下,确保嘴部在动的时候没有不必要阻力,而且能够完全开合(33)。如果感觉到一些阻碍,请确认雪糕棒都足够长,并且检查一下延伸棒是不是足够长。
反复地试验和调整,知道嘴部能够自由地活动。也许这个部分需要一定的耐心,但是最后当嘴部自由开合的时候你会发现所有的工作都是值得的。
按照之前做好的标记把马达部分粘进去。这部非常关键,因为如果有不合适的地方,在后面的过程中来修理将会非常麻烦。所以请再三检查确保每个部件都能按照需要自由活动。
恭喜你!现在嘴部的联动已经完成了!
电子零件的准备取决于你想要在你专属的RoboBrrd中使用什么零件来实现什么样的功能。下面这些可以作为参考,然后在接下来的制作中确保已经拥有全部你需要的零件。
Arduino和Proto Screw Shield:检查你的Arduino板子是否能正常工作。如果你有Proto Screw Shield,那就太好了,我们强烈推荐这个零件。这个教程可以告诉你如何将它组装起来。
稳压电路:你需要一个LM317,240欧姆电阻,5000欧姆的变阻器,一个电池来从外部给电动机供电,一个10微法的电容,导线,散热器,以及螺丝和螺母。这些必要的工具适用于使用一个以上的伺服马达,因为Arduino能提供的电流不足够给这些马达。
LED PWM眼睛:如果不适用Arduino来控制LED眼睛的颜色的话,则需要一个PWM变换芯片来实现。这里需要一个TLC5940,一个DIP插座,2000欧和10000欧的电阻,以及导线。关于TLC5940,Arduino的官方教程上有详细的说明。
伺服马达插头:插头的数目是伺服马达的三倍(分别给信号,电压和零线)。
导线:你需要准备充足的导线,最好是实芯、21号、不同颜色(红/黑/棕/橙/紫等等)
由于Arduino的输出电流有限,我们不能用它直接给所有电动机供电。LM317稳压器能够让外接电池来给他们供电。同理,带有5V输出电压的7805芯片也可以实现该功能,如果你对电子电路系统动手能力很强的话,有很多方法可以实现电力供应。
开始之前,查看一下伺服电动机所需电压。在下面的步骤中我们将使用5V作为操作电压。
我们需要插座来使用LM317,这样如果它坏掉了可以很容易地进行更换。
如果你有一些其他的部件,在制作电路中也许会很有用哦。
LM317用需要一个输入电压,然后在它内部发生一些神奇的事情,最后我们就可以得到一个调整后的电压了。
点击查看LM317的规格书, 我们在Vout后面链接一个10微法的电容从而使输出电压更加平稳。
如图(34)是等效电路图。
焊接这个电路的时候需要注意下面的几点:
时刻注意Adj和Vin的位置;
可调节电阻有三个针脚,用两个距离最近的针脚来得到所需的电阻值;
电容的输出电压在正极一端,所以要在正极接线从而得到平稳的电压。同时,负极需要接地。
当电路连接完毕后,我们要进行测试。
将电池接通到电路中,如果电路冒烟了或者LM317发烫则要立刻断开电源。电路中一定有链接错误的地方,按照之前的步骤一步一步检查,并且对照电路图找到连接错误的地方。
将万用表调至电压模式,两段分别接在稳压后的输出和零线上。当我们调节电阻的时候就可以看到电压的变化。
将电压调节至5V,或者调到尽可能接近5V(强迫症患者们请保重……)。需要提醒的是,对于伺服电动机来说,略微低于标准电压要好过高电压。
剪三个针脚作为伺服电动机的插头,针脚越长,焊接的时候就更容易一些。
将左侧的插头焊接在Arduino相应的针脚(孔)上。最好不要占用interrupt或者UART针脚以免以后需要用到它们。
将右侧的插头全部焊到一起,他们将一起连到零线上。再把Proto Screw Shield上的零线连进来。
测试一下电压确保电路中没有短路或者反向。
如果不用Arduino MEGA来控制LED眼睛的颜色的话,我们考虑使用TLC5940 PWM 变换器。这个集成电路能够提供每个通道4096级别的PWM调制,也适用于多通道调节。这里需要提醒一下,本文原作者在制作过程中发现伺服电动机与TLC5940库同时使用时会发生错误。当你决定如何控制LED时需要考虑一下这点。下面的步骤只是门介绍TLC5940,如果使用其他方法可以掠过以下步骤。
TLC5940电路和教程可以从Arduino官网教程中找到。
最好使用一个DIP插座来安置TLC5940的IC以防其出现任何故障,这样的话可以很方便地进行更换。
注意一下,使用这个IC的时候LED不要连接零线,而是链接5V线。这与LED通常情况下的工作情形相反。
你可以将LED直接焊接到主板上,也可以只用插头。LED烧毁或者损坏的概率非常低,这里可以不用担心以后的更换。
连接Arduino以测试TLC5940,测试代码点这里。
运行代码,LED应该可以改变颜色了。如果不能,则返回之前的步骤检查电路中是否有链接错误。
添加什么种类的传感器完全取决你所设想的RoboBrrd的配置。连接过程中要确保导线足够长将传感器没有任何拉扯地连接到Proto Screw Shield上,但同时还要避免导线过长而绞到马达上。
如果要添加一个光敏电阻(LDR),可能要用到上拉电阻或者下拉电阻。LDR都有所不同,所以首先要在案板上测试一下。
如果我们要添加倾斜球开关,在不用Arduino内部电阻的情况下这里需要添加一个上拉电阻。更多关于倾斜传感器的信息可以在这里找到。
被动式红外传感器(PRI)通常需要变阻器来调节。还有很多种方法可以改造PRI从而有不同的表现功能,Ladyada的PIR教程对其有很详细的说明。
运行测试代码并将传感器的输出值显示出来,从而来测试传感器是否正常工作。在Arduino的官网上能够很容易地找到相关测试代码。
友情提示:距离完成这个机器人只剩下最后几步了,当它真正动起来的时候不要太激动哦。当然,这种情况经常发生,不过也许仍然会有一些小故障等着你去发现。所以,不要过于激动或是灰心,保持耐心,当所有bug都被解决之后你的机器人就会动起来了。加油。
首先要测量的是,当外部电池接通的时候,伺服电动机会跳动一下。先接通一个电动机,其活动方向取决于你如何焊接其针脚。小心不要弄混了信号线和零线。如果电动机接通时跳动了一下,证明它可以收到电压,反之证明没有电压与之连接,可能是连线错了或者其他哪个零件出现了问题。可以拔掉所有的连线重新连接或者一点一点找到问题。
在Arduino>Examples>Servo菜单中找到Sweep代码例子。我们需要改变指示接口的变量变成当前电动机的接口。代码修改好之后将其上传到Arduino上,如果没有跳动,则检查一下右侧的接口以及是否牢固连接上了。如果仍然不能工作,说明有可能LM317电路有错误或者故障。这时候依然需要耐心地找到并且解决问题。
一个一个地将伺服电动机加进来直到所有的电动机都能工作。有的时候如果马达变得不像开始时候那么有力度了,有可能是LM317的输出电压有所改变。用万用变测量一下此时的电压,然后调整变阻器使电压重新变为5V。
当测试完伺服电动机之后,断开电池的连接。我们一会儿再决定这些电动机到底要如何工作,不过现在它们已经一切准备就绪了。
用PWM的测试代码或者TLC5940的代码来测试LED。如果不能工作,先检查一下是否正确地连接了所有针脚。如果TLC5940仍然不工作,回到电路中查找问题的所在。
我们之前已经测试过了所有的传感器,不过现在可以再检查一遍确保一切顺利。在终端中用Arduino示例代码来显示出传感器的测量值。如果传感器不工作,检查所有的连接是否正确。
如果一切顺利的话,下面我们进行电动机的边界测试。这里仍然选择用Arduino Servo库中的Sweep示例代码。我们要分别设定上限和下限,以免过度的活动损坏了结构。
最简单的方法是观察电动机在0/90/180度的位置。这样可以知道当翅膀向上或者向下时候电动机的角度。
在每个边界减少30度来看看是否电动机在任何位置有减少一些压力。当电动机能够在适当的范伟内自由活动时(可以通过声音和电动机的散热来判断),记下此时的边界。后面我们设计RoboBrrd动作的时候这些数据会非常重要。对每个伺服电动机重复这个步骤。
现在,我们有了活动的范围、LED、传感器,恭喜!
这时候我们再次拿起之前做好的RoboBrrd部件,现在要把它们组装起来并加上装饰。这里我们可以用到毛毡、泡沫、刷子条、以及几片羽毛。尽情地释放你的想象力吧!你想象中属于自己的RoboBrrd是什么样的,就把它做成那个样子!
装饰鸟嘴只需要三块毛毡就可以了。两片覆盖在上下两个三角上,第三片加载中间把两个部分连接在一起。再加个舌头也是不错的主意(35)。
如果你的RoboBrrd有底座和支架,要在装饰的过程中留意它各个部分的活动,不要让装饰物影响了它的机械活动。
用雪糕棒搭的三角形翅膀(36)可以用羽毛装饰,这里你可以用胶水直接把雪糕棒粘到电动机叶片上。
用尼龙搭扣粘好顶部和背部面板可以在不破坏外部包装的情况下方便地维修内部零件。
在后面板上,给任何现有或者可能的线留出孔来,比如,Arduino需要一个大一些的孔来连接USB线。
其他的就看你的自由发挥和创造了。
在赋予这个“鸟人”更多复杂表情和动作之前,首先我们要学会如何让它有一些基本的动作。本文原作者的Github中有很多示例代码可以参考。下面给出一些动作例子:
张嘴:将嘴部从初始位置移动到全部张开的位置。如果想要加入一些挑战电话,可以让它从任何位置开始张开。
闭嘴:将嘴部从张开的状态变成咬合状态。
向左/右转:如果RoboBrrd有底座和相应的伺服马达的话,它可以任意向左右旋转。
向上/下倾斜:RoboBrrd可以慢慢地向上或者向下倾斜。倾斜动作可能有一定难度,因为在旋转点上会有很大的重量,所以如果速度过快的话很容易失控。
其它任何你想要的动作,都试着让RoboBrrd做一下吧。
我们可以在RoboBrrd的程序里发挥任何创造力来展示我们造了一个炫酷的机器人。在这里我们鼓励所有制作者设计属于自己的富有创造性的RoboBrrd。下面是一些主意希望可以对大家有所启发:
动作感应与回应:当PIR传感器被触发的时候让RoboBrrd扇动它的翅膀或者发出一些声音。
光线感应:当LDR传感器被触发的时候让RoboBrrd动起来。也许当两个LDR都探测到黑暗的时候让RoboBrrd躲起来!
叽叽喳喳:让RoboBrrd发出各种声音。或许可以让它叽叽喳喳唱出一些旋律来。
被动表现:在RoboBrrd自己发呆的时候,让它时不时地动动翅膀和嘴。这样会让路过的人知道它是“活”的,让后来调戏它。
社交网络:给RoboBrrd加一个Xbee然后让它能与你的电脑、互联网、甚至其他RoboBrrd互动!这是更高级的一个阶段但会是非常有趣。关于这些可以在网站RobotGrrl.com上找到相关的代码。
自定义动作:创造一些新奇有趣的表现吧。Just have fun!
向小伙伴儿们展示你的机器人吧!或者与其他制作者交流一下心得,大家的RoboBrrd都有什么功能?都用了什么元件?大家都有什么头疼的或者好玩儿的bug?有什么挑战?从中学到了什么?每个人都想知道这些。
好了,说了这么多,无论你是否学会了制作自己的RoboBrrd,无论你的小“鸟人”有多萌多丑多智能多蠢多可爱,我们希望你很享受动手制作和发明创造的过程!
更多有趣的项目,请关注硬创邦微信(leiphone_bang),另外,全球创客马拉松华南农大站的报名正在火热进行中,在微信回复“华农”即可参与。