提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理
本文先对**控制系统架构【控制流程图、控制算法】**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章
提示:以下是本篇文章正文内容
控制系统的设计是把各个相关功能的控制器联系起来,使得每个控制器共同协助完成机器人稳定且高动态运动控制的目标
控制对象不一样,相应的控制系统也不一样,下面我已足式机器人控制架构例子作为介绍
由于硕士毕设内容相关,细致的控制方法和思想等大论文通过后再分享出来,这里仅仅介绍一下控制结构的概念
过段时间续新~
目前针对四足机器人的控制问题依然没有通用的框架和算法,虽然很多方法都经过实验验证,但找到一种高效通用的控制框架和算法依然是四足机器人研究的重难点问题【防盗标记–盒子君hzj】
四足机器人本质上作为移动机器人的一个分支,其控制系统除了运动控制外,还应包括环境感知、人机交互等部分
足式机器人运动控制的方法多种多样,【防盗标记–盒子君hzj】每年也有许多新的方法发表出来,如基于动力学模型的优化控制,很难用单一的结构去描述所有的控制系统
机器人是一个复杂的系统没有一种算法能控制所有的状态,【防盗标记–盒子君hzj】都是根据对应的需求设计对应的控制器,在通过逻辑接口把各各控制器串联起来
控制器的设计直接决定了机器人的运动能力,是各个子系统中最重要的部分
黄色区域表示控制架构中的控制部分,红色区域表示控制架构中的反馈部分,被控对象可以是仿真环境中的四足机器人虚拟模型,也可以是实际的物理样机
控制指令通过遥控器发送给控制器。控制器接收到控制指令后,首先将其转换成控制变量及步态类型。之后步态与相位控制器结合当前步态、系统时钟时间 、各腿与地面实际接触状态 、各腿与地面实际接触状态计算出当前每条腿的控制状态以及相位 。【防盗标记–盒子君hzj】之后控制器将根据每条腿的控制状态为机器人各条腿选择合适的控制器。若,则表明该条腿当前处于支撑相,将为其运行地面接触反力控制器。若,【防盗标记–盒子君hzj】则表明该条腿当前处于摆动相,将为其运行摆动腿轨迹规划控制器。之后地面接触反力控制器与摆动腿轨迹规划控制器的结果,将被统一发送至腿控制器。【防盗标记–盒子君hzj】腿控制器会将腿坐标系下期望的位置、速度与力参数 ,映射成为关节空间下的位置、速度与扭矩参数 。最后关节控制器将全部计算为发送给执行器的扭矩指令
机器人反馈的原始数据采集于仿真环境或机器人本体上的传感器。之后这些原始数据将会被处理。其中,机器人关节反馈的位置 、速度 、力矩参数被发送给关节控制器用于电机控制,关节控制器再将位置 、速度 、力矩参数上传给腿控制器,【防盗标记–盒子君hzj】将其映射成为腿工作空间下的参数后发送给状态估计器。另一部分反馈参数,如IMU 反馈的机身姿态 、加速度 、角速度 ,以及足底接触传感器反馈的地面接触状态 将会被直接发送给状态估计器。【防盗标记–盒子君hzj】状态估计器将这些反馈参数进行滤波后发送给控制器部分。
.
.
,我自己的最初版本,非毕设控制结构(已改进),后续更
将控制系统进行解耦,划分为多个分立的控制器,每个控制器相互独立,使得每个控制器各施其职,且优化升级单个控制器功能,其他控制器不需要进行大程度的更改;控制器通过接口实现控制器的数据交换,通过数据之间流动关系体现出来
手柄输入躯干的期望命令轨迹指令后,运动控制规划层会生成躯干期望轨迹状态,运动控制优化层同时会根据运动学/动力学模型和状态估计器估计当前躯干状态和腿部接触状态,【防盗标记–盒子君hzj】躯干当前状态和期望状态会有一个偏差,偏差输入MPC控制器,MPC控制器经过计算输出一个反作用力、躯干位置轨迹指令、腿的位置指令,使得期望状态和当前状态重合在一起。【防盗标记–盒子君hzj】WBC控制器根据MPC控制器计算的反作用力、躯干位置轨迹指令、腿的位置指令来计算得到电机输出的期望位置、期望速度、和力矩,再经过步态切换器,把这三个量送到电机,电机控制器执行并反馈一样的信息输入到状态估计器,状态估计器得到新的期望状态,形成闭环
(1)用户通过游戏手柄给定平移速度和转弯速率,【防盗标记–盒子君hzj】把这些两个命令+状态估计器估计的躯干位置和速度传递给期望轨迹生成器,期望轨迹生成器生成平滑且可控制的躯干质心CoM参考状态轨迹,【防盗标记–盒子君hzj】参考状态轨迹是根据状态估计器反馈的躯干位置和速度和用户给定平移速度和转弯速率组合优化得到的
(2)如果腿处于站立状态,则调用支撑力控制器,根据建立单刚体模型的运动方程,使用PD控制律计算期望的躯干质心加速度和角加速度【防盗标记–盒子君hzj】,再通过QP(二次规划)求解器求解单刚体动力学模型运动方程,得到较理想的地面反作用力,再通过牛顿第三定律得到躯干相对于地面上的作用力,再通过运动学雅可比矩阵静态力分配的方法计算出支撑腿每个关节的输出力矩,此时电机接收的力矩命令;
(3)如果腿处于腾空状态,则调用腾空力控制器,【防盗标记–盒子君hzj】先计算出摆动腿的关键点(起点、中间点、落点,其中落点参考了Raibert的估计公式),再通过贝塞尔曲线的方法生成足端轨迹曲线,再对足端轨迹曲线进行插值和求导,得到足端离散的位置和速度轨迹信息,最后根据足端离散的位置和速度轨迹信息,使用PD控制器生成关节力矩,【防盗标记–盒子君hzj】此时电机接收的位置和速度命令,因为阻抗控制(PD控制)是在电机固件实现的(阻抗控制的关节力矩包括前馈力矩+反馈力矩,前馈力矩通过动力学建模得到,反馈力矩通过位置和速度PD控制器融合的阻抗控制得到,这里的P可以理解成阻抗控制的弹簧系数【防盗标记–盒子君hzj】,D可以理解成阻抗控制的质量惯性系数,建模时忽略了电机齿轮等摩檫力,故这个PD控制器可以理解成没有阻尼的阻抗控制器)
(4)同时,状态估计器估计躯干的状态,这里的状态估计没有用到卡尔曼滤波器,状态估计的第一阶段先使用同时使用IMU陀螺仪和加速度计读数估计躯干方向;【防盗标记–盒子君hzj】状态估计的第二阶段使用估计的躯干方向以及腿部的运动学测量来估计基本位置和速度,从而将对身体朝向的估计与对身体位置和速度的估计解耦,【防盗标记–盒子君hzj】状态估计其中还包含了对足端接触布尔值的估计,同时把估计的状态反馈给期望轨迹生成器
(5)同时,步态规划切换器使用基于相位周期进行步态切换,决定每条腿在该相位的支/摆状态,根据站立周期规划处机器人的不同步态【防盗标记–盒子君hzj】
(6)同时机器人的可视化数据也会反馈给仿真动力学引擎进行实时仿真及GUI显示