酷: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打印机制造机身

除了上述单片机,比较常用还有AVR单片机、MSP430、飞思卡尔单片机,这些单片机都是8位单片机,寄存器都是8位。你到公司就职,公司的项目用到什么单片机,你就得学什么单片机。如果你有不错的单片机基础,接触一款新的单片机,稍微看看单片机手册,看下对应的例程,两三天能上手。

你可以在这里找到用于3D打印的技术文档,在打印过程中我使用了MakerBot Replicator 2X 3D打印机。

第三步:安装电机

将电机装进刚刚打印出的机身中,虽然它机身挺贴合,但我还是加了点热熔胶。

第四步:连接各电子元器件

将APM控制系统与电机端罩、逻辑电平转换器和Arduino Mini 按电路图原大图)依次连接起来。

将GPS模块和无线电遥测设备连接起来,以便机器人进行自主操作。

手动操控机器人与你的R/C接收机相连。至于PPM接收机,用APM自带的跳线连接起来就好。

用热熔胶将元器件粘在一块塑料板上,这样更容易塞进机器人。另外,自动控制系统可别装错了方向。

最后,将元器件与电机连起来,并将电路板放进基座中。

第五步:总装

将机身中部装在基座上,然后将机身上部按紧,电池就放在机身上部,然后将电源装在机器人侧面。

给机器人装轮子。

这个玻璃罩其实就是从亚马逊上买的的圣诞树吊饰,各种LED元器件发的光会点亮整个机舱。

最后,给机器人侧面装上无线电遥测设备,通过它你可以给机器人制定任务或直接对其进行操纵。

第六步:给机器人写入程序

下载ArduRoller的源代码:https://github.com/jason4short/ardupilot/tree/ArduRoller,并使用名为ArduPilot-Arduino:http://ardupilot.com/downloads/ 的工具将其灌入APM 2.5。

下载轮式编码器的源代码:https://github.com/jason4short/WheelEncoder,然后用Arduino IDE将其灌入Pro Mini。

想要让机器人自主执行任务,你需要下载PC版的Mission Planner:http://ardupilot.com/downloads 或者下载安卓版的DroidPlanner 2:https://play.google.com/store/apps/details?id=org.droidplanner


第七步:大功告成

装好机器人之后就可以尽情玩耍了,你可以用R/C遥控器来操控它,或者直接让它靠GPS自主执行任务。在Mission Planner软件上,你只需几个点击动作就可以使用谷歌地图并追踪机器人的位置、速度和行进方向等,此外你还可以运行自己的Pyrhon脚本,下载并分析任务日志等。

我也用了安卓端的Droid Planner,体验不错!

给机器人装个视频发射器和GoPro,这样你就能看到机器人的第一视角了,挺有趣的。另外,你还可以给它搭载声纳系统,这样它就能成为躲避障碍的行家里手了。


> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

(1)在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生噪声,在放置的时候应把它们靠近些。对于那些易产生噪声的器件、小电流电路、大电流电路开关电路等,应尽量使其远离单片机的逻辑控制电路和存储电路(ROM、RAM),如果可能的话,可以将这些电路另外制成电路板,这样有利于抗干扰,提高电路工作的可靠性。

生成海报
点赞 0

钟, 广林

我还没有学会写个人说明!

相关推荐