本文主要是介绍斯坦福机器狗的设计与实现 四足机器人的机械结构类型和制造,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
四足机器人的机械结构类型和制造
1、仿制对象
Stanford Doggo由斯坦福学生机器人俱乐部的极限流动团队开发。是一个重量不到5千克的四足机器人,能够动态运动,使其能够达到所有四足机器人的最高跳跃1.07米。还能以0.9米/秒的速度向前移动,其灵活的移动性使机器人还能行走,小跑,跳跃和后空翻。
2、四足机器人机械结构上的重要概念
腿型:并联腿,串联腿(运动范围大)
串联腿分类:外膝肘式,全肘式,全膝式,内膝肘式(稳定性高)。
无刷电机。
四足机器人的足端设计主要有三种形式,即圆柱形足端(含半圆柱型阻断),球型足端(含半球形足端)及仿生足端。
圆形足端是目前四足机器人最常见的足端设计,足端呈球形或半球型,这种设计的优点是机器人足端可以和地面从各个方向接触,具有较强的环境适应性。
这里我们选择圆柱形。
功能特性:
- 八自由度
- 并联腿
- 能够实现TROT小跑步姿
硬件特性:
- PyBOARD主控
- PCA9685舵机扩展版
- 7.4V 800mah锂电池
- MG90S舵机
- 遥控器
- 无需打板
DIY成本:
低DIY成本
制造的基本流程:
- Github下载三维图
- CURA打开STL
- 设置好打印参数
- 3D打印(制造)
3、DIY准备
PYBOARD:
- 采用Python编程
- 可以直接像U盘那样保存
- NOTEPAD++和PUTTY就可以完成全部编程步骤
- 支持多线程固件
PCA9685:
- I2C通讯
- 可以直接针插,不做板成为可能
2S(7.4V)800MAH电池:
LM2596稳压模块:
- 调至6V供电
MG90S舵机 X8
*****************************************************
课后作业
#L1-作业1# 上Github,搜索下stanford doggo的原生开源仓库,认识其机械结构组成,写一篇有关于其机械结构的总结
同轴机构:
- 驱动每条腿的同轴机构绝对是机器人最复杂的机械部件。这也是最麻烦的。它的工作方式是,有两个TMotorMN
5212电机安装在碳纤维侧板上。也有一个3D打印轴承块,其中有两个轴承,以容纳外部同轴管。。两台电机通过16T滑轮和48T滑轮之间的6mm宽、3mm节距GT2皮带将功率传递给同轴轴。没有足够的空间用于普通的,现成的滑轮,所以使用X计量SLS服务打印了我们自己的。我们学会了总是向服务部门说明滑轮必须打印出来。如果零件是以一个角度印刷,滑轮齿的几何形状会因为离角层而变形。在滑轮上方,我们有一个喷水铝制支架,以保持皮带张力,从而防止在高扭矩情况下跳过。尽管如此,要为托架找到最佳的中心到中心距离真的很痛苦,因为电机和小滑轮之间的连接处的斜率,以及更大的滑轮和轴之间的连接处的斜率,意味着上托架的中心到中心距离必须比皮带供应商(sdp-si)规定的标称中心到中心距离大0.5mm。这个组件最大的问题是皮带张力越大,我们在装配中的摩擦力就越大。较高的摩擦力意味着电机的跟踪性能较差,对触地事件的敏感性也更差等等。在我们的下一个机器人上,我们希望有更平滑、更精确的机械滑轮,以及更少的同轴装配中的斜率
腿:
- 狗有四,二自由度腿的SCARA味道。SCARA的味道,意思是,每个腿是一个五杆机构和两个上面的环节是同轴驱动。实际的腿链接是由大蓝锯切割的水射流,这是一个伟大的在线服务(虽然确保上传您的所有部分在一个DXF,以节省费用)。喷水部件实际上是足够精确的,我们不需要对轴承的孔进行修补。
接缝:
- 对于每个接头,有两个深沟球轴承相互堆叠在一起,并有一个肩部螺栓穿过他们和螺纹进入对立的环节。
脚:
- 机器人的脚是我们用3D打印的2部分模具制成的硅橡胶制品。
框架:
- 机器人的框架非常简单。有两个喷水,4mm碳纤维板在每边,连接两个1/32“5052铝板金属零件。这些钣金零件被水射流切割,然后用手折叠起来(由于两个碳纤维面板向内倾斜,铝制零件上的标签不能折叠在制动器上)。
#L1-作业2# 结合上Github的stanford doggo仓库和百度搜索两个信息源,对其原生控制硬件Odrive和无刷电机的控制方式进行了解
Odrive:
- 环形位置控制 要启用环形位置控制,设置
axis.controller.config.setpoints_in_cpr = True
此模式对于连续的增量位置移动很有用。 例如,机器人会无限期滚动,或者挤出机马达或传送带会以受控的增量无限期地移动。
在常规位置模式下,pos_setpoint
将增长到非常大的值,并且由于浮点舍入而失去精度。
在这种模式下,控制器将尝试仅在电动机旋转一圈之内跟踪位置。
具体而言,pos_setpoint
的范围应为[0,cpr-1],其中cpr是一圈编码器计数值。
如果pos_setpoint
增加到该范围之外(例如通过step /
dir输入),则会自动将其约束到[0,cpr-1]范围内。注意:在此模式下,将使用encoder.pos_cpr
作为位置位置反馈,而非encoder.pos_estimate
。
如果尝试以超过cpr/2步的大步幅增加位置,则电机将以相反的方向旋转至相同角度。当输入控制量干扰很大时,也会出现这种情况。
如果您有一个需要处理较大步幅的应用程序,则可以使用虚拟CPR,该虚拟CPR是编码器实际CPR的整数倍。
设置encoder.config.cpr = N * your_enc_cpr
,其中N是一些整数。
选择合适的N为您的应用提供合适的位置设置范围。 - 速度控制 设置
axis.controller.config.control_mode = CTRL_MODE_VELOCITY_CONTROL。
现在,您可以使用axis.controller.vel_setpoint = 5000 [count/s]
控制转速。 - 速度爬升控制 设置
axis.controller.config.control_mode = CTRL_MODE_VELOCITY_CONTROL
设置速度爬升速率 (绝对加速度):
axis.controller.config.vel_ramp_rate = 2000 [counts/s^2]
启动速度爬升模式:
axis.controller.vel_ramp_enable = True
现在,您可以使用
axis.controller.vel_ramp_target = 5000 [count/s]
控制转速。 - 电流控制 设置
axis.controller.config.control_mode = CTRL_MODE_CURRENT_CONTROL
现在,您可以使用axis.controller.current_setpoint = 3 [A]
来控制电机电流。 注意: 在电流控制模式下没有速度限制。 确保不要使电机过载或超过编码器的最大速度。
无刷电机的控制方式:
- 换相的控制 根据定子绕组的换相方式,首先找出三个转子磁钢位置传感器信号H1、H2、H3的状态,与6只功率管之间的关系,以表格形式放在单片机的EEPROM中。8751根据来自H1、H2、H3的状态,可以找到相对应的导通的功率管,并通过P1口送出,即可实现直流无刷电动机的换相。
- 转速的控制 在直流无刷电动机正常运行的过程中,只要通过控制数模转换器的输出电压U0,就可控制直流无刷电动机的电流,进而控制电动机的电流。即8751单片机通过传感器信号的周期,计算出电动机的转速,并把它同给定转速比较,如高于给定转速,则减小P2口的输出数值,降低电动机电流,达到降低其转速的目的。反之,则增大P2口的输出数值,进而增大电动机的转速。
- PWM控制 转速控制也可以通过PWM方式来实现。
- 变结构控制 当直流无刷电动机处于起动状态或在调整过程中,采用直流无刷电动机的运行模式,以实现动态相应的快速性,一旦电动机的转速到了给定值附近,马上把它转入同步电动机运行模式,以保证其稳速精度。这时计算机只需要按一定频率控制电动机的换相,与此同时,计算机在通过位置传感器的信号周期,来测量其转速大小,并判断它是否跌出同步。一旦失布,则马上转到直流无刷电动机运行,并重新将其拉入同步。
- 方波控制 方波控制使用霍尔传感器或者无感估算算法获得电机转子的位置,然后根据转子的位置在360°的电气周期内,进行6次换向(每60°换向一次)。每个换向位置电机输出特定方向的力,因此可以说方波控制的位置精度是电气60°。由于在这种方式控制下,电机的相电流波形接近方波,所以称为方波控制。
方波控制方式的优点是控制算法简单、硬件成本较低,使用性能普通的控制器便能获得较高的电机转速;缺点是转矩波动大、存在一定的电流噪声、效率达不到最大值。方波控制适用于对电机转动性能要求不高的场合。 - 正弦波控制 正弦波控制方式使用的是SVPWM波,输出的是3相正弦波电压,相应的电流也是正弦波电流。这种方式没有方波控制换向的概念,或者认为一个电气周期内进行了无限多次的换向。显然,正弦波控制相比方波控制,其转矩波动较小,电流谐波少,控制起来感觉比较“细腻”,但是对控制器的性能要求稍高于方波控制,而且电机效率不能发挥到最大值。
- FOC控制 正弦波控制实现了电压矢量的控制,间接实现了电流大小的控制,但是无法控制电流的方向。FOC控制方式可以认为是正弦波控制的升级版本,实现了电流矢量的控制,也即实现了电机定子磁场的矢量控制。
这篇关于斯坦福机器狗的设计与实现 四足机器人的机械结构类型和制造的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!