Skip to content

v0.7.0 with improved collision gradients, ESDF Voxel grid, Constrained Planning, Isaac sim 2023.1.1 support

Choose a tag to compare

@balakumar-s balakumar-s released this 23 Mar 03:25
· 89 commits to main since this release

New Features

  • Add function to disable and enable collision for specific links in KinematicsTensorConfig.
  • Add goal index to reacher results to return index of goal reached when goalset planning.
  • Add locked joint state update api in MotionGen class.
  • Add goalset warmup padding to handle varied number of goals during goalset planning and also when
    calling plan_single after warmup of goalset.
  • Add new trajopt config to allow for smooth solutions at slow speeds (velocity_scale<=0.25). Also
    add error when velocity_scale<0.1.
  • Add experimental robot image segmentation module to enable robot removal in depth images.
  • Add constrained planning mode to motion_gen.
  • Use torch.compile to leverage better kernel fusion in place of torch.jit.script.
  • Significantly improved collision computation for cuboids and meshes. Mesh collision checker is
    now only 2x slower than cuboid (from 5x slower). Optimization convergence is also improved.
  • LBFGS kernels now support history <= 31 from history <= 15.
  • 2x faster LBFGS kernel that allocates upto 68kb of shared memory, preventing use in CUDA devices
    with compute capability <7.0.
  • On benchmarking Dataset, Planning time is now 42ms on average from 50ms. Higher quality solutions
    are also obtained. See benchmarks for more details.
  • Add WorldCollisionVoxel, a new collision checking implementation that uses a voxel grid
    of signed distances (SDF) to compute collision avoidance metrics. Documentation coming soon, see
    benchmark/curobo_voxel_benchmark.py for an example.
  • Add API for ESDF computation from world representations, see
    WorldCollision.get_esdf_in_bounding_box().
  • Add partial support for isaac sim 2023.1.1. Most examples run for UR robots. Franka Panda is
    unstable.

Changes in default behavior

  • Increased default collision cache to 50 in RobotWorld.
  • Changed CSpaceConfig.position_limit_clip default to 0 as previous default of 0.01 can make
    default start state in examples be out of bounds.
  • MotionGen uses parallel_finetune by default. To get previous motion gen behavior, pass
    warmup(parallel_finetune=False) and MotionGenPlanConfig(parallel_finetune=False).
  • MotionGen loads Mesh Collision checker instead of Primitive by default.
  • UR10e and UR5e now don't have a collision sphere at tool frame for world collision checking. This
    sphere is only active for self collision avoidance.
  • With torch>=2.0, cuRobo will use torch.compile instead of torch.jit.script to generate fused
    kernels. This can take several seconds during the first run. To enable this feature, set
    environment variable export CUROBO_TORCH_COMPILE_DISABLE=0.

Breaking Changes

  • Renamed copy_if_not_none to clone_if_not_none to be more descriptive. Now copy_if_not_none
    will try to copy data into reference.
  • Renamed n_envs in curobo.opt module to avoid confusion between parallel environments and
    parallel problems in optimization.
  • Added more inputs to pose distance kernels. Check curobolib/geom.py.
  • Pose cost run_vec_weight should now be [0,0,0,0,0,0] instead of [1,1,1,1,1,1]
  • max_distance is now tensor from float and is an input to collision kernels.
  • Order of inputs to SweptSdfMeshWarpPy has changed.

BugFixes & Misc.

  • refactored wp.index() instances to [] to avoid errors in future releases of warp.
  • Fix bug in gaussian transformation to ensure values are not -1 or +1.
  • Fix bug in ik_solver loading ee_link_name from argument.
  • Fix bug in batch_goalset planning, where pose cost was selected as GOALSET instead of
    BATCH_GOALSET.
  • Added package data to also export .so files.
  • Fixed bug in transforming link visual mesh offset when reading from urdf.
  • Fixed bug in MotionGenPlanConfig.clone() that didn't clone the state of parallel_finetune.
  • Increased weighting from 1.0 to 10.0 for optimized_dt in TrajEvaluator to select shorter
    trajectories.
  • Improved determinism by setting global seed for random in graph_nx.py.
  • Added option to clear obstacles in WorldPrimitiveCollision.
  • Raise error when reference of tensors change in MotionGen, IKSolver, and TrajOpt when cuda graph
    is enabled.
  • plan_single will get converted to plan_goalset when a plan_goalset was used to initialize cuda
    graph.
  • plan_goalset will pad for extra goals when called with less number of goal than initial creation.
  • Improved API documentation for Optimizer class.
  • Set use_cuda_graph to True as default from None in MotionGenConfig.load_from_robot_config
  • Add batched mode to robot image segmentation, supports single robot multiple camera and batch
    robot batch camera.
  • Add log_warn import to arm_reacher.py
  • Remove negative radius check in self collision kernel to allow for self collision checking with
    spheres of negative radius.
  • Added conftest.py to disable torch.compile for tests.
  • Added UR5e robot with robotiq gripper (2f-140) with improved sphere model.
  • Fix bug in aarch64.dockerfile where curobo was cloned to wrong path.
  • Fix bug in aarch64.dockerfile where python was used instead of python3.
  • Remove unused variables in kernels.
  • Added pybind11 as a dependency as some pytorch dockers for Jetson do not have this installed.
  • Fix incorrect dimensions in MotionGenResult.success in MotionGen.plan_batch() when
    trajectory optimization fails.
  • Added unit tests for collision checking functions.
  • Fix bug in linear interpolation which was not reading the new optimized_dt to interpolate
    velocity, acceleration, and jerk.
  • Remove torch.jit.script wrapper for lbfgs as it causes TorchScript error if history is different
    between trajopt and finetune_trajopt.

Known Bugs (WIP)

  • Franka Panda robot loading from urdf in isaac sim 2023.1.1 is unstable.