Isaacsim
名词介绍
- c-space:描述机器人姿态的多维空间,每个维度是机器人的一个自由度DoF。
- frame:某个部件的位置(坐标系原点)姿态(xyz轴方向,四元数)。常见的如world/base/joint/link frame等
-
Articulation:多关节连接的物体,如机器人、机械臂等,其结构通常为多关节(joint)连接多个连杆 (link),封装了关节约束、质量、惯性等参数。能够读取各关节位置、速度、受力,使用
ArticulationAction
控制关节运动的位置、速度、扭矩,获取整体或局部位姿。
Assets
实体对象,基于USD的复合数据格式,包括以下部分:
- 几何 Geometry:包括1. Mesh,即多边形模型;2. Collision Shape,碰撞检测,通常比mesh简单以简化计算。
- Transform Hiearchy:以父子关系组织的坐标变换,形成骨架结构,例如关节的子节点为连杆
- Physics Properties:定义物理引擎中的行为,包括Mass/Inertia/Collision Group/动力学类型(static/dynamic/kinematic)
- Material:视觉材质(UsdShade)包括颜色、粗糙度、金属度、透明度、自发光。物理材质(UsdPhysics)包括静摩擦系数、动摩擦系数、恢复系数(Restitution)、密度。
- Joints:针对可运动的asset。包括关节类型,运动限位、阻尼、刚度等。
- Sensors:传感器及其参数
- Metadata:额外信息如名称、作者、版本、标签等
Physics
Motion Generation(extension)
Kinematics Solver (KS)
负责前向和逆向动力学计算,其对机器人模型有其内在表示。主要属性如下:所有关节名、所有frame name、base pose、避障。
- Articulation Kinematics Solver:将
Articulation
映射至KS,包含前向和逆向的映射方法 - Lula Kinematics Solver: 不包含避障,但可以set/get内部设置,需要机器人的URDF和YAML(关节列表及默认c-space)。
Trajectory Generation
用于定义c-space和task-space的轨迹。
- Trajectory Interface:连续时间轨迹。包括起始和终止时间、活动关节及其目标位置或角度(关于时间的函数)
- Articulation Trajectory:用轨迹映射(控制)
Articulation
。两个方法:1. 获得指定时间点的ArticulationAction
;2. 间隔timestep的ArticulationAction
采样点列表。 - Lula Trajectory Generator:用于通过c-space或task-space的waypoints生成轨迹(插值),两个class分别为
LulaCSpaceTrajectoryGenerator
和LulaTaskSpaceTrajectoryGenerator
。同样需要提供URDF和YAML(加速和扭转限制)。 - LulaCSpaceTrajectoryGenerator:起止速度均为0,加速均最大以使总轨迹时间最短。
- LulaTaskSpaceTrajectoryGenerator:一系列的task-space targets和end effector frame name。
Path Planner Algorithm
用于在c-space的起止位姿之间,或为达到task-space的目标位姿,生成一条避障路线。其对机器人也有内部表达,不同于USD。
- Active and Watched Joints: 为从usd映射到pathplanner内部表达,需要fullfill
.get_activate_joint()
和.get_watched_joints()
。前者要控制,后者要观测以规划。 - Inputs: World State: 通过
pathplanner.add_sphere()
可以将world中的移动障碍物加入计算,目前(4.5.0)仅支持sphere和cone。 - Inputs: Robot State:通过
PathPlanner.set_robot_base_pose()
设置base pose;通过PathPlanner.get_active_joints()
和PathPlanner.get_watched_joints()
指定的顺序获得关节位置。 - Outputs: Path:
compute_path
返回一系列waypoints
,可以插值形成避障路线。 - Path Planner Visualizer:可视化规划路径,匹配机器人关节与规划器关节,核心函数
PathPlannerVisualizer.compute_plan_as_articulation_actions(max_c-space_dist)
可将规划结果转换为机器人可直接执行的ArticulationAction指令,并通过插值保证平滑,参数max_c-space_dist
控制路径精细度。
Lula RRT
用于PathPlanner,其中c-space用RRT-Connect,task-space用Jacobian transpose RRT。RRT当前不支持目标方向。
文件需要URDF、YAML描述文件、YAML配置文件(RRT参数如终止条件、探索权重、step size)
Motion Policy Algorithm
Motion Policy接受机器人的状态,输出一个期望的状态变化量,过程中考虑单或多目标、约束、环境状态。
- Active and Watched Joints:同上
- Input:World States:同上
- Inputs: Robot State:同上
- Outputs: Robot Joint Targets:控制目标关节
- Articulation Motion Policy:其需要一个
Articulation
和一个MotionPolicy
初始化,目标是映射两者的关节,其核心函数ArticulationMotionPolicy.get_next_articulation_action()
根据当前状态和MotionPolicy
获得可执行的关节控制指令。 - Motion Policy Controller:将一个
MotionPolicy
包装为一个BaseController
。
RMPFlow
利用黎曼几何中的度量张量(metric tensor),离障碍物越近的地方将度量张量放得越大,因此通过最短路径寻找即可实现在c-space中实现智能避障。需要一个URDF、YAML描述文件(包括球形障碍)以及RMP配置文件。
RMPFlow Tuning Guide
通常使用example configuration即可,根据实际机器人的关节数以及尺寸大小对其做相应修改。如果还需要继续调整,则关闭所有RMP及惯量,依次重启RMP以微调。