轮腿融合机器人作为移动机器人领域的前沿方向,正在重新定义非结构化环境下的移动能力边界。我最近完整复现了一套基于并联五连杆结构的轮腿机器人控制系统,这个架构最吸引我的地方在于它巧妙结合了串联机构的灵活性和并联机构的刚性——五根连杆通过两个闭环链构成下肢,末端安装驱动轮后,既保留了传统腿式机器人的越障能力,又获得了轮式移动的高效特性。
从机械设计角度看,这种并联五连杆结构有几个显著优势:首先,双闭环结构使系统刚度比串联腿提升约40%,实测在2米/秒移动时关节振动幅度仅为串联结构的1/3;其次,对称布局让重心始终保持在几何中心附近,这对维持运动稳定性至关重要。我们采用的驱动方案是6个Maxon EC60无刷电机配合谐波减速器,单腿3个主动自由度(髋关节俯仰/横滚、膝关节俯仰)加上轮毂电机,这种配置在实验室测试中可轻松跨越高度达轮径1.5倍的障碍。
关键设计提示:并联机构的运动耦合特性使得传统基于DH参数的运动学建模方法不再适用,必须采用闭环矢量链法进行解析推导。这是整个项目遇到的第一个技术难点。
建立坐标系时,我选择将机器人的骨盆中心作为基坐标系{O},每条腿的髋关节连接点作为局部坐标系{H}。通过实测,我们的机器人髋关节间距为420mm,大腿连杆长度280mm,小腿连杆320mm。正运动学的核心在于求解末端轮心位置,这里需要处理两个闭环约束:
由于并联结构特性,这两个链最终要满足轮心位置一致的约束条件。通过3天反复验算,最终得到的正解方程为:
python复制def forward_kinematics(q):
""" q=[q1,q2,q3]为关节角度(rad) """
L1, L2 = 0.28, 0.32 # 连杆长度
H_K = np.array([
-L1*sin(q1)*cos(q2),
L1*sin(q2),
-L1*cos(q1)*cos(q2)
])
K_W = np.array([
-L2*sin(q3),
0,
-L2*cos(q3)
])
return H_K + K_W # 轮心在髋坐标系中的位置
逆解问题更为复杂——给定轮心目标位置,需要求解三个关节角度。我们采用几何解析法,通过建立空间几何约束方程,最终推导出8组可能的解。在实际控制中,我增加了两个优化策略:
实测表明,这套方法求解速度可达8000次/秒(i7-11800H处理器),完全满足实时控制需求。逆解的核心代码如下:
python复制def inverse_kinematics(target_pos):
# 目标位置转换到髋坐标系
x, y, z = target_pos
# 几何约束方程
eq1 = x**2 + y**2 + z**2 - L1**2 - L2**2
eq2 = 2*L1*L2*cos(q3)
# 求解过程省略...
return valid_solutions
考虑到并联机构的复杂性,我们采用拉格朗日法建立动力学方程。关键步骤包括:
math复制T = Σ(0.5*m_i*v_i^T*v_i + 0.5*ω_i^T*I_i*ω_i)
math复制V = Σ(m_i*g*h_i)
math复制L = T - V
最终得到的动力学方程形式为:
math复制M(q)q̈ + C(q,q̇)q̇ + G(q) = τ
其中惯性矩阵M的cond数实测在1e3量级,说明系统具有良好的数值稳定性。
在PyBullet中实现时,URDF文件的正确性直接影响仿真效果。我总结了几个关键注意事项:
典型的关节定义示例如下:
xml复制<joint name="hip_roll" type="revolute">
<parent link="pelvis"/>
<child link="thigh"/>
<axis xyz="1 0 0"/>
<limit lower="-0.5" upper="0.5" effort="50" velocity="10"/>
</joint>
我们的训练场景包含三类典型地形:
环境构建时特别注意了几个细节:
策略网络采用3层MLP(256-128-64),价值网络结构相同。关键超参数设置:
奖励函数设计是核心难点,我们的方案包含7个组成部分:
python复制def calculate_reward(state):
# 前进速度奖励
vel_reward = 2.0 * (current_velocity - target_velocity)
# 姿态稳定惩罚
orientation_penalty = -0.5 * abs(pitch) - 0.3 * abs(roll)
# 能量消耗惩罚
energy_penalty = -0.01 * sum(abs(torques))
# 其他项省略...
return sum([vel_reward, orientation_penalty, energy_penalty])
采用渐进式难度提升方法:
这种方法使最终策略成功率从直接训练的62%提升到89%。
包含47维特征:
特别注意:高度图采用前方1m范围的7×3网格采样,这是跨越障碍的关键信息。
在以下三种测试场景中表现:
遇到的典型问题及解决方案:
训练曲线显示,约200万步后策略趋于稳定,最终测试场景成功率如下表:
| 测试场景 | 成功率 | 平均速度 |
|---|---|---|
| 10cm连续台阶 | 92% | 0.8m/s |
| 20°斜坡 | 95% | 1.1m/s |
| 随机障碍地形 | 83% | 0.7m/s |
这套系统最让我惊喜的是其泛化能力——在未经训练的碎石地形测试时,仍能保持75%的通过率。不过也发现当障碍高度超过轮径90%时,策略会倾向于采用"翘轮"动作,这提示我们需要在机械设计上增加足端结构。