|
【R309】8自由度并联腿机器狗
作者:机器谱
行走 避障 姿态平衡 |
1. 功能说明
本文示例将实现R309a样机8自由度并联腿机器狗行走的功能。
2. 并联仿生机器人结构设计
机器狗是一种典型的并联仿生四足机器人,其腿部结构主要模仿了四足哺乳动物的腿部结构,主要由腿部的节段和旋转关节组成。在设计机器狗的腿部结构时,可基于四足哺乳动物的生理结构,使用连杆代替腿部的骨骼来提高机器人的性能,机器狗腿部采用5连杆结构设计。
行走
五杆结构是平面连杆结构的一种,具有两个自由度的平面闭链五杆机构不仅使运动机构的刚度增加,更突出的优点在于它能够实现变轨迹的运动。
五杆结构
腿部旋转关节单元设计
腿部的旋转关节是机器人中很重要的一部分,它是整个机器人中的关键运动单元,关节的设计往往决定了机器人的运动特性和精度。关节单元主要是负责连接相邻的两端节段,从而实现腿部的摆动。由于腿部是往复运动,因此关节单元的设计要符合循环负载的载荷规律。
关节结构如图:
旋转关节结构图
侧摆关节设计
侧摆关节的主要作用是给机器狗提供回转方向的自由度,使机器狗的腿部能够偏离竖直平面运动,从而实现转弯、侧移、抗侧向冲击等步态。机器人的侧摆关节的驱动方式也是可以多种方案进行选择。
组合后的机器狗的腿部结构图
机器狗的腿部关节大体分为两类,第一类是如四足哺乳动物前腿的肘关节一样的腿部关节设计,另一类是类似四足哺乳动物后腿的膝关节的腿部关节制造。基于以上原理,科学家们设计出四类机器狗的腿部结构:全膝式、全肘式、内膝肘式、外膝肘式。
腿部结构有四种形式
腿部的空间运动区域如下图:
各种布置结构的运动空间如下图:
内膝式结构条件下,运动中的机器狗内部结构质心曲线最为平滑,因此该结构也是最稳定的,为两侧提供的运动空间也更大。此外,运动时机器狗腿部重合的范围也缩小了。基于以上因素,内膝式结构条件有利于机器人的稳定操作。
3. 并联仿生机器人运动算法
在日常生活中,狗的品种、体型不尽相同,因此其运动状态也是多种多样,我们将以生活中最常见的一种运动状态进行分析。在研究中,我们可以通过对狗的行走过程进行高速摄影,抓拍到狗行走的运动全过程,如下图所示:
狗行走过程分解图
然后我们可以对其中一条腿进行分析,将重叠其放在一个相对狗自身静止的坐标系中,如下图所示:
单条腿末端的运动轨迹
根据图示分析,我们可以将狗的腿部运动简单分为与地面接触的支撑阶段和离开地面的跨越阶段。将足部点相连,可近似得到如上图虚线所示的“馒头”状轨迹,支撑段——足接触地面且相对于地面静止不动,身体相对于地面前移;跨越段——足在空中运动,跨越障碍物。
要想让机器狗像真正的狗一样走路,我们就需要控制舵机,让机器狗的腿部走出类似上图中的“馒头”状轨迹。这段轨迹不能超出我们设计的机器狗腿部的运动范围,如下图所示(蓝色阴影区域为机器狗腿部结构的运动范围):
机器狗腿部结构的运动范围
从而得到“馒头”状轨迹曲线的坐标。
坐标系下的腿部末端运动轨迹
于是我们可以根据这个坐标为“馒头状”轨迹指定一个合适的方程,图中轨迹弧线部分可近似取为一个椭圆。
取轨迹原点在真实坐标系中的位置( )
取椭圆两半轴长
则该椭圆方程为:
或者:
底部直线方程为:
通过这个方程,再结合机器狗腿部机构运动公式,即可反推出舵机的一系列运动参数。
机器狗的行进步态
机器狗是四足行走机构,由于四足动物运动的稳定性,相对于双足行走的人来说,其运动步态比较简单,大多机器狗简单的采用前后脚差90度或180度。
机器狗模型
机器狗采用前后脚差180度时的脚部运动落地顺序图如下(注:白色为要抬起的脚,灰色不抬起的脚)
机器狗采用前后脚差90度时的脚部运动落地顺序图如下:
机器狗四条腿腿同时动的时候的动作效果包括整体下蹲、整体站立、身体前后俯仰、身体侧翻等,效果图如下所示:
4. 电子硬件
本实验中采用了以下硬件:
主控板 | |
扩展板 | |
SH-SR舵机扩展板 | |
电池 | 7.4V锂电池 |
功能 | 舵机角度值 |
下蹲 | 1069,736,1855,2174,1746,1839,1007,850 |
站立 | 1365,1163,1522,1837,1657,939,1253,1341 |
前趴 | 1069,736,1855,2174,1657,939,1253,1341 |
后仰 | 1365,1163,1522,1780,1746,1839,1007,850 |
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-17 https://www.robotway.com/ ------------------------------*/ #include "leg.h" #include "gait.h" #include "sensor.h" enum{DOGBALANCE=1,DOGWALK,DogObstacleAvoidanceWalk}; float Eular[3]; /* 欧拉角 */ void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.begin(115200); sensorSetup(); delay(3000); } void loop() { // put your main code here, to run repeatedly: Dog_Walk(); //狗前进(行走) } void Dog_Walk() { static long t_control = millis(); static int t0 = millis(); if(t_control){ t0 = millis(); } if ((millis() - t_control) > 50) { float x[4], y[4]; long t = millis() - t0; gait(t, 0.5, x[0], y[0], forwardGait); gait(t, 0, x[1], y[1], forwardGait); gait(t, 0, x[2], y[2], forwardGait); gait(t, 0.5, x[3], y[3], forwardGait); leg0.footPos(x[0], y[0]); leg1.footPos(x[1], y[1]); leg2.footPos(x[2], y[2]); leg3.footPos(x[3], y[3]); t_control = millis(); } } |
电路连接说明:将8个舵机连接在SH-SR扩展板上,舵机接线顺序为:1、2、3、4、5、6、7、8
5. 功能实现
上位机:Controller 1.0
下位机编程环境:Arduino 1.8.19
5.1 调试舵机角度
机器大狗可以实现站立、下蹲、前趴、后仰的功能。我们可以利用上位机 Controller软件调整大狗的舵机角度,记录下站立、下蹲、前趴、后仰 时舵机的角度;然后利用Arduino IDE进行下位机编程,利用这些角度实现大狗的预期效果。
对于8自由度的大狗,利用Controller软件进行调试角度界面(如下图所示):
经过调试,对大狗的下蹲、站立、前趴、后仰四个功能的舵机角度值见下表:
利用上位机测出的舵机角度,可进行下位机编程。
5.2 示例程序
下面提供一个8自由度并联腿机器狗行走的参考例程(Dog_Walk.ino),具体实验效果可参考演示视频。
6. 扩展样机
本样机可以做出一些扩展,如下图所示的在样机上方增加一个平板。
7. 资料清单
序号 | 内容 |
1 | 【R309】-行走-例程源代码 |
2 | 【R309】-行走-样机3D文件 |
【整体打包】-【R309】8自由度并联腿机器狗-行走-资料附件.zip | 7.3MB | 下载21次 | 下载 |
避障
1. 功能说明
本文示例将实现R309a样机8自由度并联腿机器狗避障的功能,当机器狗向前行走遇到障碍后,开始往反方向行走。
2. 电子硬件
本实验中采用了以下硬件:
主控板 | |
扩展板 | |
传感器 | 近红外传感器 |
电池 | 7.4V锂电池 |
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-18 https://www.robotway.com/ ------------------------------*/ #include "leg.h" #include "gait.h" #include "sensor.h" enum{DOGBALANCE=1,DOGWALK,DogObstacleAvoidanceWalk}; float Eular[3]; /* 欧拉角 */ void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.begin(115200); sensorSetup(); delay(3000); } void loop() { // put your main code here, to run repeatedly: Dog_ObstacleAvoidance_And_Walk(); //狗行走并避障。 } void Dog_ObstacleAvoidance_And_Walk() { static long t_control = millis(); static int t0 = millis(); static int status = 0; static gaitParam cur_gait = backwardGait; //狗步态1 static gaitParam cur_gait2 = backwardGait2; //狗步态2 if( 1 ){ cur_gait = backwardGait; cur_gait2 = backwardGait2; t0 = millis(); } float f = readFront(); float b = readBack(); readPose(); if ((millis() - t_control) > 50) { float x[4], y[4]; long t = millis() - t0; if (f && !b) { cur_gait = forwardGait; cur_gait2 = forwardGait2; } else if (b && !f) { cur_gait = backwardGait; cur_gait2 = backwardGait2; } gait(t, 0.5, x[0], y[0], cur_gait); gait(t, 0, x[1], y[1], cur_gait2); gait(t, 0, x[2], y[2], cur_gait2); gait(t, 0.5, x[3], y[3], cur_gait); leg0.footPos(x[0], y[0]); leg1.footPos(x[1], y[1]); leg2.footPos(x[2], y[2]); leg3.footPos(x[3], y[3]); t_control = millis(); } } |
电路连接说明:
① 机器狗头侧左边的近红外传感器连接在Bigfish扩展板的A3端口;头侧右边的近红外传感器连接在Bigfish扩展板的A4端口。
② 将8个舵机连接在Bigfish扩展板上,舵机连线说明如下图所示:
3. 功能实现
上位机:Controller 1.0
下位机编程环境:Arduino 1.8.19
实现思路:如果左边的近红外传感器(A3)触发,右边的近红外传感器(A4)没有触发,机器狗右转;如果左边的近红外传感器(A3)没有触发,右边的近红外传感器(A4)触发,机器狗左转;如果左边的近红外传感器(A3)和右边的近红外传感器(A4)都触发,机器狗后退;否则,小狗前进。
3.1 调试舵机角度
对于机器狗利用Controller软件进行调试舵机角度,可参考上文8自由度并联腿机器狗-行走
3.2 示例程序
下面提供一个8自由度并联腿机器狗避障的参考例程(Dog_ObstacleAvoidance_And_Walk.ino),具体实验效果可参考演示视频。
4. 资料清单
序号 | 内容 |
1 | 【R309】-避障-程序源代码 |
【整体打包】-【R309】8自由度并联腿机器狗-避障-资料附件.zip | 8.58KB | 下载2次 | 下载 |
姿态平衡
1. 功能说明
本文示例将实现8自由度并联腿机器狗保持姿态平衡的功能,当机器狗在一个平台上原地站立,平台发生倾斜时,机器狗能够自动调整姿态,保证背部水平。
2. 机器狗的稳定性分析
稳定性是机器狗运动中很重要的一部分,对于足式机器人的稳定性判定,研究人员提出了很多不同的方法,如ZMP(零力矩点)、FASM(力角稳定裕度)、ESM(能量稳定裕度)等。
机器狗运动时,惯性力、腿部与地面的接触力是其主要扰动来源。机器狗的着地腿会受到地面对其的支持力和摩擦力,而其它外力可等效为机器狗重心处的惯性力,受力分析如下图所示:
机器狗的受力分析示意图
(F1、F2、F3是地面对机器狗的支持力;表示等效惯性力和等效重力的合力)
在四足机器人中,由于运动步态中支撑脚通常只有两条或更少,无法在地面上寻找到有效的支撑多边形,因此四足机器人只好将机器人的质心偏离初始位置的距离作为稳定性的参考量。一般来说,竖直方向的偏置距离对稳定性的影响不大。
3. 电子硬件
本实验中采用了以下硬件:
主控板 | |
扩展板 | |
SH-SR舵机扩展板 | |
传感器 | 六轴陀螺仪 |
电池 | 7.4V锂电池 |
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-18 https://www.robotway.com/ ------------------------------*/ #include "leg.h" #include "gait.h" #include "sensor.h" enum{DOGBALANCE=1,DOGWALK,DogObstacleAvoidanceWalk}; float Eular[3]; /* 欧拉角 */ void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.begin(115200); sensorSetup(); delay(3000); } void loop() { // put your main code here, to run repeatedly: Dog_Balance(); //狗保持平衡 } void Dog_Balance() { static long t_control = millis(); float f = readFront(); float b = readBack(); readPose(); if ((millis() - t_control) > 40) { if (f && !b) { leg0.back(); leg1.back(); leg2.back(); leg3.back(); } else if (b && !f) { leg0.front(); leg1.front(); leg2.front(); leg3.front(); } if (Eular[0] > 3) { leg0.down(); leg1.down(); leg2.up(); leg3.up(); } if (Eular[0] < -3) { leg0.up(); leg1.up(); leg2.down(); leg3.down(); } if (Eular[1] < 0 && Eular[1] > -176) { leg0.up(); leg1.down(); leg2.up(); leg3.down(); } if (Eular[1] > 0 && Eular[1] < 176) { leg0.down(); leg1.up(); leg2.down(); leg3.up(); } leg0.updatePos(); leg1.updatePos(); leg2.updatePos(); leg3.updatePos(); // SerialUSB.println(); t_control = millis(); } } |
电路连接说明:
① 将8个舵机连接在SH-SR扩展板上,舵机连接顺序为:1、2、3、4、5、6、7、8;
② 将六轴陀螺仪传感器连接在Bigfish扩展板的A0端口。
4. 功能实现
上位机:Controller 1.0
下位机编程环境:Arduino 1.8.19
实现思路:当机器狗在一个平台上原地站立,平台发生倾斜时,机器狗能够自动调整姿态,保证背部水平。
4.1 调试舵机角度
对于机器狗利用Controller软件进行调试舵机角度,可参考上文 8自由度并联腿机器狗-行走
4.2 示例程序
下面提供一个8自由度并联腿机器狗保持姿态平衡的参考例程(Dog_Balance.ino),具体实验效果可参考演示视频。
5. 资料清单
序号 | 内容 |
1 | 【R309】-姿态平衡-程序源代码 |
【整体打包】-【R309】8自由度并联腿机器狗-姿态平衡-资料附件.zip | 8.41KB | 下载2次 | 下载 |