Lula Trajectory Generator 架构深度学习笔记
2026/1/3大约 2 分钟
Lula Trajectory Generator 架构深度学习笔记
学习背景:深入理解 NVIDIA Isaac Sim 中 Lula 轨迹生成系统。该系统通过连接离散的航点,生成平滑、符合动力学约束(速度、加速度、Jerk)的运动指令。
一、 架构总览与初始化逻辑
1.1 核心分工
Lula 轨迹生成系统由两个主要脚本驱动,职责明确:
scenario.py(算法逻辑层):负责加载机器人配置、调用 Lula 库计算数学轨迹、将轨迹离散化为动作序列。ui_builder.py(交互表现层):负责渲染 Isaac Sim 右侧面板的按钮,控制仿真时间线的播放与暂停。
1.2 求解器初始化
在 scenario.py 的 setup(self) 函数中,系统加载 robot_descriptor.yaml 和 urdf 文件,并实例化两个核心生成器:
LulaCSpaceTrajectoryGenerator:处理关节空间(角度)路径。LulaTaskSpaceTrajectoryGenerator:处理任务空间(位姿)路径。
1.3 核心组件功能表
| 类名 | 所属文件 | 功能描述 |
|---|---|---|
LulaCSpaceTrajectoryGenerator | scenario.py | 基于样条插值连接关节空间点。 |
LulaTaskSpaceTrajectoryGenerator | scenario.py | 在 3D 空间内规划末端执行器的几何路径。 |
ArticulationTrajectory | scenario.py | 桥梁类。将连续轨迹映射到 60Hz 的物理帧动作序列。 |
二、 C-Space (关节空间) 轨迹计算
适用于已知目标姿态(所有轴的角度),并希望实现平滑过渡的场景。
2.1 时间最优轨迹生成
- 关键函数:
compute_c_space_trajectory(waypoints) - 作用:计算连接所有关节航点的最快路径。
- 原理:它会使机器人至少在一个约束(速度、加速度或 Jerk)上达到物理极限(Saturate),从而实现效率最大化。
2.2 定时轨迹生成
- 关键函数:
compute_timestamped_c_space_trajectory(waypoints, timestamps) - 作用:在特定的时刻到达特定的角度。
- 应用场景:例如设定
timestamps = [0, 5, 10],机器人会精准地在第 5 秒到达第二个航点。
2.3 轨迹离散化逻辑
轨迹生成器返回的是连续函数。通过以下步骤,我们获得一个包含每一帧(1/60s)动作指令的列表:
articulation_trajectory = ArticulationTrajectory(self._articulation, trajectory, physics_dt)
# 获取 60Hz 的动作序列
action_sequence = articulation_trajectory.get_action_sequence()