螺杆驱动的六足机器人设计

alt

这是一个六足机器人的项目,主要是我去年为了学习Solidworks的做的模拟练习。我先做了手工的腿部结构来验证我的想法,但它还是太复杂了。所以后来我还是选择用SolidWorks来模拟腿部的仿真。其实六足也不算一个新鲜的项目了,网上的六足项目也是多如牛毛,不过千篇一律,似乎缺乏了点创新。

最终该项目还是被放弃,但我还是决定将它张贴出来,也许有人对这样一个螺旋驱动机制的六足机器人有兴趣,也许看了我的这篇文章可以对他的项目做一些小的贡献。

这个项目的灵感来源于前段时间做的雕刻机,雕刻机其实就是把步进电机的旋转运动通过丝杆转换成直线运动,以此控制刀具和工件的移动,之后一直想把这种结构运用到什么地方去,于是乎就产生了这么一个项目。


上面的效果图仅仅是个原型,用于分析结构。最终的效果可能会有差别这个设计完全抛弃了舵机,采用空心杯伸缩杆+减速电机的方案来作为机器人的动力,不过原理还是和舵机相同,电机+减速+角度反馈。

首先,先分析一下舵机方案和螺杆驱动方案的优劣:

舵机方案:

舵机一体化程度高,使用简单,应用也成熟,配合舵机控制器使用非常方便。但是舵机形状比较单一,体积也比较大,速度比较慢,响应频率也低,控制频率50Hz。

螺杆驱动方案:

螺杆减速驱动的方案在电机的选择方面就比较灵活,可以根据不同的情况选择不同型号的电机。响应频率高,最简单的PWM+AD就能控制电机运动,其实相当于将舵机拆开来使用。当然,螺杆方案最大的优点,就是它具有自锁功能,不用像普通模拟舵机那样要持续不断的发送角度信号,消耗的能量更少。

用螺杆驱动,会面临这么几个问题:
1、选择合适的电机,电机要满足转速、转矩、重量、体积、电压、电流等要求;
2、要重新设计电机角度反馈电路和控制电路、控制程序。

关于机械结构:

分析了一整天机械结构,话说用这种结构的机器人非常非常少见。搜遍整个网络只发现立陶宛一个老兄用过,再一看日期,那也是3年前的了,并且之后一直没有更新(估计没成功)。那位立陶宛老兄的地址。很纳闷他为啥3年不更新了?

做一个六足机器人,最重要的就是腿部的设计,腿部设计的重点,就是电机的选择,如电机的力矩、转速、电流等参数,所以我们就先拿一条腿开始分析:


上面两幅图展示了腿中部的运动情况,即:螺杆运动一个总行程L,机器人重心变化H,据此可以求出电机的参数。

条件:
机器人自重500g,负重500g,总共1kg;
电池8.4v航模锂电池;
所用螺杆φ5mm,螺距p=1mm。

假设运动过程中腿角度随螺杆均匀变化,拉力不变,忽略各种摩擦力
根据公式MgH=TN×2π
此公式的含义:物体上升一段距离H所需的能量=电机旋转N圈做的功
M=333g(六足运动中3条腿着地,1kg/3=333g)
H=76-29=47mm
N=电机转过圈数=L/p=20
*注意:计算功的一定要将角速度转换成弧度制,rpm×2π/60=rad/s
T为所求电机转矩
∴T=3.3N×47/1000m/20/6.28=0.00123Nm=12.3gcm
12.3gcm就是这个电机所需要的最大额定转矩
同理可求得机器人无负载的时候所需的额定转矩=6.17gcm
如果希望机器人上升的速度能达到4.7cm/s,那电机的转速要满足 ω=20rps=1200rpm
上面的计算忽略了摩擦力,也假定转动过程中所需拉力恒定,实际上拉力方向和腿转动方向所成的角度是变化的,因此要留1倍的余量
所以根据上面的参数就能很轻松的选择所需电机:
工作电压8.4v,重量10-15g,额定转矩12.3gcm-24.6gcm,额定转速1200rpm。
正好,目前淘宝上卖的很火的微型减速电机n20有诸多减速比,完全符合要求。

