大数据文摘出品
来历:declanoller
编译:徐玲、李世林、陈若朦
足式机器人是现在机器人规划的热门,相较于轮式和履带式机器人,足式规划的优势在于其极强的地势经过才干。
你必定见过仿照人类的两足机器人、犬型和马型的四足机器人、近来爆红的蜘蛛型六足机器人,那你有想过再多来几条腿吗?
操控行走一直是足式机器人的一大规划难点,腿越多则移动越困难。可是,一位名叫Adimin的外国小哥用python做了一只可匍匐可曲折的蜈蚣型机器人。
问:为何需求做规划成蜈蚣型呢?
小哥答:蜈蚣在体型上具有适当的长度,而经过向上曲折身体还可以具有必定的高度。可是重点是——历来没人做过!蜈蚣机器人够酷、够怪、够风趣!
让“蜈蚣”活动起来:双伺服旋转的腿
为完结“蜈蚣”的移动,一同考虑到电力需求,Adimin规划了腿在水平缓笔直方向上的旋转功用,别离命名为hip servo 和ankle servo。
所以,腿就能在两个方向上活动起来!
此处的全部伺服均由PCA9685 PWM分支板操控——这是一个I2C器材,答应一同操控多达16个伺服器,既廉价又有用。
考虑腿的数量和“蜈蚣”身体的衔接方法,Adimin小哥将主体渠道部分规划得较大,给腿的增加留出更多空间;一同在前后两头采纳铰链规划(选用金属齿轮MG 996R),不仅能完结身体长度的延伸,还能完结向上曲折的动作。
“蜈蚣”曲折起来!
用Python制作多足机器人
“蜈蚣”运动的操控代码是一个分层的类结构。
最基本的单元是Servo部分,运用这部分功用可以直接操控伺服器。
代码中更高档的部分是Leg,其间包含了两个Servo目标,别离用来操控之前说到的 “hip” 和 “ankle” 伺服系统,依据其本身leg_index(2*leg_index和2*leg_index + 1)为它们分配正确的板索引值。
LegPair部分与之Leg相似,其间创建了两个Leg目标别离操控左右。
1. b = DriverBoard(args.addr, 16)
2.
3. if args.N_pairs > 4:
4. b_front = DriverBoard(40, 8)
5.
6. pairs = []
7. for i in range(args.N_pairs):
8. if i
9. lp = LegPair(b, i)
10. else:
11. lp = LegPair(b_front, i-4)
12.
13. pairs.append(lp)
14.
15. start = time()
16. while True:
17. for p in pairs:
18. p.increment_ankles()
让咱们来看看这段代码的功用——“蜈蚣”弹跳起来了!
其实,让“蜈蚣”完结行走的部分是increment _ankles()函数。为了解说这一点,让咱们回到Servo class。
伺服系统的首要作业是循环移动。为了操控伺服设备的方位,需求向它发送一个特定占空比的脉宽调制(PWM)信号。接下来,咱们要找到对应于该点的脉宽调制,即中点脉宽调制(mid_pwm),使它环绕一个点振动。然后,界说一个脉宽调制起伏(pwm_amplitude),该起伏会决议它在这个循环中相对于中点上下移动的间隔。所以,让“蜈蚣”循环移动起来只需经过以下代码:
pwm = int(self.pwm_mid + pwm_amplitude*sin(self.phase + self.phase_offset))
假如要让一条腿以咱们预期的“行走”方法运动,hip和ankle伺服系统不行能做完全相同的运动。让咱们将运动参数化成x和y,加上时刻变量t,构成一个正弦函数,令x(t)=y(t)=sin(ωt),便可以取得下面这个运动曲线:
为了完结行走,则还需求您给其间一个变量供给相位偏移(如上面的代码所示),终究得到一个圆。
在伺服系统的相位偏移变量规划中,Adimin表明分层设置实在是太炫酷了——它能使多条腿连接运动!
每个腿的伺服目标之间需求必定的相位偏移,而每条腿相对于其他腿也存在相位偏移。因而,咱们应该给每个LegPair目标一个高档的相位偏移量,然后每个部分将相应的偏移量分配给它的初级目标。
除了上下跳动以外,Python还能完结“蜈蚣”的其他运动方法:
1. b = DriverBoard(args.addr, 16)
2.
3. if args.N_pairs > 4:
4. b_front = DriverBoard(40, 8)
5.
6. sleep(0.5)
7. pairs = []
8. for i in range(args.N_pairs):
9. if i
10. lp = LegPair(b, i)
11. else:
12. lp = LegPair(b_front, i-4)
13.
14. if i%2 == 1:
15. lp.set_phase_offset(pi)
16. pairs.append(lp)
17.
18. start = time()
19. time_limit = args.runtime
20.
21. while True:
22. for p in pairs:
23. p.increment()
天然生物学为机器人规划供给了黄金规范,咱们需仍要很长时刻才干制造出完结全部动物行为动作的多足机器人。而另一方面,机器人不受生物学的约束,这在某种程度上预示着它们总有或许学习动物天然生成就不会的新行为。
相关报导:
https:///2019/05/16/in-case-hexapods-werent-creepy-enough-the-centipede-robot/?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more
实习/全职修改记者招聘ing
参加咱们,亲自体会一家专业科技媒体采写的每个细节,在最有远景的职业,和一群遍及全球最优异的人一同生长。坐标北京·清华东门,在大数据文摘主页对话页回复“招聘”了解概况。简历请直接发送至zz@bigdatadigest.cn
志愿者介绍
后台回复“志愿者”参加咱们
点「在看」的人都变好看了哦!