四足机器人(三)--- 姿态控制

6 篇文章 7 订阅
2 篇文章 0 订阅

四足机器人(三)--- 姿态控制

概述

    四足机器人运动过程中,身体部分的姿态会不断地发生变化。假如机器人的足端一直保持与地面接触且相对位置不发生变化,此时的身体姿态我们称之为站立姿态。
    四足机器人的站立姿态控制,本质上是并联机器人的逆解。只不过相比于并联机器人每条支腿只有一个驱动自由度、平台自由度和驱动自由度一般相等而言,四足机器人存在许多冗余自由度。因此在解算出每条腿的位置向量后,还需要对每条腿做逆解(而不是像并联机器人那样直接得到线位移)。在这里我们默认单腿的逆解已知。

姿态表示

在这里插入图片描述

其中,l 和 w分别表示机器人足端在长度与宽度,b表示两前足基座原点之间的距离。
在这里插入图片描述
移除后腿后 ,其中, O 为地面坐标系原点,位于足端位置的对角线交点; O’ 为身体部分几何中心。

我们使用齐次变换矩阵 A 来表示机器人身体部分的位姿:
在这里插入图片描述
其中 pn 为向量OO’ 的坐标分量,表示位置:在这里插入图片描述
R 为身体相对于地面的旋转矩阵,表示姿态(RPY为欧拉角):在这里插入图片描述

使用MATLAB实现姿态控制算法

rpy_r = 0;
rpy_p = 40;
rpy_y = 0;
pos_x = 0;
pos_y = 0;
pos_z = 190;

b = 160;
w = 210;
l = 440;

R = rpy_r*pi/180;
P = rpy_p*pi/180;
Y = rpy_y*pi/180;
pos = [pos_x,pos_y,pos_z]';

rotx = ([[1,       0,      0  ]
         [0,   cos(R), -sin(R)]
         [0,   sin(R), cos(R)]]);
     
roty = ([[cos(P),  0,    -sin(P)]
         [0,       1,    0      ]
         [sin(P),  0,   cos(P)]]);

rotz = ([[cos(Y), -sin(Y),  0]
         [sin(Y),  cos(Y),  0]
         [  0,      0,      1]]);
rot_mat = rotx * roty * rotz;

%结构参数
body_struc = ([[l/2,  b/2,   0]
               [l/2,  -b/2,  0]
               [-l/2,  b/2,   0]
               [-l/2,  -b/2,  0]])';
 
footpoint_struc = ([[l/2,  w/2-70,  0]
                    [l/2,  -w/2-20,  0]
                    [-l/2,  w/2-70,  0]
                    [-l/2,  -w/2-20,  0]])';
                
 leg_pose = zeros(3,4);
 for i = 1:4
     leg_pose(:,i) = pos + rot_mat * body_struc(:,i) - footpoint_struc(:,i);
 end
 
 rf_x = (leg_pose(1,1));
 rf_y = (leg_pose(2,1));
 rf_z = (leg_pose(3,1));
 lf_x = (leg_pose(1,2));
 lf_y = (leg_pose(2,2));
 lf_z = (leg_pose(3,2));
 rb_x = (leg_pose(1,3));
 rb_y = (leg_pose(2,3));
 rb_z = (leg_pose(3,3));
 lb_x = (leg_pose(1,4));
 lb_y = (leg_pose(2,4));
 lb_z = (leg_pose(3,4));

效果

1.零位
在这里插入图片描述
2. x向平移0.2
在这里插入图片描述
3.x向平移-0.3
在这里插入图片描述

  1. 绕z轴旋转10°
    在这里插入图片描述

  2. 绕z轴旋转30°
    在这里插入图片描述

  • 8
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值