宇树最新开源机器人Qmini 核心逻辑一图全解析
https://github.com/vsislab/RoboTamerSdk4Qmini
- rl_control
rl_control 是强化学习(Reinforcement Learning, RL)控制主循环。它每次被调用时,会:
统计循环次数;
用当前观测值(observation)调用神经网络(ONNX 模型)进行推理,得到动作增量(action_increment);
对动作增量做变换(transform),并调用 joint_increment_control 更新关节目标值;
更新 RL 控制周期(_rl_time_step)。
简而言之,这个函数负责用 RL 算法实时计算机器人关节的动作。
- joint_increment_control
joint_increment_control 用于根据神经网络输出的增量(increment)更新机器人的关节目标值。它会:
更新步态相位(pm_f);
计算步态相位(compute_pm_phase);
按照增量调整关节目标值(joint_act),并做限幅处理,保证在安全范围内。
这个函数是 RL 控制的核心,负责把神经网络输出转化为实际的关节动作。
- sin_control
sin_control 用于让关节做正弦波运动,常用于测试或演示。它会:
计算正弦波的关节目标值;
如果配置为全部关节,则所有关节一起做正弦运动;
如果只针对某个关节,则只让指定关节运动;
最后做限幅处理。
这个函数可以让机器人关节按照正弦规律周期性运动。
- stand_control
stand_control 用于让机器人站立。它会:
调用 smooth_joint_action,将关节目标值从初始值平滑过渡到参考站立姿态(_ref_joint_act);
做限幅处理。
这个函数实现了机器人从任意姿态平滑过渡到站立姿态的动作。
- sim_gait_control
sim_gait_control 用于模拟步态控制。它会:
按照预先加载的步态数据(sim_gait_data)逐步更新关节目标值;
每次调用时,步态数据索引递增,关节目标值更新为当前步态数据;
做限幅处理。
这个函数可以让机器人按照预设的步态数据做周期性运动,常用于仿真或测试。