足式机器人是如今机器人设计的热点,相较于轮式和履带式机器人,足式设计的优势在于其极强的地形通过能力。

你一定见过模仿人类的两足机器人、犬型和马型的四足机器人、近来爆红的蜘蛛型六足机器人,那你有想过再多来几条腿吗?

控制行走一直是足式机器人的一大设计难点,腿越多则移动越困难。 然而,一位名叫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 < 4:
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().
python学习裙:10667510,最全学习资料,萌新程序员大本营

让我们来看看这段代码的功能—— “蜈蚣”弹跳起来了!

其实,让“蜈蚣”实现行走的部分是increment _ankles()函数。 为了解释这一点,让我们回到Servo class。

伺服系统的主要工作是循环移动。 为了控制伺服装置的位置,需要向它发送一个特定占空比的脉宽调制(PWM)信号。 接下来,我们要找到对应于该点的脉宽调制,即中点脉宽调制(mid_pwm),使它围绕一个点振荡。 然后,定义一个脉宽调制幅度(pwm_amplitude),该幅度会决定它在这个循环中相对于中点上下移动的距离。 于是,让“蜈蚣”循环移动起来只需通过以下代码:

pwm = int(self.pwm_mid + pwm_amplitude*sin(self.phase + self.phase_offset))
python学习裙:10667510,最全学习资料,萌新程序员大本营

如果要让一条腿以我们预期的“行走”方式运动,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 < 4:
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()
python学习裙:10667510,最全学习资料,萌新程序员大本营

自然生物学为机器人设计提供了黄金标准,我们需仍要很长时间才能制造出完成一切动物行为动作的多足机器人。而另一方面,机器人不受生物学的限制,这意味着它们总有可能学习动物天生就不会的新行为。

相关报道:

https://www.declanoller.com/2019/05/16/in-case-hexapods-werent-creepy-enough-the-centipede-robot/?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more

用Python做一只真·多足机器人,钢铁蜈蚣能弯曲还能蠕动相关推荐

  1. python做词典_真·0基础自学python(字典)

    前言:字典在很多的教材中都是和列表.元组放在一起说,其中有一本书的安排顺序比较精妙,我这里也是遵循这本书的逻辑过来的. 字典在if 语句的作用下,可以做到Excel表格里Vlookup函数的效果. 看 ...

  2. 潘通色号与rgb转换_中秋福利!手把手教你用Python做一只口红色号识别器,秒变李佳琦...

    大数据文摘编辑组出品技术实现:宁静 中秋节,直男送礼,首选口红.毕竟李佳琦一句"OMG买它",女朋友披头散发抢购,钱包就空了一半.但是,口红色号千千万,选对了牌子才成功了一半.快乐 ...

  3. 用python做了一个 qq炫舞 机器人

    2个晚上的时间,累计大约有6个多小时吧,用 python 实现了一个 qq炫舞 的机器人. qq炫舞这个游戏就是很多年前比较流行的,出现 一排上下左右,在规定时间内正确输入,然后再在关键点狠拍空格键的 ...

  4. 用 Python 做石头剪刀布,看谁能赢过谁?

    作者 | 云朵君 来源 | 数据STUDIO 最近有粉丝朋友聊到用Python做个石头剪刀布的小游戏.我一寻思,还挺好玩.其实游戏编程是学习如何编程的一个好方法,它会使用许多我们在现实世界中看到的工具 ...

  5. 【菠萝狗四足机器人】二次开发教程--第一章 【简介与开发环境搭建】

    Py-apple Dynamics 简介与开发环境搭建 1 简介 1.1 何为 菠萝狗 和 Py-Apple Dynamics 1.2 目前支持的功能 2 开发环境搭建 2.1 硬件的搭建 2.1 软 ...

  6. 讲真,做Python一定不要只会一个方向!

    最近不少人在微信问我现在Python还好就业不好就业?发展前景怎么样?我30多岁了,还能不能转行编程?Python该怎么学?如果做Python到底该做爬虫还是数据分析还是web?......等等这样的 ...

  7. python骗局-说真的!大家做Python一定不要只会一个方向

    最近不少人后台私信包括还有一些朋友都在问我现在Python还好就业不好就业?发展前景怎么样?我30多岁了,还能不能转行编程?Python该怎么学?如果做Python到底该做爬虫还是数据分析还是web? ...

  8. Python做一个Kindle电子书下载助手,真香!

    哈喽,大家好,我是菜鸟哥! 大家有没有想过把亚马逊网站上的Kindle电子书下载到自己的电脑上? 今天分享的项目可以帮大家实现这一目的.该项目用Python开发,简单.好用.开源. 下面分享下项目的使 ...

  9. 2021-09-29破解小米“铁蛋”,只需9999元,你也可以做一个四足机器人!

    https://www.eet-china.com/news/202109291008.html 2021-09-29破解小米"铁蛋",只需9999元,你也可以做一个四足机器人! ...

  10. python发音机器人_只需三步,菜鸟也能用Python做一个简易版Siri

    原标题:只需三步,菜鸟也能用Python做一个简易版Siri 当下,各个手机厂商都陆续的推出了属于自己的智能手机机器人,像是苹果的Siri,小米的小爱,还有等等.这些智能机器人不仅仅方便了我们对于手机 ...

最新文章

  1. 如何建立图像数据矩阵和图像显示灰度之间的关系!_放射技术考试第四章第一节 数字图像的特征...
  2. 在CentOS7上部署Apache Mesos
  3. [转载] Python基础之类型转换与算术运算符
  4. 设备的开发【WP7学习札记之五】
  5. max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...
  6. DBVisualizer 添加数据库JDBC驱动
  7. c语言国二题库选择填空题,国二c语言笔试题库(含答案),选择填空.doc
  8. python数据透视表怎么存下来_大数据分析如何利用Python创建数据透视表?
  9. mysql like模糊查询like %someTitle%效率低下
  10. Java实现发送短信
  11. java运行不了_java运行不出来怎么回事?Java如何成功运行?
  12. 【Ubuntu+Caffe+CPU】Cannot use GPU in CPU-only Caffe: check mode
  13. 【HTML教程(一)】HTML标签、模板和实例
  14. Activiti工作流知识点:
  15. ubuntu 系统狠慢 或者很卡的原因
  16. 回溯法-子集树排序树满m叉树
  17. 函数重载的条件、作用、注意事项
  18. vijos 、洛谷 —— 珠心算测验(java实现)
  19. 用模拟退火算法(simulated annealing / SA)求函数最小值
  20. wpf获取gps数据在地图上显示定位

热门文章

  1. VB是对API的封装 qq 快速登录 各种webservice接口搜集 ReReg.bat 注册登录组件
  2. 爬虫笔记19:模拟登录jerry的QQ空间(selenium获取cookie的应用案例)、怎么保存cookie
  3. pgsql删除表中所有数据_pg数据库 删除所有表
  4. StarUML license key
  5. 用spark统计50年美国最常见的20个名字
  6. 逆水寒服务器什么时候能维护好,逆水寒11月22日更新维护公告 逆水寒更新到什么时候...
  7. windows11设置chrome谷歌浏览器为默认浏览器
  8. 央行降息后六大城市房价有望反弹(名单)
  9. python3 数独解法 深度遍历
  10. 发链(FAB)技术有望突破区块链交易瓶颈