【Cheetah仿真环境】源码解析--robotstate

只是样例,更多详情请私信

一、RobotState.h文件

核心代码:

class RobotState
{
   
    public:
        void set(flt* p, flt* v, flt* q, flt* w, flt* r, flt yaw);
        //void compute_rotations();
        void print();
        Matrix<fpt,3,1> p,v,w;
        Matrix<fpt,3,4> r_feet;
        Matrix<fpt,3,3> R;
        Matrix<fpt,3,3> R_yaw;
        Matrix<fpt,3,3> I_body;
        Quaternionf q;
        fpt yaw;
        fpt m = 9;
        //fpt m = 50.236; //DH
    //private:
};
  • Matrix<fpt,3,1> p,v,w:定义了机器人的在世界坐标系下的,位置 p p p,速度 p ˙ \dot{p} p˙,以及机身坐标系下的旋转角 ω \omega ω,均为 3 × 1 3\times 1 3×1矩阵

  • Matrix<fpt,3,4> r_feet:机身参考系下的足端位置, 3 × 4 3\times4 3×4矩阵

  • Matrix<fpt,3,3> R:机身坐标系到世界坐标系的旋转矩阵

  • Matrix<fpt,3,3> R_yaw;:偏航角旋转矩阵

  • Matrix<fpt,3,3> I_body:机身坐标系下的惯量矩阵

  • Matrix<fpt,3,3> I_body:四元素表示的世界坐标系下的旋转

  • fpt yaw:偏航角

  • fpt m = 9:机器人质量

二、RobotState.cpp文件

RobotState类的完整实现,set函数的输入为当前(或上一)时刻的状态数据,包括位置,速度,旋转角,足端位置,偏航角以及四元数表示的旋转量,具体定义参考上一节。

void RobotState::set(flt* p_, flt* v_, flt* q_, flt* w_, flt* r_,flt yaw_)
{
   
	//位置,速度,旋转角
    for(u8 i = 0; i < 3; i++)
    {
   
        this->p(i) = p_[i];
        this->v(i) = v_[i];
        this->w(i) = w_[i];
    }

	//四元数
    this->q.w() = q_[0];
    this->q.x() = q_[1];
    this->q.y() = q_[2];
    this->q.z() = q_[3];
    //偏航角
    this->yaw = yaw_;
    
	//足端位置
    //for(u8 i = 0; i < 12; i++)
    //    this->r_feet(i) = r[i];
    for(u8 rs = 0; rs < 3; rs++)
        for(u8 c = 0; c < 4; c++)
            this->r_feet(rs,c) = r_[rs*4 + c];
	
	//旋转矩阵
    R = this->q.toRotationMatrix();
    fpt yc = cos(yaw_);
    fpt ys = sin(yaw_);

    R_yaw <<  yc,  -ys,   0,
             ys,  yc,   0,
               0,   0,   1;
	
	//惯量矩阵
    Matrix<fpt,3,1> Id;
    Id << .07f, 0.26f, 0.242f;
    //Id << 0.3f, 2.1f, 2.1f; // DH
    I_body.diagonal() = Id;

    //TODO: Consider normalizing quaternion??
}

1、位置,速度,旋转角

这里直接对这三个量赋值:

for(u8 i = 0; i < 3; i++)
    {
   
        this->p(i) = p_[i];
        this->v(i) = v_[i];
        this->w(i) = w_[i];
    }

以下统一表示为:
下标 G _G G表示世界坐标系下,下标 B _B B表示机身坐标系

具体形式如下:
p = [ x G y G z G ] v = [ x G ˙ y G ˙ z G ˙ ]

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
MIT Cheetah 是麻省理工学院开发的一款四足机器人,它以线性电机驱动、电池供电、高速运动等特点而著名。MIT Cheetah解析主要涵盖了它的运动控制、感知、规划和执行等多个方面。 在运动控制方面,MIT Cheetah码实现了其高速奔跑的核心功能。它使用模型预测控制(model predictive control, MPC)算法来实现动力学的运动规划和控制,通过不断调整腿部关节的位置和速度,使机器人能够保持平稳的奔跑姿态。同时,通过使用 IMU 和脚底的力传感器,MIT Cheetah 可以实时感知和调整机器人的姿态,以保持稳定的运动。 在感知方面,MIT Cheetah码实现了机器人对周围环境的感知能力。它配备了激光雷达和摄像头等传感器,用于获取周围环境的三维点云数据和图像信息。通过对这些数据进行处理和分析,MIT Cheetah 可以实现目标检测、路径规划和避障等功能。 在规划和执行方面,MIT Cheetah码利用感知数据和运动控制算法,实现了高效的路径规划和执行能力。通过使用运动学规划和动力学约束优化等算法,MIT Cheetah 可以根据当前的环境和任务要求,生成适合的运动轨迹,并通过电机控制器来实施执行。这样,MIT Cheetah 就能够在各种复杂的环境中实现高速奔跑和灵活的移动能力。 总的来说,MIT Cheetah解析包含了机器人的运动控制、感知、规划和执行等多个方面,通过对这些方面的深入研究和分析,可以更好地了解和应用这款先进的四足机器人。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值