腿足机器人之二- 运动控制概览

腿足机器人之二运动控制概览

    • 高层运动规划
      • MPC
      • RL
    • 中层逆运动学和逆动力学
    • 底层执行器控制
    • 传感器校正

上一篇博客是腿足机器人的骨架和关节的机械和电气组件,关节不仅需要通过机械设计实现复杂的运动能力,还必须通过电子组件和控制系统来精确控制这些运动。

和人类类似,本篇博客介绍腿足机器人运动系统的设计,机器人关节的控制系统是其运动的大脑,负责解读传感器反馈并向执行器发送指令,以精确调节位置、速度和扭矩。这一系统由传感器、控制器和执行器共同工作,确保运动控制的准确性和效率。

腿足机器人的所有运动,最终都会反应在对关节的控制上,大体上关节的运动一般采用运动学和强化学习两类方法,如运动学逆解算法用于规划关节角度(如肘式/膝式腿的几何求解),强化学习(RL)优化步态生成,如NVIDIA Isaac Lab端侧部署方案。

机器人上的各个传感器连续监测关节的位置、速度及其他相关参数,并向控制器提供反馈。控制器将这一反馈与期望的设定值进行比较,生成纠正信号以调整关节的运动。这种反馈回路允许实时调整,确保关节即使在外部干扰或负载变化的情况下也能准确地遵循预定轨迹。

闭环控制系统提供高精度和稳定性,非常适合需要精确定位和运动控制的应用,如机器人手术和制造过程。

早期机器人运动控制以波士顿波力Spot机器人为典型代表,其采用的PD+前馈控制技术,可以见第三篇博客。
而当前较新主流腿足机器人运动控制以PD+MPC/强化学习为主,流程大致可以分为高层运动规划、中层逆运动学与逆动力学以及底层执行器控制三层。本篇博客先概览简要介绍各个部分,以建立top-down机器人运动控制的整体概念。

一个完整的动作流程大致如下:

传感器数据(IMU、关节编码器、力传感器)→ MPC规划/RL规划 → 逆运动学 → 关节目标角度 → PD控制器 → 电机驱动信号

高层运动规划

在接收到运动指令(行走、奔跑)之后,高层算法(模型预测控制(MPC)或者强化学习(RL)算法)负责全局规划,底层PD确保实时跟踪,两者协同实现动态运动。

MPC

在奔跑/行走的动作规划和控制中,高层运动规划模块主要完成步态生成和轨迹生成两部分。其运行频率在50-100Hz(每10-20ms规划一次)。

对于步态生成则可基于机器人动力学模型,滚动规划未来几步的质心(CoM)轨迹和足端接触力,确保动态平衡,在行走的时候,计算支撑多边形内的零力矩点(ZMP)位置,防止跌倒。躯干姿态和加速度可以使用IMU测量,足端接触力科使用六轴力传感器测量,关节的角度和速度使用关节编码器测量。

对于轨迹生成包括足端轨迹和质心轨迹,足端轨迹指的是规划摆动退的抛物线轨迹(奔跑时)或直线轨迹(行走时),质心轨迹是指通过简化模型(如倒立摆模型)生成质心高度和水平位置的变化曲线。

以ANYmal机器人为例
在这里插入图片描述

传感器数据--->MPC估计--->生成$\theta_{desired}$--->PD控制器--->电机驱动
  • MPC层:每50ms计算一次未来0.5秒的足端轨迹和接触力
  • PD层:以1kHz频率跟踪关节角度,公式:
    τ = K p ( θ d e s i r e d − θ ) + K d ( θ ˙ d e s i r e d − θ ) \tau =K_p(\theta_{desired}-\theta) + K_d(\dot \theta_{desired}-\theta) τ=Kp(θdesiredθ)+Kd(θ˙desiredθ)

模型预测控制存在如下挑战:

挑战解决方案
模型不准确自适应控制(如在线参数估计) + 鲁棒PD参数
执行器延迟提高控制频率 + 预测滤波(如卡尔曼滤波)
地面接触突变阻抗控制(调节PD的 K p K_p Kp为虚拟刚度, K d K_d Kd为虚拟阻尼)
实时计算资源限制简化模型(如单刚体模型) + 代码优化(定点运算、并行计算)
齿轮箱背隙、电机饱和等非线性问题通过前馈和抗饱和策略避免性能下降
多关节联动导致力矩耦合结合解耦控制或全状态反馈(如LQR)
地面反作用力突变力传感器反馈 + 自适应阻抗控制(动态调整 K p K_p Kp K d K_d Kd)

