Using omni.isaac.lula and plan_to_task_space_target()


To set a cspace target (set of joint angles for the Panda robot arm) and have the arm move to that position while avoiding collisions (self and external).

What I’ve tried:
I’ve tried slightly modifying the example code to use the following: my_controller.get_motion_policy().set_cspace_target(np.array([joint1, joint2, joint3, joint4, joint5, joint6, joint7])) instead of setting a target_end_effector_position() and target_end_effector_orientation(). This works in simple cases, but if the arm is “twisted” up, the arm get’s stuck in some local-minima solution and fails to ever reach the set_cspace_target.

What I’m trying to figureout:
While browsing through the Isaac sim documentation, I found this Lula [omni.isaac.lula] — isaac_sim 2022.1.1-release.1 documentation
It seems like this actually plans a global solution, but it’s unclear how to actually configure the plan_to_task_space_target()


  1. Does omni.isaac.lula.plan_to_task_space_target() actually plan a global solution?
  2. Is omni.isaac.lula.plan_to_task_space_target() any different from using set_cspace_target() from RMPflow?

Any thoughts around this? Still stuck…

@rubend55 The omni.isaac.lula extension can be used directly, but it is not intended for that purpose. The omni.isaac.motion_generation extension is where we wrap the functionality of omni.isaac.lula in order to ensure ease of use and thorough documentation.
To answer your question, RMPflow is a local motion policy. It is very good at choosing a locally optimal motion that will lead the robot around most obstacles, but it can get stuck in local optima as you say. omni.isaac.lula.plan_to_tasks_space_target() is not using RMPflow. It is uses RRT to generate a global plan. In our latest release [2022.1.1] we support using Lula’s RRT planner in the motion_generation extension. See a tutorial here Motion Generation RRT Tutorial
And an explanation of the motion_generation extension here: Motion Generation Extension

Hi arudich, thanks so much for sharing this! Is the RRT solve being performed on GPU or CPU? Is there any plan to implement PRM for repeated joint space query solves? (similar to what we find in OMPL)

@rubend55 RRT is currently being performed on CPU, but we have a GPU implementation that will likely eventually get brought into Isaac Sim. It’s hard to give a timeline on other planners being integrated into Isaac Sim at the moment, but we have multiple internal developers working on various planning methods such as OMPL for research purposes. The long-term plan for Isaac Sim includes easy-to-use global planners that work in the vast majority of use-cases, but I cannot currently give an estimate about what will become available at what time.