cuRobo represents the robot as a kinematic tree with spheres attached to each link to approximate the robot’s geometry for collision/distance queries. cuRobo can load the kinematic tree from a urdf or a usd (experimental). cuRobo provides configuration files for several robots, listed in Supported Robots. If your robot is not in the list, you can follow Configuring a New Robot to generate the configuration file for your own robot.


Robot representation in cuRobo is shown for the Franka Panda robot.

cuRobo’s world can be represented by Cuboids, Meshes, and nvblox maps (which can be built from depth images), a detailed discussion is in Collision World Representation.

Next, read Using in Python for how to use cuRobo in a python pipeline. If you want to use in Isaac Sim, skip to Using with Isaac Sim.


cuRobo represents Pose with curobo.types.math.Pose, with quaternion in the format wxyz.


cuRobo leverages CUDAGraphs to run optimization iterations 10x faster than a native run. CUDAGraphs enable recording all cuda kernel calls in a compute graph and during subsequent calls, the recorded compute graph is replayed with new data in the referenced tensors. Read this aricle PyTorch CUDAGraph Blog for more information. One caveat with using CUDAGraphs is that we cannot change the shape of any tensor once the graph is recorded. Hence, when enabling CUDAGraph in cuRobo’s tools, changing the problem size between calls can lead to crashes. More details on CUDAGraph constraints are at CUDA Capture Constraints.