两个轮子也不倒,这是一个DIY的自平衡机器人
编者注:本项目编译自 Makezine ,来自3D Robotics设计主管Jason Short。Makezine将本项目的难度定位为:Very Difficult(非常难),够自信你也来挑战一下吧!
想要提高自己的机器人制作水平吗?那你可来对地方了。今天我们的主角ArduRoller就是一台可以自动平衡的倒立摆机器人,此外它还拥有室内外自主导航的能力。这台非传统车辆可以快速自主通过一系列障碍、转角、崎岖路面,水桶和斜坡等对它来说都小菜一碟。此外,它也是我在一年一度的SparkFun无人驾驶车辆竞赛中的参赛作品。
首先,我选择了来自3D Robotics的APM 2.5多模式自动控制系统,因为它集成了几乎所有机器人所需的传感器。此外,它构造简单,开源,而且相关软件免费,ArduPilot系统也较为成熟。对于刚上手智能机器人的人来说,这绝对是个好平台。
这款自动平衡机器人采用惯性测量装置(IMU)作为核心,该装置包括三轴速率陀螺,加速度计和磁力计,共计九个传感器,总采样速率可以达到千次∕秒,此外它还采用了方向余弦矩阵算法(DCM),其搭载的数学滤波器则可更好地利用每个传感器的性能。该机器人还搭载了更高级别的代码,这样就可快速计算出机器人的实时状态(角度和转速等),以更好的保持平衡。先来看个视频吧:
怎样能使机器人保持平衡?
倒立摆平衡机器人的内在特点决定了它其实是不稳定的,不过高重心的优势却给它创造了一个很大的惯性矩,从而放缓了它倾斜的速度。在操作中我们就可以利用这一特性,不断移动轮子来抵消这部分倾斜所产生的力,以保持机器人的平衡。
机器人内置软件中的一个简单的PID回路负责控制它的平衡:
-
比例项会探测到机器人倾斜的角度误差,随后便会换算出来回传给电机,电机就可以控制轮子来抵消这部分力,从而保持平衡。
-
积分项和上面的原理类似,不过它搜集的是所有角度误差的总和,从而解决重心问题。
-
相比前两项,微分项更加关键,少了它我们就无法控制机器人的加减速。
让它动起来
随后,这个简单的机器人就可以开始动起来了。不过平衡没能保持多久,它就因为不断加速而摔倒了。如果在过程中机器人试图调整姿态,那么它就无法继续前行了。
所以我们只好采用垂直滚动的方法来保持前进。首先,要让轮子的旋转保持一个合理的速度,这样才能产生足够抵消机器人倾斜的力。然后,在机器人角度快速变化时再提供一个补偿力,以保持它的稳定。这一算法来自于对人类的观察研究,因为人在受外力推挤时会努力保持平衡。举例来说,足球运动员在碰撞时就会收腿并倾斜身体来保持平衡。
以上两点是机器人平衡算法的关键,只有这样机器人才能走的更顺,走的更远。
自主导航
想要实现自主导航,我们要精确计算出机器人所在方位和其目的地。GPS很有用,但其精度只有几米,而机器人需要的是精确到厘米的定位准确度。
轮式编码器则可将精度提高到毫米级,同时也对GPS起到了很好的辅助。来自Pololu公司的电机则搭载了可选的霍尔效应传感器,让它可以这样工作:小型磁铁旋转着掠过传感器,这样就可以计算出车轮的速度。机器人搭载的 Arduino Pro Mini也很强大,它可以读取来自编码器的每秒数千次的脉冲,然后将这些数据通过I2C接口传送给自动驾驶系统。只要知道了轮子的半径,机器人就可计算出行走的速度和里程。此外,机器人知道自己的前进方向,这样它就可以在二维空间里精确的给自己定位。GPS在整个过程中反而扮演了辅助的角色,它只要保证机器人能精确的执行这一系列动作就行。
如果在行驶中被卡住,机器人也能感觉到,它会倒转轮子行驶并稍微右转再次进行尝试。
机器人的其它控制软件,包括路径导航系统,基本都是ArduCopter上的改进版,这样我们就站在了前人的肩膀上,省下了大量的精力和时间。
别墨迹了,快自己装一个吧,3-5个小时就能搞定,总花费大约在400到500美元。下面我会列出详细的装配步骤。
第一步:准备好所有零件
Pololu有刷直流电机已经装上了编码器,此外,一个34:1的齿轮减速装置有助于提高电机的扭矩。
加装了编码器的轮胎可以完美适配4毫米的电机轴,粗犷的轮胎还可以提升机器人的越野能力,并在行进中吸收多余震动。
第二步:用 3d打印机 制造机身
你可以在 这里 找到用于3D打印的技术文档,在打印过程中我使用了MakerBot Replicator 2X 3D打印机。
第三步:安装电机
将电机装进刚刚打印出的机身中,虽然它机身挺贴合,但我还是加了点热熔胶。
第四步:连接各电子元器件
将APM控制系统与电机端罩、逻辑电平转换器和Arduino Mini 按电路图( 原大图 )依次连接起来。
将GPS模块和无线电遥测设备连接起来,以便机器人进行自主操作。
手动操控机器人与你的R/C接收机相连。至于PPM接收机,用APM自带的跳线连接起来就好。
用热熔胶将元器件粘在一块塑料板上,这样更容易塞进机器人。另外,自动控制系统可别装错了方向。
最后,将元器件与电机连起来,并将电路板放进基座中。
第五步:总装
将机身中部装在基座上,然后将机身上部按紧,电池就放在机身上部,然后将电源装在机器人侧面。
给机器人装轮子。
这个玻璃罩其实就是从亚马逊上买的的圣诞树吊饰,各种LED元器件发的光会点亮整个机舱。
最后,给机器人侧面装上无线电遥测设备,通过它你可以给机器人制定任务或直接对其进行操纵。
第六步:给机器人写入程序
下载
ArduRoller的源代码
,并使用名为
ArduPilot-Arduino
的工具将其灌入APM 2.5。
下载 轮式编码器的源代码 ,然后用Arduino IDE将其灌入Pro Mini。
想要让机器人自主执行任务,你需要下载PC版的 Mission Planner ,或者下载安卓版的 DroidPlanner 2 。
第七步:大功告成
装好机器人之后就可以尽情玩耍了,你可以用R/C遥控器来操控它,或者直接让它靠GPS自主执行任务。在Mission Planner软件上,你只需几个点击动作就可以使用 谷歌地图 并追踪机器人的位置、速度和行进方向等,此外你还可以运行自己的Pyrhon脚本,下载并分析任务日志等。
我也用了安卓端的Droid Planner,体验不错!
给机器人装个视频发射器和GoPro,这样你就能看到机器人的第一视角了,挺有趣的。另外,你还可以给它搭载声纳系统,这样它就能成为躲避障碍的行家里手了。
如果这个项目根本拦不住你,那就赶紧报名参加即将在广州举办的全球创客马拉松华南农大站的比赛吧!关注“硬创邦”(微信号:leiphone_bang),回复“华农”即可参与报名!