RL

强化学习的目标是通过试错学习最优策略(Policy),其输出形式取决于具体任务和算法设计。在腿足机器人中,RL的输出通常分为两类:

输出类型描述示例优点缺点
直接关节控制RL策略直接输出各关节的目标角度或扭矩,无需中间计算策略网络输出12个关节的目标角度(对应机器人自由度)1.无需依赖精确的动力学模型,RL通过仿真学习直接优化关节动作; 2.适合复杂动作(如翻滚、跳跃),传统模型难以精确建模1. 需要大量训练数据,计算成本高 2.可解释性差,难以手动调整策略
高层指令生成RL输出末端执行器轨迹(如足端位置)或质心运动指令,需通过IK转换为关节角度RL规划足端轨迹,再通过逆运动学求解关节角度1.结合传统控制方法(如IK),提高稳定性和可解释性 2.减少RL策略的复杂度(输出维度更低)依赖逆运动学求解的准确性,可能受模型误差影响

上面的两种在业界都有案例,比如OpenAI的Dactyl机械手通过RL直接控制关节扭矩实现灵活操作,而MIT Cheetah 3通过RL优化足端轨迹,再通过IK控制关节。也有在RL+IK的基础上再结合MPC的混合架构,如适应复杂地形的波士顿动力Atlas机器人。

RL方法的一个挑战是获得训练数据,在机器人行走之前,采集数据的成本是高昂的,所以一般训练都是先基于仿真环境,在在仿真中定义奖励函数(如前进速度、能量效率、姿态稳定性),然后通过PPO或SAC算法优化策略模型预测结果,然后再迁移到实际的环境中。

挑战解决方案
RL训练效率低使用仿真-现实迁移(Sim2Real)技术,结合域随机化(Domain Randomization)
IK求解不唯一引入优化目标(如最小能量、关节力矩平滑),通过QP求解唯一解
实时性不足部署轻量化神经网络(如TinyML),推理加速框架tensorRT,或使用分层控制(高频PD + 低频RL更新)

现代系统(如ANYmal、Unitree)倾向于结合RL高层规划与传统控制(IK+PD),兼顾学习能力与实时可靠性。

中层逆运动学和逆动力学

运动学关注的是机器人在不受外力影响时的运动状态,如位置、速度和加速度。而动力学则考虑在实际运动过程中力和扭矩如何影响机器人的运动,这包括了对刚体的质量分布及其与关节相互作用的分析。这两个领域是理解机器人如何与外界相互作用并执行任务的基础,对优化机器人的设计和功能至关重要。

在高层中主要是机器人质心规划,逆运动学(IK)是将质心轨迹和足端轨迹映射到各关节角度。例如,给定足端目标位置 ( x , y , z ) (x,y,z) (x,y,z),根据足端轨迹方程(如抛物线轨迹,根据 v v v水平速度, h h h抬腿高度, T T T摆动时间)求解髋、膝、踝关节的角度 ( θ h i p , θ k n e e , θ a n k l e ) (\theta_{hip}, \theta_{knee}, \theta_{ankle}) (θhip,θknee,θankle),这可以使用雅可比矩阵或者数值优化方法(如梯度下降)实时计算求解。

逆动力学则是计算关节所需要的力矩 τ \tau τ,满足运动学和动力学约束:
τ = M ( q ) q ¨ + C ( q , q ˙ ) q ˙ + G ( q ) + J T F e x t \tau = M(q) \ddot q + C(q,\dot q)\dot q + G(q) +J^{T}F_{ext} τ=M(q)q¨+C(q,q˙)q˙+G(q)+JTFext

其中 M M M是惯性矩阵, C C C是科氏力, G G G是重力, J J J是雅可比矩阵, F e x t F_{ext} Fext是地面反作用力。

底层执行器控制

腿足机器人的驱动器控制算法(如PID和PD)是实现其运动稳定性和动态响应的核心技术。
PID/PD):跟踪高层指令,实现高频率(1-10kHz,即每0.1~1ms更新一次)的精确执行。
以PD控制为例,为了跟踪关节目标角度 q d e s i r e d q_{desired} qdesired和速度 q ˙ d e s i r e d \dot q_{desired} q˙desired,需要给电机一定的力矩,其计算如下:

