可展开柔顺腿(DCL)技术详解文档
一、研究背景与动机 1.1 四足机器人跳跃的挑战 当前四足机器人 如Unitree Go2 在跳跃能力上受限于: 电机扭矩饱和 : 电机峰值扭矩不足以产生爆发性跳跃 功率密度限制 : 传统刚性驱动系统无法在短时间内释放足够能量 动力学约束 : 地面摩擦力、运动学极限限制了速度生成 1.2 现有解决方案的局限 并联弹性执行器 PEA : 虽能增强功率密度,但存在"寄生刚度"问题 弹性元件永久集成在运动链中 在正常行走时增加CoT 运输成本…
FIELD_GUIDE
FIELD GUIDE
Use the guide rail to jump between sections.
一、研究背景与动机
1.1 四足机器人跳跃的挑战
当前四足机器人(如Unitree Go2)在跳跃能力上受限于:
- 电机扭矩饱和: 电机峰值扭矩不足以产生爆发性跳跃
- 功率密度限制: 传统刚性驱动系统无法在短时间内释放足够能量
- 动力学约束: 地面摩擦力、运动学极限限制了速度生成
1.2 现有解决方案的局限
- 并联弹性执行器(PEA): 虽能增强功率密度,但存在"寄生刚度"问题
- 弹性元件永久集成在运动链中
- 在正常行走时增加CoT(运输成本)
- 限制非爆发性任务的关节控制带宽
- 变刚度执行器(VSA): 需要复杂传动机构和额外电机,增加重量
1.3 生物学启发
沫蝉(Philaenus spumarius)的半月突机制:
- 利用弹性蛋白质(resilin)储存能量
- 通过"半月突过程"(semi-lunar process)实现能量快速释放
- 关键特征: 扇形截面几何结构 + 非线性刚度曲线
二、核心设计原理
2.1 整体架构
DCL = 扇形柔顺模块(SSCM) + 可展开翻转机构 + 刚性支撑结构
[机器人大腿]
↓
[推杆(2) - 线性驱动]
↓
[旋转套筒(4) - 螺旋凸轮约束]
↓
[SSCM晶格结构(1) - 能量储存]
↓
[导向销(7) + 滑动块(8)]
2.2 扇形柔顺模块(SSCM)设计
2.2.1 几何形态
- 扇形截面: 模仿沫蝉转子关节的弧形结构
- 角度范围: 深蹲时压缩约30°至90°
- 功能:
- 几何兼容性: 最大化关节约束内的储能体积
- 渐进刚度: 扇形形状产生非均匀压缩(内半径压缩更密集)
2.2.2 材料选择: PEBA (Arkema Pebax® 3533 SP 01)
为什么选择PEBA而非TPU/TPE?
| 特性 | PEBA | TPU/TPE |
|---|---|---|
| 弹性模量 | 高 | 中等 |
| 能量损失因子 | 低(高回弹) | 较高 |
| 疲劳寿命 | 优异 | 一般 |
| 密度 | 低(减轻质量) | 较高 |
| 抗弯曲性 | 优秀 | 一般 |
PEBA的组成:
- 硬段(聚酰胺): 提供刚度和物理交联
- 软段(聚醚): 提供柔韧性和弹性
超弹性本构模型: 采用Marlow势能模型
- 基于制造商单轴拉伸数据
- 泊松比: 0.48(近似不可压缩)
2.2.3 Gyroid晶格结构
为什么选择Gyroid而非Diamond/Schwarz?
| 晶格类型 | 优势 | 劣势 |
|---|---|---|
| Diamond | 高刚度 | 节点应力集中 |
| Schwarz | 高刚度 | 节点应力集中 |
| Gyroid | 各向同性 + 自支撑 | 刚度略低 |
Gyroid数学定义:
sin(x)cos(y) + sin(y)cos(z) + sin(z)cos(x) = t
其中 t 为常数,控制平均曲率
设计优势:
- 各向同性: 在不同加载角度下性能稳定
- 自支撑: 3D打印时无需支撑结构(减少后处理)
- 连续变化倾角: 避免阶梯效应,提高打印质量
- 结构稳定性: 减少测试时不同角度的复杂性
优化参数:
- 使用nTopology软件生成晶格
- 通过Hypermesh进行网格优化
- 在Abaqus中进行FEA验证
三、可展开翻转机构
3.1 设计目标
解决"寄生刚度"问题: 在正常行走时不影响关节控制,仅在跳跃时激活
3.2 机构运动学
3.2.1 收起状态(Stowed State)
- SSCM模块缩回至小腿侧面
- 与地面/站立姿态保持间隙
- 零寄生刚度: 不干扰正常步态
3.2.2 展开状态(Deployed State)
- 模块旋转90°对齐大腿
- 作为硬止挡接合PEBA晶格
- 储存弹性能量
3.3 传动链设计
运动转换机制:
垂直推杆(2)线性输入
↓
驱动滑动块(8)垂直平移
↓
导向销(7)约束 → 旋转套筒(4)螺旋运动
↓
SSCM模块(1)旋转90°
关键组件:
- 推杆(Push Rod, 2): 由外部线性驱动器驱动
- 旋转套筒(Rotating Sleeve, 4): 侧面安装导向销(7)
- 导向销(Guide Pin, 7): 强制螺旋凸轮约束
- 滑动块(Sliding Block, 8): 受内固定柱(6)约束,仅垂直移动
- 锁定销(Locking Pin, 9): 双稳态机械锁定(无需持续扭矩)
双稳态锁定机制:
- 在收起/展开状态时,锁定销卡入预设凹槽
- 无需持续驱动即可保持状态
- 避免能量浪费
四、有限元分析(FEA)与刚度建模
4.1 本构建模
4.1.1 超弹性材料模型
- Marlow势能: 严格复现制造商单轴测试数据
- 避免曲线拟合振荡: 不使用Yeoh等多项式模型
- 近似不可压缩性: 泊松比0.48
4.1.2 网格离散化
- 单元类型: 修正四面体单元(C3D10M)
- 优势:
- 对大变形下的网格畸变鲁棒
- 避免接触不稳定性
- 适合非线性几何
4.2 边界条件
4.2.1 运动学耦合
- 在膝关节旋转中心建立运动学耦合
- 复制Unitree Go2的物理关节机制
- 标准跳跃压缩范围: 约20°
4.2.2 扩展范围测试
- 将压缩角度扩展至45°
- 覆盖安全裕度(Safety Margin)
- 识别结构致密化起始点
4.3 刚度特性曲线
4.3.1 三区域划分
根据FEA结果(图7),刚度曲线分为:
-
工作区域(Operating Region): 0° < θ ≤ 29°
- 动态跳跃发生的区域
- 刚度渐进增长
-
安全裕度(Safety Margin): 29° < θ < 39°
- 10°缓冲区,防止突然触底
- 刚度快速上升
-
致密化区域(Densification Region): θ > 39°
- 结构完全压缩
- 刚度急剧增加(红色区域)
4.3.2 解析模型拟合
三阶多项式扭矩模型:
拟合精度:
- R² ≈ 0.87 (在工作区域内)
- 最大关节扭矩限制: 6.8N·m
- FEA验证: 在安全裕度内保持单调递增刚度
用途:
- 实时前馈控制
- 高保真度解析模型
- 避免全局拟合导致的局部精度损失
五、实验验证方法
5.1 实验平台
5.1.1 机器人平台
- 型号: Unitree Go2
- 质量: 基准组 656.3mm, 展开组 720.3mm
- 增重: 64mm (仅0.43%性能下降)
5.1.2 运动捕捉系统
- 系统: Luster FZ-Motion
- 精度: 0.1mm骨架点追踪
- 配置: 15个MoCap追踪球
- 躯干前侧: 1个
- 躯干两侧: 各2个
- 沿每条腿分布: 前、中、远端
刚体定义: 三标记配置定义唯一刚体,实现完整6-DoF姿态解算
5.2 实验分组
5.2.1 基准组(Baseline)
- 原始Unitree Go2,无附加结构
- 峰值高度: 656.3mm
- 有效跳跃高度: ΔH = 373.1mm
5.2.2 收起组(Stowed)
- 安装SSCM但保持收起状态
- 峰值高度: 654.9mm
- 有效跳跃高度: ΔH = 371.7mm
- 性能下降: -0.4% (可忽略不计)
5.2.3 展开组(Deployed)
- SSCM展开并参与能量储存
- 峰值高度: 720.3mm
- 有效跳跃高度: ΔH = 437.1mm
- 性能提升: +17.1%
5.3 控制变量
标准化蹲高: 所有试验中蹲高 = 283.1mm
- 消除电池电压下降的影响
- 确保电机扭矩-速度包络一致性
- 每组测试前充电至>95% SoC
统计可靠性: 每组N=5次试验
5.4 性能评估指标
相对性能变化:
其中:
- ΔH = H_max - H_base
- H_max: 躯干质心最大高度
- H_base: 蹲姿时质心高度
六、关键技术参数总结
6.1 材料参数
| 参数 | 数值 |
|---|---|
| 材料 | Arkema Pebax® 3533 SP 01 |
| 泊松比 | 0.48 |
| 本构模型 | Marlow超弹性势能 |
| 打印技术 | 3D打印(FDM/SLS) |
6.2 几何参数
| 参数 | 数值 |
|---|---|
| 扇形角度范围 | 30° - 90° |
| 工作压缩角度 | 0° - 29° |
| 安全裕度 | 29° - 39° |
| 旋转角度(展开) | 90° |
6.3 性能参数
| 指标 | 基准组 | 展开组 | 提升 |
|---|---|---|---|
| 有效跳跃高度 | 373.1mm | 437.1mm | +17.1% |
| 峰值高度 | 656.3mm | 720.3mm | +64mm |
| 质量增加 | - | 64g | +0.43% |
七、控制策略与算法
7.1 当前控制方法
手动触发 + 被动释放:
- 展开机构由外部线性驱动器手动触发
- 能量储存在深蹲阶段被动发生
- 释放时刻由机器人自然跳跃动作决定
7.2 刚度模型集成
前馈控制潜力:
- 三阶多项式模型可集成到控制器
- 实时补偿SSCM的非线性刚度
- 优化电机扭矩分配
7.3 未来控制方向
7.3.1 模型预测控制(MPC)
目标函数:约束:- 地面接触约束
7.3.2 强化学习(RL)
状态空间:
- 关节角度、角速度
- SSCM压缩状态
- 躯干姿态、速度
动作空间:
- 四腿关节扭矩
- SSCM展开时机(离散)
奖励函数:
R = w₁·jump_height - w₂·energy_cost - w₃·landing_impact
八、优化方向与研究建议
8.1 立即可实施(1-2个月)
8.1.1 自动化展开机制
当前问题: 手动触发,无法动态响应 解决方案:
- 集成微型伺服电机(如Dynamixel XL330)
- 基于IMU数据的触发逻辑:
if (squat_depth > threshold) and (vertical_velocity < 0): trigger_deployment()
8.1.2 参数优化
晶格密度优化:
- 当前: 固定Gyroid参数
- 优化: 变密度晶格(内层密集,外层稀疏)
- 工具: nTopology + 拓扑优化算法
材料配比:
- 测试不同Shore硬度的PEBA
- 探索硬段/软段比例对储能的影响
8.2 中期研究(3-6个月)
8.2.1 方向性跳跃
前跳实现:
- 四腿异步展开策略
- 后腿先展开 → 前腿延迟展开
- 产生俯仰力矩
侧跳实现:
- 单侧腿(左/右)展开
- 产生滚转力矩
8.2.2 着陆能量回收
双向储能机制:
- 着陆冲击 → 压缩SSCM → 储存能量
- 下次跳跃时释放
- 需要单向锁止机构防止意外释放
8.2.3 四腿协同优化
当前: 仅后腿安装DCL 优化: 四腿全部安装
- 挑战: 质量增加、控制复杂度
- 潜在收益: 跳跃高度可能>50%提升
8.3 长期创新(6-12个月)
8.3.1 主动变刚度系统
概念: 可调节晶格压缩程度 实现:
- 内置气动/液压腔室
- 改变内部压力 → 调节有效刚度
- 适应不同地形和任务
8.3.2 完整仿生肌腱系统
灵感: 袋鼠跟腱 + 沫蝉半月突 设计:
- 串联弹性执行器(SEA) + DCL
- SEA处理连续任务
- DCL处理爆发性任务
8.3.3 极限环境应用
目标: 跨越>1米障碍物 需求:
- 更高能量密度材料(碳纤维复合材料)
- 更大压缩行程(当前30°→扩展至60°)
- 更强的锁定机构
九、算法实现伪代码
9.1 SSCM刚度模型
class SSCMStiffnessModel:
def __init__(self):
# 三阶多项式系数(从FEA拟合)
self.alpha_3 = 0.0234 # 示例值
self.alpha_2 = 0.1567
self.alpha_1 = 0.8923
self.alpha_0 = 0.0
# 区域边界
self.operating_limit = 29 # 度
self.safety_limit = 39
def compute_torque(self, theta_deg):
"""
计算给定压缩角度下的扭矩
theta_deg: 压缩角度(度)
返回: 扭矩(N·m)
"""
if theta_deg < 0:
return 0
elif theta_deg <= self.operating_limit:
# 工作区域: 使用多项式模型
theta = np.deg2rad(theta_deg)
tau = (self.alpha_3 * theta**3 +
self.alpha_2 * theta**2 +
self.alpha_1 * theta +
self.alpha_0)
return tau
elif theta_deg <= self.safety_limit:
# 安全裕度: 快速增长
return self.compute_torque(self.operating_limit) * \
(1 + 5*(theta_deg - self.operating_limit)/10)
else:
# 致密化区域: 极高刚度
return float('inf') # 实际应避免进入此区域
9.2 跳跃控制器
class JumpController:
def __init__(self, robot, sscm_model):
self.robot = robot
self.sscm = sscm_model
self.state = "IDLE" # IDLE, SQUAT, DEPLOY, JUMP, LAND
def update(self, dt):
if self.state == "IDLE":
if self.detect_jump_command():
self.state = "SQUAT"
self.target_squat_height = 0.283 # 标准化蹲高
elif self.state == "SQUAT":
# 执行深蹲
current_height = self.robot.get_com_height()
if current_height <= self.target_squat_height:
self.state = "DEPLOY"
self.trigger_sscm_deployment()
elif self.state == "DEPLOY":
# 等待SSCM展开完成(90°旋转)
if self.sscm.is_deployed():
self.state = "JUMP"
elif self.state == "JUMP":
# 计算总扭矩 = 电机扭矩 + SSCM扭矩
for leg in self.robot.legs:
theta_compression = leg.get_knee_compression()
tau_sscm = self.sscm.compute_torque(theta_compression)
tau_motor = self.compute_motor_torque(leg)
tau_total = tau_motor + tau_sscm
leg.apply_torque(tau_total)
# 检测离地
if self.robot.is_airborne():
self.state = "LAND"
elif self.state == "LAND":
# 着陆控制
if self.robot.is_grounded():
self.retract_sscm()
self.state = "IDLE"
def compute_motor_torque(self, leg):
"""
考虑SSCM补偿的电机扭矩计算
"""
# 期望总扭矩(来自轨迹规划)
tau_desired = leg.get_desired_torque()
# SSCM提供的扭矩
theta = leg.get_knee_compression()
tau_sscm = self.sscm.compute_torque(theta)
# 电机只需补偿差值
tau_motor = tau_desired - tau_sscm
# 限幅
tau_motor = np.clip(tau_motor, -6.8, 6.8)
return tau_motor
9.3 FEA优化脚本
import numpy as np
from scipy.optimize import minimize
class LatticeOptimizer:
def __init__(self, target_stiffness_curve):
self.target = target_stiffness_curve
def objective(self, params):
"
优化目标: 最小化实际刚度与目标刚度的差异
params: [cell_size, strut_thickness, density]
"""
cell_size, thickness, density = params
# 运行FEA仿真(简化为查表)
simulated_curve = self.run_fea_simulation(
cell_size, thickness, density
)
# 计算误差
error = np.sum((simulated_curve - self.target)**2)
# 添加质量惩罚
mass = self.estimate_mass(cell_size, thickness, density)
mass_penalty = 0.1 * mass
return error + mass_penalty
def optimize(self):
# 初始猜测
x0 = [5.0, 1.0, 0.3] # mm, mm, ratio
# 约束
bounds = [
(3.0, 10.0), # cell_size
(0.5, 2.0), # thickness
(0.2, 0.5) # density
]
result = minimize(
self.objective, x0,
method='L-BFGS-B',
bounds=bounds
)
return result.x
十、实验复现指南
10.1 硬件清单
- 机器人: Unitree Go2 (或类似四足平台)
- 3D打印机:
- FDM打印机(用于PLA刚性部件)
- SLS打印机(用于PEBA柔性部件,推荐EOS P396)
- 材料:
- Arkema Pebax® 3533 SP 01 (约500g)
- PLA/ABS (刚性结构)
- 运动捕捉: Luster FZ-Motion或OptiTrack系统
- 线性驱动器: 用于触发展开机构
10.2 制造流程
- CAD建模:
- 使用nTopology生成Gyroid晶格
- 导出STL文件
- 3D打印:
- PEBA部件: SLS打印,层厚0.1mm
- 刚性部件: FDM打印,100%填充
- 组装:
- 安装推杆、旋转套筒、锁定销
- 连接到机器人小腿
- 校准:
- 运动捕捉系统标定
- SSCM零位标定
10.3 测试协议
- 静态测试:
- 压缩测试台测量刚度曲线
- 验证FEA模型精度
- 动态测试:
- 5次基准跳跃(无DCL)
- 5次收起状态跳跃
- 5次展开状态跳跃
- 数据分析:
- 提取质心轨迹
- 计算有效跳跃高度
- 统计显著性检验(t-test)
十一、论文的创新点总结
- 首创可展开柔顺腿设计: 解决了PEA的寄生刚度问题
- 仿生扇形几何: 直接借鉴沫蝉半月突的力学原理
- Gyroid晶格优化: 首次将TPMS晶格应用于机器人跳跃
- 高保真解析模型: 三阶多项式模型实现实时控制集成
- 实验验证: 在真实四足机器人上实现17.1%性能提升