经过一番折腾确定了腿部中间的那个电机,同理再分析腿下部的电机:
可以发现H=22mm,L=9.2mm,比值和上述的电机很接近,省略公式,计算得:
额定转矩:12.8-25.7gcm
额定转速:1200rpm
经过这么一番分析后,可以发现那位老外为什么不成功了,因为他用空心杯电机作为动力(MADE IN CHINA),这也是我一开始的想法,为了减轻重量。
直径7mm长度14mm的空心杯参数:电压3.7v,额定电流200ma,额定转速30000rpm,淘宝上大多数的空心杯都没给出转矩,网上搜了半天也很难找到,于是自己粗略算了一下,这种型号的空心杯转矩应该是1.2gcm,是不是小的可怜?

另外,我猜测,烂大街的辉盛9g舵机里的电机和烂大街的n20减速电机所用的电机应该是一样的。

总结上面的一段分析,大家在给自己的机器人(不管什么类型的机器人)选择电机的时候,完全可以先用功和能的观点简单判断一款电机符不符合要求。
最简单的办法,就拿上面的例子来说,某款n20,9v,负载电流60ma,负载力矩22gcm,负载转速890rpm:
机器人所需功率<电机输出功率<电机总功率
机器人所需功率:P=W/t=(mgH+1/2mv2)/1=[0.33×10×47/1000+0.5×0.33×(47/1000)2]/1=0.156W
电机总功率: P=9×0.06=0.54W
直流有刷电机效率一般比较低,就算50%吧
0.54W×50%=0.27W>0.156W
粗略一算,这款电机符合要求!
再算一下它的输出功率:
电机输出功率:P=T×ω=22×890×2π/60×0.0000981=0.2W (一定要带上单位,W对应Nm,gcm要转换成Nm)
0.2W也大于0.15W,实际效率37%。
假如我们用的是空心杯,那它的总功率:
P=3.7v*0.2a=0.74W,假设输出效率50%,则P=0.37w,理论计算出来用空心杯也是可行的,不过要经过减速,而且同等体积的空心杯力矩会比铁心的差。
附上链接:
MTU的一篇关于电机的详细文章
力矩转换表

*注意:上面的分析方法、计算结果可能有错误,欢迎指正!

以上的分析忽略了加速度,最后的结果导致偏小,由于模型比较复杂,所以改为solidworks进行运动分析。

关于硬件:

硬件方面,最主要解决的问题,就是角度反馈和电机驱动。角度反馈计划采用AD读取电位器阻值变化,这也是大多数舵机里的角度反馈元件。

电机驱动再讨论,因为电机电流很小,60ma~200ma,考虑三极管H桥或者ULN2003?再采用mega8或168作为MCU,通过串口或ISP或其他方式接收命令,统一接口兼容控制其他舵机六足的命令。电机转动的精度取决于电位器的质量和AD的精度。电机转动的速度取决于电流大小,以及AD读取速度、程序处理速度。

关于控制程序:

这里控制程序可以分为上位机和下位机来讨论,由于硬件接口和普通舵机控制器相同,所以其他舵机控制上位机应该能很好的修改移植。
先说说下位机程序:
下位机接受的命令看起来可以是这样子:#C1P60C2P90,解释起来就是1号电机转到60°,2号电机转到90°。至于驱动电机的算法,可以采用分段PID,先实现最基本的,再改进,如加上脚底触碰开关,加上陀螺仪和加速度传感器进行姿态反馈。

所以我觉得这个六足机器人主要的设计难点在于控制系统中的腿部的设计。它涉及到的电动机的转矩和速度,丝杠选择和线性反馈电位计算。

下面我再贴一些关于这个机器人的图片。




这里还有一个结构类似的六足机器人的设计。他用的是6V 700〜1000rpm的马达来驱动腿。他把伺服电机拆了下来,用印刷电路板和电位器来驱动电机,并进行反馈控制,从而节约了大量设计电机驱动系统的工作。




更新

我已将SolidWorks源文件上传至我的微小网主页。

Jason Xu wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!