Hector双足机器人MPC控制

本文介绍了在双足机器人上实现的力和力矩模型预测控制(MPC),用于实现高速动态行走。控制方法包括站立阶段的MPC和摆动阶段的PD控制,动力学模型和约束条件得到详细阐述,同时涉及了hector_control库和ConvexMPC类的代码实现。实验结果显示了有效且稳定的机器人运动控制。
摘要由CSDN通过智能技术生成

文章arxiv.org/pdf/2104.00065.pdf

Force-and-moment-based Model Predictive Control for Achieving Highly Dynamic Locomotion on Bipedal Robots

一、任务说明

机器人模型:宇树机器人改成垂直结构

控制目标:双足机器人按照一定速度行走

二、控制原理

控制方法:基于力和力矩的MPC,站立阶段mpc,摆动阶段pd

动力学模型

动力学方程

状态方程

输入U

状态变量

不等式约束(15)是跟摩擦系数有关,

等式约束(16)是摆动腿阶段,应该采用另外的PD控制

站立状态:MPC控制

摆动状态:PD控制

MPC问题的求解使用第三方库

力矩控制的转换

三、工程文件说明:

hector_control是控制代码,

包含ConvexMPC是双足机器人的基于力和力矩的控制器MPCsrcmain.cpp、行走和被动状态切换的有限状态机FSMinterface提供用户键盘控制接口、common是底层电机控制指令;third_party是求解MPC 问题的第三方库qpOASES

hector_descriptionhector机器人描述文件,包含stl文件,xacro建模文件。

unitree_ros主要关注包含gazebo的仿真元素。

四、代码实现:

main函数

FSM有限状态机切换,FSMState_PassiveFSMState_Walking状态切换,若高度太低就转化成passive状态被动不可用户控制,通常是walking状态

FSM* _FSMController = new FSM(_controlData);

FSMState_Walking,注意初始化了MPC对象,函数run()调用MPC类的run函数

ConvexMPCLocomotion

MPCrun函数

首先根据当前机器人状态选择合适的步态模式(站立or行走),

然后根据步态模式生成相应的脚部期望轨迹,

设置控制参数,

MPC问题的设置和求解,

最后更新机器人的控制命令。

五、效果

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值