τ f b = K p ( q d e s i r e d − q a c t u a l ) + K d ( q ˙ d e s i r e d − q ˙ a c t u a l ) \tau_{fb}=K_p(q_{desired}-q_{actual})+K_d(\dot q_{desired}-\dot q_{actual}) τfb=Kp(qdesiredqactual)+Kd(q˙desiredq˙actual)

由于机器人自重、惯性带来的影响,可以加上逆动力学计算的理想力矩 τ f f \tau_{ff} τff,则最终的力矩可以表示为:
τ = τ f f + τ f b \tau = \tau_{ff} + \tau_{fb} τ=τff+τfb
这一力矩通过液压阀或者电机驱动器转为物理动作。

传感器校正

开篇提到一个完整动作流程的第一步是传感器的数据获取,然后才是估计姿态,这是因为传感器有噪声、环境也不确定性,此外还有动态系统的随机性。这里使用到的是概率机器人理论(后续博客揭示),这里简要看一下。

腿足机器人需要实时估计自身姿态(如躯干角度、关节位置)和运动状态(如速度、加速度),但传感器数据(IMU、编码器、力传感器)通常包含噪声。其核心思想是先不参考传感器数据,会有一个先验状态,然后结合传感器对状态进行修正,使用到的方法有卡尔曼滤波、粒子滤波等。

此外在腿足机器人动态环境中运动时,需考虑障碍物位置、地面摩擦系数等不确定性因素。概率方法用于增强规划的鲁棒性,会使用概率路线图(Probabilistic Roadmap, PRM)、蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)等方法评估候选路径和不同动作序列成功的概率。

概率方法的核心作用

控制流程概率方法解决的问题
状态估计卡尔曼滤波、粒子滤波传感器噪声与动态不确定性
运动规划PRM、MCTS环境障碍物与地形不确定性
强化学习随机策略、熵正则化探索-利用权衡与策略鲁棒性
模型预测控制高斯过程、随机MPC动力学模型误差与外部干扰
足地交互贝叶斯估计、概率摩擦锥接触状态与地面特性不确定性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17176.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略

一、前言 在企业生产环境,k8s高可用是一个必不可少的特性,其中最通用的场景就是如何在 k8s 集群宕机一个节点的情况下保障服务依旧可用。部署高可用k8s集群对于企业级云平台来说是一个根本性的原则,容错、服务可用和数据安全是高可用基础设施的关键。本文是在青云上利用青云…

软件项目估算偏差的5 大源头及解决方案

软件项目成本估算偏差往往导致资金紧张,资源投入受限,进度延误无法按时交付,为控制成本还可能牺牲质量,引发团队士气低落、客户不满,严重时项目直接失败 。 因此,及时解决或降低项目偏差就非常重要&#xf…

树莓派学习

树莓派4B 基础操作 开机 开机要主要先接好线再通电 关机 先在系统里面关机再断电 可以在界面里面点击关机,或者使用命令行 使用网线连接到树莓派 用笔记本的以太网口接线到树莓派 在网络连接里面打开WLAN的网络共享,共享选择以太网口 在cmd里面输…

Jenkins 新建配置 Freestyle project 任务 六

Jenkins 新建配置 Freestyle project 任务 六 一、新建任务 在 Jenkins 界面 点击 New Item 点击 Apply 点击 Save 回到任务主界面 二、General 点击左侧 Configure Description:任务描述 勾选 Discard old builds Discard old builds:控制何时…

一场始于 Selector Error 的拯救行动:企查查数据采集故障排查记

