Skip to content
forked from NVlabs/curobo

CUDA Accelerated Robot Library (For SPARROWS Comparison)

License

Notifications You must be signed in to change notification settings

roahmlab/curobo

 
 

Repository files navigation

cuRobo (For SPARROWS comparison)

CUDA Accelerated Robot Library

Use Discussions for questions on using this package.

Use Issues if you find a bug.

cuRobo's collision-free motion planner is available for commercial applications as a MoveIt plugin: Isaac ROS cuMotion

For business inquiries of this python library, please visit our website and submit the form: NVIDIA Research Licensing

Check curobo.org for installing and getting started with examples!

Installation

Run the following command to create a conda environment before running any examples:

conda env create -f environment.yml

Then run the following command to activate this environment:

conda activate curobo-comparison-env

Check your python version by running the following command. curobo only works on python<=3.10

python3 --version

Install curobo by running the following command:

pip install -e . --no-build-isolation

Test if the installation is successful by running the following command for testing:

python3 -m pytest .

Run comparisons

You need to copy no_filter_planning_results/ folder under curobo/ first. This is the result of SPARROWS, which stores the obstacles information and the trajectory information as well.

Go to examples/ folder and create a folder to store the comparison results:

mkdir comparison-results/

Run the following python script to test curobo on SPARROWS scenarios. Change the value of variable obs_num at the front of the script to 10, 20, 40 to test scenarios with different number of obstacles.

python3 comparison_for_sparrows.py 

Setup a simple example

You can edit the world_file as a yaml file. Refer to ../src/curobo/content/configs/world/simple_scenario.yml as an example, where you only need to define a couple of boxes (cuboids).

Edit variables start_state_tensor and goal_state_tensor for start and goal.

The results are automatically stored in a mat file called curobo_trajectory.mat. You can use a simple matlab script visualize_trajectory.m to plot the robot motion.

Overview

cuRobo is a CUDA accelerated library containing a suite of robotics algorithms that run significantly faster than existing implementations leveraging parallel compute. cuRobo currently provides the following algorithms: (1) forward and inverse kinematics, (2) collision checking between robot and world, with the world represented as Cuboids, Meshes, and Depth images, (3) numerical optimization with gradient descent, L-BFGS, and MPPI, (4) geometric planning, (5) trajectory optimization, (6) motion generation that combines inverse kinematics, geometric planning, and trajectory optimization to generate global motions within 30ms.

cuRobo performs trajectory optimization across many seeds in parallel to find a solution. cuRobo's trajectory optimization penalizes jerk and accelerations, encouraging smoother and shorter trajectories. Below we compare cuRobo's motion generation on the left to a BiRRT planner for the motion planning phases in a pick and place task.

Citation

If you found this work useful, please cite the below report,

@misc{curobo_report23,
      title={cuRobo: Parallelized Collision-Free Minimum-Jerk Robot Motion Generation},
      author={Balakumar Sundaralingam and Siva Kumar Sastry Hari and Adam Fishman and Caelan Garrett
              and Karl Van Wyk and Valts Blukis and Alexander Millane and Helen Oleynikova and Ankur Handa
              and Fabio Ramos and Nathan Ratliff and Dieter Fox},
      year={2023},
      eprint={2310.17274},
      archivePrefix={arXiv},
      primaryClass={cs.RO}
}

About

CUDA Accelerated Robot Library (For SPARROWS Comparison)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 80.9%
  • Cuda 14.2%
  • C 1.6%
  • C++ 1.6%
  • Other 1.7%