Atlas算法体系概览
Atlas的算法核心可以分解为以下几个关键层面:

- 核心控制与动态平衡
- 运动规划与轨迹生成
- 感知与环境理解
- 高层任务规划与决策
下面我们逐一展开讲解。
核心控制与动态平衡
这是Atlas最“神奇”的部分,也是其稳定性和灵活性的基石,它不仅仅是一个简单的PID控制器,而是一个复杂的、基于模型的控制系统。
a) 全身控制
Atlas不是孤立地控制每个关节,而是将整个机器人视为一个动态系统来控制,这意味着控制算法会考虑所有关节之间的相互作用、惯性、重力以及外部力(如被推搡)。
- 核心思想:控制器的目标是生成一组关节力矩,使得机器人的整体运动(如质心位置、身体姿态)能够精确地跟踪期望的轨迹。
- 技术实现:通常使用逆动力学方法,给定期望的全身运动轨迹(如躯干位置、脚部位置),算法可以反向计算出实现这个轨迹所需要的每个关节的精确力矩。
- 关键挑战:实时性,Atlas需要在毫秒级别内完成这个复杂的计算。
b) 平衡与状态估计
这是Atlas在被外界干扰后能迅速恢复的关键。

- 状态估计:算法需要实时“感知”机器人的当前状态,它融合了来自多种传感器的数据:
- IMU (惯性测量单元):提供加速度和角速度,是判断身体是否倾斜的核心。
- 关节编码器:提供每个关节的精确角度和速度。
- 激光雷达/深度相机:提供与地面的相对位置信息。
- 力/力矩传感器:安装在脚部,提供地面反作用力,这是判断是否打滑或受到冲击的关键。
- 平衡策略:当算法检测到机器人失去平衡时(IMU显示身体前倾),会立即触发一个平衡恢复策略,这个策略会快速重新计算期望的质心位置和脚步位置,并通过全身控制器调整全身姿态,以“迈出一步”或“调整姿势”的方式来恢复平衡,这就像我们在快摔倒时会本能地迈出一步一样。
c) 模型预测控制
这是目前最先进、最主流的控制策略,也是Atlas能够完成复杂动态动作(如后空翻)的“秘密武器”。
- 核心思想:在每一个控制周期(例如10毫秒),算法会:
- 预测:基于当前状态和机器人模型,预测未来一小段时间(例如0.5秒)内机器人的可能行为。
- 优化:在预测的时间窗口内,寻找一个最优的控制输入序列(即关节力矩序列),使得某个成本函数最小化,这个成本函数可以包括:与目标轨迹的偏差、关节力矩的大小、能量消耗等。
- 执行:只执行这个最优序列中的第一步。
- 循环:在下一个控制周期,重新获取最新的机器人状态,然后重复上述过程。
- 优势:MPC具有极强的鲁棒性和前瞻性,它不仅能处理当前的不确定性,还能提前规划未来的动作,以应对即将发生的动态变化,例如在跳跃前精确计算起跳时机和姿态。
运动规划与轨迹生成
光有控制器还不够,还需要告诉控制器“做什么”和“怎么做”,这就是运动规划的职责。
a) 足部轨迹规划
对于双足机器人来说,脚的轨迹至关重要。
- 关键点:算法需要规划脚的支撑点,在行走、跑步或跳跃时,一只脚作为支撑点(保持与地面接触),另一只脚则在空中摆动。
- 生成方法:通常使用样条曲线(如贝塞尔曲线、B样条)来生成平滑、自然的足部轨迹,确保脚在落地和抬升时冲击力最小,且运动流畅。
b) 全身轨迹优化
这是Atlas完成后空翻等高难度动作的核心。
- 挑战:后空翻是一个高度非线性的、复杂的动力学过程,需要同时规划躯干的旋转、手臂的摆动、膝关节的发力、脚的蹬地时机等。
- 技术实现:研究人员会先定义一个初始的、可能不完美的轨迹(通过运动捕捉或手动设计),使用轨迹优化算法(如CHOMP, TrajOpt)对这个轨迹进行迭代优化。
- 优化目标:优化的目标函数通常包括:
- 动力学可行性:确保轨迹在物理上是可实现的(力矩、加速度等在机器人的能力范围内)。
- 平滑性:避免突变,使动作看起来更自然。
- 任务目标:如“身体旋转360度”、“稳稳落地”。
- 能量效率:尽量减少不必要的能量消耗。
感知与环境理解
机器人需要“看见”和“理解”世界,才能做出正确的决策。
a) 立体视觉与SLAM
Atlas使用头部的立体摄像头来构建周围环境的3D模型。
- 深度估计:通过左右两个摄像头的视差,计算出场景中每个像素点的深度,从而生成深度图。
- SLAM (即时定位与地图构建):Atlas在移动时,会利用深度图和IMU数据,实时构建环境的3D点云地图,同时确定自身在地图中的精确位置,这对于在复杂地形中行走至关重要。
b) 地形识别与适应
当Atlas在户外行走时,地面并非平坦。
- 算法流程:
- 感知:通过摄像头和激光雷达感知前方的地面。
- 分类:使用机器学习/深度学习模型(如语义分割网络)将地面分类为“平地”、“草地”、“岩石”、“台阶”等。
- 适应:根据地形类型,运动规划器会调整步态参数,在草地上步幅会变小、步频会提高以增加稳定性;在台阶上会精确计算抬腿高度和落脚点。
高层任务规划与决策
这是最顶层的“大脑”,负责将一个抽象的指令(如“拿起那个箱子”)分解为一系列具体的动作。
- 技术:通常基于行为树或分层任务网络。
- 示例 - “拿起箱子”:
- 目标:拿起箱子。
- 分解:
- 子任务1:导航到箱子附近。
- 需要用到:SLAM、路径规划算法(如A或RRT)*
- 子任务2:调整身体姿态,面向箱子。
- 子任务3:规划抓取动作。
- 需要用到:逆运动学(计算手臂关节角度)、抓取力规划
- 子任务4:执行抓取,并提起箱子。
- 需要用到:全身控制器、力/力矩反馈(确保抓牢且不损坏箱子)
- 子任务5:将箱子搬运到目标位置。
- 子任务1:导航到箱子附近。
- 执行:按顺序执行这些子任务,并根据执行结果动态调整。
算法的协同工作
Atlas的一次流畅的奔跑,是这些算法完美协同的结果:
- 感知:摄像头和IMU感知到前方地形。
- 高层规划:决策系统决定采用“跑步”步态。
- 运动规划:轨迹生成器根据当前状态和跑步步态模板,生成未来几秒内躯干和四肢的期望轨迹。
- 模型预测控制:MPC控制器以极高的频率(每秒100次)循环执行:
- 预测:预测未来状态。
- 优化:计算最优的关节力矩。
- 执行:发出指令,驱动电机。
- 反馈:IMU和关节编码器将实际状态反馈给MPC,形成闭环控制。
- 动态平衡:如果被侧面推了一下,状态估计模块立即检测到扰动,MPC会迅速调整优化目标,生成恢复平衡的轨迹,机器人会像人类一样侧身迈出一步来稳住自己。
Atlas的算法是一个集成了全身控制、模型预测控制、轨迹优化、SLAM和机器学习的复杂系统,它的成功不仅在于单个算法的先进性,更在于这些算法如何被无缝地集成在一个实时、鲁棒的框架中,实现了机器人从感知到决策再到执行的完整闭环。
标签: Atlas机器人核心算法突破 Atlas机器人动态平衡算法 Atlas机器人运动控制算法