时间轴呈现事故进程 17:00:开发人员小李正在尝试利用 Python 爬虫从企查查(https://www.qcc.com)抓取公司工商信息。原本一切正常,但突然发现信息采集失败,程序抛出大量选择器错误。17:15:小李发现&#x…

HCIA项目实践---OSPF的基本配置

9.5.12 OSPF的基本配置 (所搭环境如上图所示) A 先配置IP地址 (先进入路由器R1的0/0/0接口配置IP地址,再进入环回接口配置IP地址) (配置R2路由器的0/0/0和0/0/1以及环回接口的IP地址) (置R3路由器的0/0/0接…

Java练习(20)

ps:练习来自力扣 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 class Solution {pu…

在ArcGIS JS API中使用WebGL实现波纹扩散特效

在现代WebGIS开发中,ArcGIS JS API 是一个非常强大的工具,它允许开发者创建丰富的地理信息应用。结合WebGL技术,我们可以实现更加复杂和炫酷的可视化效果。本文将介绍如何使用ArcGIS JS API结合WebGL实现一个波纹扩散特效。 波纹扩散效果 1 概…

基于图像处理的裂缝检测与特征提取

一、引言 裂缝检测是基础设施监测中至关重要的一项任务,尤其是在土木工程和建筑工程领域。随着自动化技术的发展,传统的人工巡检方法逐渐被基于图像分析的自动化检测系统所取代。通过计算机视觉和图像处理技术,能够高效、精确地提取裂缝的几何特征,如长度、宽度、方向、面…

支持向量机原理

支持向量机(简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域。如果不考虑集成学习的算法,不考虑特定的训练数据集,尤其在分类任务中表现突出。在分类算法中的表现SVM说是排…

关于conda换镜像源,pip换源

目录 1. 查看当前下载源2. 添加镜像源2.1清华大学开源软件镜像站2.2上海交通大学开源镜像站2.3中国科学技术大学 3.删除镜像源4.删除所有镜像源,恢复默认5.什么是conda-forge6.pip换源 1. 查看当前下载源 conda config --show channels 如果发现多个 可以只保留1个…

消息中间件:RabbitMQ镜像集群部署配置全流程

目录 1、特点 2、RabbitMQ的消息传递模式 2.1、简单模式(Simple Mode) 2.2、工作队列模式(Work Queue Mode) 2.3、发布/订阅模式(Publish/Subscribe Mode) 2.4、路由模式(Routing Mode&am…

财务主题数据分析-企业盈利能力分析

企业盈利能力数据主要体现在财务三张表中的利润表里面,盈利能力需要重点需要关注的指标有:毛利率、净利率、净利润增长率、营业成本增长率等; 接下来我们分析一下某上市公司披露的财务数据,看看该企业盈利能力如何: …

图数据库neo4j进阶(一):csv文件导入节点及关系

CSV 一、load csv二、neo4j-admin import<一>、导入入口<二>、文件准备<三>、命令详解 一、load csv 在neo4j Browser中使用Cypher语句LOAD CSV,对于数据量比较大的情况,建议先运行create constraint语句来生成约束 create constraint for (s:Student) req…

npm包管理工具

包管理工具 npm 包管理工具 介绍 Node Package Manager&#xff1a;也就是Node包管理工具但是目前已经不仅仅是Node包管理器&#xff0c;在前端项目中我们也使用它来管理依赖的包比如 vue、vue-router、vuex、express、koa 下载和安装 npm属于Node的管理工具&#xff0c;安…

MyBatis映射文件 <resultMap> 元素详解与示例

引言 <resultMap> 是 MyBatis 中最核心的映射配置元素&#xff0c;用于解决数据库字段与 Java 对象属性之间的复杂映射问题&#xff0c;尤其是字段名不一致、嵌套对象关联、集合映射等场景。ResultMap 的设计思想是&#xff0c;对简单的语句做到零配置&#xff0c;对于复…

时间盲注Boolen盲注之获取表、列、具体数据的函数

时间盲注 时间盲注&#xff08;Time-Based Blind SQL Injection&#xff09;是一种利用数据库响应时间的差异来推断数据的SQL注入技术。它的核心原理是通过构造特定的SQL查询&#xff0c;使得数据库在执行查询时产生时间延迟&#xff0c;从而根据延迟的有无来推断数据。 时间…

通过操作系统中的IO模型理解Java中的BIO,NIO,AIO

操作系统中的三种IO模型 阻塞I/O 先来看看阻塞 I/O&#xff0c;当用户程序执行 read&#xff0c;线程会被阻塞 一直等到内核数据准备好&#xff0c;并把数据从内核缓冲区拷贝到应用程序的缓冲区中&#xff0c;当拷贝过程完成&#xff0c;read 才会返回 注意&#xff1a;阻塞…

JUC并发—2.Thread源码分析及案例应用

大纲 1.什么是线程以及并发编程 2.微服务注册中心案例 3.以工作线程模式开启微服务的注册和心跳线程 4.微服务注册中心的服务注册功能 5.微服务注册中心的心跳续约功能 6.微服务的存活状态监控线程 7.以daemon模式运行微服务的存活监控线程 8.一般不常用到的ThreadGrou…

Excel函数公式合并相同项目的行数据

今天公司同事问我&#xff0c;如何将相同项目的数据行的行数据合并起来 于是我首先想到textjoin函数&#xff0c;但是条件筛选怎么办&#xff0c;后来想了下&#xff0c;可以用filter函数或者if IF公式如下 TEXTJOIN("|",TRUE,IF($A$2:$A$30A2,$B$2:$B$30,"&q…