DIYer: | Kris Magri |
---|---|
制作时间: | 2-3周 |
制作难度: | ★★★★☆ |
GEEK指数: | ★★★★★ |
看最终效果视频
Makey是我编程实现的一个自主机器人(自主者,非遥控也),能够识别并规避障碍。她拥有全封闭的底盘并使用差速转向(原文为“tank steering”,坦克的驾驶方式),这种转向方式使用两台分开控制的电动机分别驱动两个主动轮(一机一轮)
控制信号来自其自身携带的Arduino微型控制器(在国内用单片机如PIC、AVR,或者Arm处理器都可以很好地替代),另外有一个舵机用于Makey头部的转动。Makey的头部装有一个超声波探头,她会持续的左右摇头,以得到不同方向上的距离信息,并进行存储和处理
通过对Arduino的编程,Makey可是实现诸如寻路的功能,仅需要少量硬件上的修改,Makey即可参加机器人界热门的Mini-Sumo(迷你相扑)比赛.
1 工具和材料
● (使用的工具与零部件列表这里没翻,毕竟相当一部分东西买原版都不太现实也没有必要–国内的家伙事儿差不多的也能土法上马,有兴趣的童鞋请参考原文)
● 想得到关于这个项目的图示、图纸、代码,请移步 资料下载
2 制作机身
● 机身由两片铝合金薄板制成,涉及的加工方法有切割、钻孔和折弯。你可以一次一片的加工,或者两片一起做以减少占用加工设备的机时。成品见2.5
● 猛击 资料下载 下载图纸并全尺寸打印。剪下底板(base)切割图,用双面胶将切割图均匀平整的贴在铝合金薄板上
● 注意:切割金属时务必佩戴防护眼镜
2.1 切割
● 用带锯机把铝合金片切成图纸的形状,切割的边缘一定要在线外
● 提示:切割内角时,先切出一个大概的弧形曲线,然后从两个方向直线进刀以得到直角
2.2 打孔
● 用冲子和小锤子在图上有十字线的17处冲出定位孔,为下一步的钻孔做准备。另外要在图上长方形的孔的四个角上冲透
● 按照图上标十字线处的尺寸钻孔,要首先取下贴上去的图纸(不过别扔了),用钻头对准前面留下的冲痕开钻可以使钻孔更精确
● 把金属牢固的夹在废木头板上或者随便什么垫子上,这样可以得到更平滑的孔而不会导致薄金属板在钻孔处扭曲变形
● 为了掏成方形孔而钻圆形孔时,你可能需要调整钻孔的直径以使圆孔边缘与长方形的边相切
2.3 挖槽
冲剪是长成这样滴:
2.1-2.3都是跟合金板过不去的活儿,原作者的办法基本是土法上马,与美帝的高科技风格严重不符。柚子在大学折腾机器人那会儿去交大观摩,他们有加工中心,只要把CAD图画出来发过去,那边用等离子切割机就给“打印”出来了,钻啊、掏异形啊这种活儿根本不存在。更神奇的是切完的边不用磨,基本不扎手。另外我们用土法掏方形孔的时候是先钻大孔,把带锯拆开一头套进去然后慢慢锯,得到的孔要多丑有多丑,然后还得上铁砧拿小锤砸平
2.4 弯板
● 重复2.1-2.4步骤,加工顶板(top),然后你就搞定了每个机器人都会喜欢的底盘
3 运动系统
3.1 安装电机
● 用2英寸(外径,合50.8mm)的空心钻头(见过装空调的师傅在墙上钻大洞用的那种钻吧,很类似)在废木头板上钻出轮子(钻透木板之后木板上有个圆洞,钻头中间的洞里会剩下个圆片,这个圆片就是轮子),我用了18号板(貌似是一种规格),最终得到的轮子有3/4英寸(19.05mm)厚,直径1.8英寸(45.72mm)。钻轮子的时候要牢固的固定木板,并且缓慢进刀,防止卡住钻头
● 给2个木头轮子分别对心定位一个轮心(图中白色塑料的小轮子),并用小螺丝标记两个孔的位置,在此位置上用1英寸(原文如此,合25.4mm,不过疑为有误,从图上看孔绝对没那么大)的钻头钻透
● 给木头轮子喷漆,我喜欢红色光面防锈漆,这种东西非常薄,颜色很亮,覆盖性好并且容易清洁。注意,不要在安装孔里喷太多
4 电控系统
4.1 安装电源
焊接原型板绝对不是个轻松的活儿,没基础的童鞋搞不定也不用纠结。面包板(breadboard)是这么个东西,其意义在于省了烧电烙铁的麻烦,不过问题是有时候元件捅进去会接触不良…
5 给WALL·E安上一双明亮的眼睛
5.1 WALL·E的脖子
● 咱这个项目用的是HS-55型舵机及与之配套的较短的一字舵角,用5”钻头对舵角最靠外的两个孔进行扩孔
Du-Bro Mini E/Z 连接头, #DUB845
微副翼系统 Du-Bro Micro Aileron System, #DUB850
6 连接并测试驱动电机
6.1 电机预处理
在电机上并联了一个电容,这样做有两个好处。
其一,在稳定的直流电路里,电容是开路,不会影响电机工作,但是给电机通电的那一瞬间,电容因为要充电,可以分担一部分电流,所以电容作为一个保护器件可以保护电机。
其二也是更重要的,这种直流电机的接线头是一个铜合金片,从电机的塑料外壳里伸出来(通常被和塑料铸在一起),鬼知道奸商们用了什么材料,反正这个东西非常脆,尖嘴钳上去经常能掰断,然后这个电机就没啥抢救的价值鸟,另外这个铜片不怎么粘焊锡,焊接不易。但是电容的引脚一般都是类似铝、锡一样的柔韧金属,想怎么扳都能成形,焊起来也容易得多,所以作者把电气连接的活儿都转到这个引脚上来做。
【连电机的小经验】铜接线片作连接之前最好用细砂纸小心的蹭几下,去掉氧化物。电容线脚穿过去之后轻轻拉紧,在穿孔附近用尖嘴钳用力捏一下,使线脚与铜片充分接触。另外电线最好挑独轴的,也就是绝缘皮里面只有一根金属的,那种绝缘皮里有一束极细铜丝的线焊起来会有想死的冲动
6.2 电机测试
7 连接并测试舵机和传感器
7.1 连接舵机
● 将电机和Arduino再装回机器人里面,找两个3针的单排直角插针(通常是将一个20针的单排插针折断得到)插在面包板上,把舵机线接在上面,具体接线规则为:黑线-GND(地线,电池负极),红线-+5V(电池正极),黄线-Arduino跳线D10
● 再来一个3针右转接头,这个是接超声波探头的,接线规则为黑线-GND(地线,电池负极),红线-+5V(电池正极),黄线-Arduino跳线D9
7.2 测试舵机和超声波探头
● 运行舵机对中程序03_Test_Servo_Center,松开舵机摇臂的螺丝并微调,舵机臂与超声传感器尽量指向正前,因为舵机轴齿轮的问题,这一步可能无法完全对中,没关系,我们稍后再调整
● 运行程序04_Test_Servo_Sweep,这个程序可以让超声波探头慢慢的摇头
● 再来测试超声波探头,运行05_Test_Sensor_Distance,点击Arduino软件的数据流监视器图标,你应该能看到不断跳出来的测距读数,而且如果你在传感器之前挥舞你的手,测距读数应该有变化。如果你得到的读数始终是0或者255厘米或者别的什么错误的读数,检查你的接线是否有误,并且千万确定你的传感器没接反 :P
7.3 安装开关
● 终于可以接电源开关鸟!把Arduino最后一次拆出来,为了装开关,需要把还没用到的电池引线的红线焊在开关的一端并且把另一跟红线焊在开关的另一端。同样别忘了把电池的黑色引线和另一个根黑线焊在一起
● 把线从机器人侧面的方形孔穿好,开关需要打在“1”的档位上,把开关塞进方孔里固定好,这个调整可能会用到钳子
● 把从开关出来的红色线脚接到原型板的RAW线脚上(这个线脚还连着Arduino的Vin线脚),把从电池出来的黑色线接到原型板的GND线脚上,如果你用的是Diecimila版本的话,把它的电源跳线调回到EXT档上
8 系统测试
● 重新运行其他的测试程序,确认接线正常,测试完成后把舵机和传感器的线塞进外壳里,扣上顶盖,拧上4个螺丝固定,收工!
9 给你的WALL·E注入灵魂
● 有时候你的硬件做好了你就没啥事可干了,不过你的程序是写不完滴。这也是你展示创造力的好时机
● 在代码中你需要使用digitalWrite和analogWrite这俩函数来控制驱动电机,通过传递值给电机驱动器的各3个线脚。其中一个可以接收介于0到255之间的值,用于控制传给电机的电流大小,这个是用来控制速度的。另外2个线脚则使用布尔型变量,用于决定每个电机两端的电位高低,这个可以决定电机的方向(当然电机两端只能一端是高电位)
● 你可以编写类似void Forward()这样的函数实现简单的动作,比如后退(两个电机同时反转),Spin_Left(原地左转,右轮正转左轮反转),Arc_Left(画弧左转,右轮正转左轮不动)之类的。Arduino的编程环境使你的代码实验和加载都很方便
● 另外一个好玩的事情是规避障碍,只要运行这样一个循环:往前走,读取测距信息,如果障碍物太近则采取躲避动作比如后退并转弯,返回循环体头部
10 关于Mini-Sumo(迷你相扑)比赛
● 在 Mini-Sumo 比赛中,两个自主机器人会被放置在一个用白色漆成的圆形场地中
● 只要换上窄一些的轮子,比如GM家卖的 这种 ,Makey就可以满足大赛要求的尺寸和重量上限:底面10厘米见方、500克。你极有可能需要另外的朝下的传感器用来观察那个白色的环(场地边界),不过Arduino有足够的能力处理其他多出来的信号
11 DIYer签到处
虽然这个项目很困难,不过也不是完全不能做。如果哪位蛋疼的同学把它做出来了…应该会很愿意在这里秀出来让大家围观吧…
制作视频: