Isaacsim
名詞介紹
- c-space:描述機(jī)器人姿態(tài)的多維空間,每個(gè)維度是機(jī)器人的一個(gè)自由度DoF。
- frame:某個(gè)部件的位置(坐標(biāo)系原點(diǎn))姿態(tài)(xyz軸方向,四元數(shù))。常見的如world/base/joint/link frame等
-
Articulation:多關(guān)節(jié)連接的物體,如機(jī)器人、機(jī)械臂等,其結(jié)構(gòu)通常為多關(guān)節(jié)(joint)連接多個(gè)連桿 (link),封裝了關(guān)節(jié)約束、質(zhì)量、慣性等參數(shù)。能夠讀取各關(guān)節(jié)位置、速度、受力,使用
ArticulationAction控制關(guān)節(jié)運(yùn)動(dòng)的位置、速度、扭矩,獲取整體或局部位姿。
Assets
實(shí)體對(duì)象,基于USD的復(fù)合數(shù)據(jù)格式,包括以下部分:
- 幾何 Geometry:包括1. Mesh,即多邊形模型;2. Collision Shape,碰撞檢測(cè),通常比mesh簡(jiǎn)單以簡(jiǎn)化計(jì)算。
- Transform Hiearchy:以父子關(guān)系組織的坐標(biāo)變換,形成骨架結(jié)構(gòu),例如關(guān)節(jié)的子節(jié)點(diǎn)為連桿
- Physics Properties:定義物理引擎中的行為,包括Mass/Inertia/Collision Group/動(dòng)力學(xué)類型(static/dynamic/kinematic)
- Material:視覺材質(zhì)(UsdShade)包括顏色、粗糙度、金屬度、透明度、自發(fā)光。物理材質(zhì)(UsdPhysics)包括靜摩擦系數(shù)、動(dòng)摩擦系數(shù)、恢復(fù)系數(shù)(Restitution)、密度。
- Joints:針對(duì)可運(yùn)動(dòng)的asset。包括關(guān)節(jié)類型,運(yùn)動(dòng)限位、阻尼、剛度等。
- Sensors:傳感器及其參數(shù)
- Metadata:額外信息如名稱、作者、版本、標(biāo)簽等
Physics
Motion Generation(extension)
Kinematics Solver (KS)
負(fù)責(zé)前向和逆向動(dòng)力學(xué)計(jì)算,其對(duì)機(jī)器人模型有其內(nèi)在表示。主要屬性如下:所有關(guān)節(jié)名、所有frame name、base pose、避障。
- Articulation Kinematics Solver:將
Articulation映射至KS,包含前向和逆向的映射方法 - Lula Kinematics Solver: 不包含避障,但可以set/get內(nèi)部設(shè)置,需要機(jī)器人的URDF和YAML(關(guān)節(jié)列表及默認(rèn)c-space)。
Trajectory Generation
用于定義c-space和task-space的軌跡。
- Trajectory Interface:連續(xù)時(shí)間軌跡。包括起始和終止時(shí)間、活動(dòng)關(guān)節(jié)及其目標(biāo)位置或角度(關(guān)于時(shí)間的函數(shù))
- Articulation Trajectory:用軌跡映射(控制)
Articulation。兩個(gè)方法:1. 獲得指定時(shí)間點(diǎn)的ArticulationAction;2. 間隔timestep的ArticulationAction采樣點(diǎn)列表。 - Lula Trajectory Generator:用于通過c-space或task-space的waypoints生成軌跡(插值),兩個(gè)class分別為
LulaCSpaceTrajectoryGenerator和LulaTaskSpaceTrajectoryGenerator。同樣需要提供URDF和YAML(加速和扭轉(zhuǎn)限制)。 - LulaCSpaceTrajectoryGenerator:起止速度均為0,加速均最大以使總軌跡時(shí)間最短。
- LulaTaskSpaceTrajectoryGenerator:一系列的task-space targets和end effector frame name。
Path Planner Algorithm
用于在c-space的起止位姿之間,或?yàn)檫_(dá)到task-space的目標(biāo)位姿,生成一條避障路線。其對(duì)機(jī)器人也有內(nèi)部表達(dá),不同于USD。
- Active and Watched Joints: 為從usd映射到pathplanner內(nèi)部表達(dá),需要fullfill
.get_activate_joint()和.get_watched_joints()。前者要控制,后者要觀測(cè)以規(guī)劃。 - Inputs: World State: 通過
pathplanner.add_sphere()可以將world中的移動(dòng)障礙物加入計(jì)算,目前(4.5.0)僅支持sphere和cone。 - Inputs: Robot State:通過
PathPlanner.set_robot_base_pose()設(shè)置base pose;通過PathPlanner.get_active_joints()和PathPlanner.get_watched_joints()指定的順序獲得關(guān)節(jié)位置。 - Outputs: Path:
compute_path返回一系列waypoints,可以插值形成避障路線。 - Path Planner Visualizer:可視化規(guī)劃路徑,匹配機(jī)器人關(guān)節(jié)與規(guī)劃器關(guān)節(jié),核心函數(shù)
PathPlannerVisualizer.compute_plan_as_articulation_actions(max_c-space_dist)可將規(guī)劃結(jié)果轉(zhuǎn)換為機(jī)器人可直接執(zhí)行的ArticulationAction指令,并通過插值保證平滑,參數(shù)max_c-space_dist控制路徑精細(xì)度。
Lula RRT
用于PathPlanner,其中c-space用RRT-Connect,task-space用Jacobian transpose RRT。RRT當(dāng)前不支持目標(biāo)方向。
文件需要URDF、YAML描述文件、YAML配置文件(RRT參數(shù)如終止條件、探索權(quán)重、step size)
Motion Policy Algorithm
Motion Policy接受機(jī)器人的狀態(tài),輸出一個(gè)期望的狀態(tài)變化量,過程中考慮單或多目標(biāo)、約束、環(huán)境狀態(tài)。
- Active and Watched Joints:同上
- Input:World States:同上
- Inputs: Robot State:同上
- Outputs: Robot Joint Targets:控制目標(biāo)關(guān)節(jié)
- Articulation Motion Policy:其需要一個(gè)
Articulation和一個(gè)MotionPolicy初始化,目標(biāo)是映射兩者的關(guān)節(jié),其核心函數(shù)ArticulationMotionPolicy.get_next_articulation_action()根據(jù)當(dāng)前狀態(tài)和MotionPolicy獲得可執(zhí)行的關(guān)節(jié)控制指令。 - Motion Policy Controller:將一個(gè)
MotionPolicy包裝為一個(gè)BaseController。
RMPFlow
利用黎曼幾何中的度量張量(metric tensor),離障礙物越近的地方將度量張量放得越大,因此通過最短路徑尋找即可實(shí)現(xiàn)在c-space中實(shí)現(xiàn)智能避障。需要一個(gè)URDF、YAML描述文件(包括球形障礙)以及RMP配置文件。
RMPFlow Tuning Guide
通常使用example configuration即可,根據(jù)實(shí)際機(jī)器人的關(guān)節(jié)數(shù)以及尺寸大小對(duì)其做相應(yīng)修改。如果還需要繼續(xù)調(diào)整,則關(guān)閉所有RMP及慣量,依次重啟RMP以微調(diào)。