curobo.cuda_robot_model package¶
This module contains GPU accelerated kinematics leveraging CUDA. Kinematics computations enable mapping from a robot’s joint configuration to the pose of the robot’s links in Cartesian space (with reference to the robot’s base link). In cuRobo, robot’s geometry is approximated with spheres and their positions are also computed as part of kinematics. This mapping is differentiable, enabling their use in optimization problems and as part of neural networks.
 
Robot representation in cuRobo is shown for the Franka Panda robot.¶
Kinematics in CuRobo currently supports single axis actuated joints, where the joint can be actuated as prismatic or revolute joints. Continuous joints are approximated to revolute joints with limits at [-6, +6] radians. Mimic joints are not supported, so convert mimic joints to independent joints.
CuRobo loads a robot’s kinematic tree from KinematicsTensorConfig. This config is
generated using CudaRobotGenerator. A parser base class
KinematicsParser is provided to help with parsing kinematics from
standard formats. Kinematics parsing from URDF is implemented in
UrdfKinematicsParser. An experimental USD kinematics parser is
provided in UsdKinematicsParser, which is missing an additional
transform between the joint origin and link origin, so this might not work for all robots. An
example workflow for setting up a robot from URDF is shown below:
In addition to parsing data from a kinematics file (urdf, usd), CuRobo also needs a sphere representation of the robot that approximates the volume of the robot’s links with spheres. Several other parameters are also needed to represent kinematics in CuRobo. A tutorial on setting up a robot is provided in Configuring a New Robot. cuRobo also supports using XRDF for representing the additional parameters of the robot that are not available in URDF.
Once a robot configuration file is setup, you can pass this to
CudaRobotModelConfig to generate an instance of kinematics configuraiton.
CudaRobotModel takes this configuration and provides access to kinematics
computations.
Note
CudaRobotModel creates memory tensors that are used by CUDA kernels
while CudaRobotModelConfig contains only the robot kinematics
configuration. To reduce memory overhead, you can pass one instance of
CudaRobotModelConfig to many instances of
CudaRobotModel.
Submodules¶
- curobo.cuda_robot_model.cuda_robot_generator module- CudaRobotGeneratorConfig- CudaRobotGeneratorConfig.base_link
- CudaRobotGeneratorConfig.ee_link
- CudaRobotGeneratorConfig.tensor_args
- CudaRobotGeneratorConfig.link_names
- CudaRobotGeneratorConfig.collision_link_names
- CudaRobotGeneratorConfig.collision_spheres
- CudaRobotGeneratorConfig.collision_sphere_buffer
- CudaRobotGeneratorConfig.compute_jacobian
- CudaRobotGeneratorConfig.self_collision_buffer
- CudaRobotGeneratorConfig.self_collision_ignore
- CudaRobotGeneratorConfig.debug
- CudaRobotGeneratorConfig.use_global_cumul
- CudaRobotGeneratorConfig.asset_root_path
- CudaRobotGeneratorConfig.mesh_link_names
- CudaRobotGeneratorConfig.load_link_names_with_mesh
- CudaRobotGeneratorConfig.urdf_path
- CudaRobotGeneratorConfig.usd_path
- CudaRobotGeneratorConfig.usd_robot_root
- CudaRobotGeneratorConfig.isaac_usd_path
- CudaRobotGeneratorConfig.use_usd_kinematics
- CudaRobotGeneratorConfig.usd_flip_joints
- CudaRobotGeneratorConfig.usd_flip_joint_limits
- CudaRobotGeneratorConfig.lock_joints
- CudaRobotGeneratorConfig.extra_links
- CudaRobotGeneratorConfig.add_object_link
- CudaRobotGeneratorConfig.use_external_assets
- CudaRobotGeneratorConfig.external_asset_path
- CudaRobotGeneratorConfig.external_robot_configs_path
- CudaRobotGeneratorConfig.extra_collision_spheres
- CudaRobotGeneratorConfig.cspace
- CudaRobotGeneratorConfig.load_meshes
 
- CudaRobotGenerator- CudaRobotGenerator.kinematics_config
- CudaRobotGenerator.self_collision_config
- CudaRobotGenerator.kinematics_parser
- CudaRobotGenerator.initialize_tensors
- CudaRobotGenerator.add_link
- CudaRobotGenerator.add_fixed_link
- CudaRobotGenerator._build_chain
- CudaRobotGenerator._get_mimic_joint_data
- CudaRobotGenerator._build_kinematics_tensors
- CudaRobotGenerator._build_kinematics
- CudaRobotGenerator._build_kinematics_with_lock_joints
- CudaRobotGenerator._build_collision_model
- CudaRobotGenerator._create_self_collision_thread_data
- CudaRobotGenerator._add_body_to_tree
- CudaRobotGenerator._get_joint_links
- CudaRobotGenerator._get_link_poses
- CudaRobotGenerator.get_joint_limits
- CudaRobotGenerator._get_joint_position_velocity_limits
- CudaRobotGenerator._update_joint_limits
- CudaRobotGenerator.add_object_link
- CudaRobotGenerator.asset_root_path
- CudaRobotGenerator.collision_link_names
- CudaRobotGenerator.collision_sphere_buffer
- CudaRobotGenerator.collision_spheres
- CudaRobotGenerator.compute_jacobian
- CudaRobotGenerator.cspace
- CudaRobotGenerator.debug
- CudaRobotGenerator.external_asset_path
- CudaRobotGenerator.external_robot_configs_path
- CudaRobotGenerator.extra_collision_spheres
- CudaRobotGenerator.extra_links
- CudaRobotGenerator.isaac_usd_path
- CudaRobotGenerator.link_names
- CudaRobotGenerator.load_link_names_with_mesh
- CudaRobotGenerator.load_meshes
- CudaRobotGenerator.lock_joints
- CudaRobotGenerator.mesh_link_names
- CudaRobotGenerator.self_collision_buffer
- CudaRobotGenerator.self_collision_ignore
- CudaRobotGenerator.tensor_args
- CudaRobotGenerator.urdf_path
- CudaRobotGenerator.usd_flip_joint_limits
- CudaRobotGenerator.usd_flip_joints
- CudaRobotGenerator.usd_path
- CudaRobotGenerator.usd_robot_root
- CudaRobotGenerator.use_external_assets
- CudaRobotGenerator.use_global_cumul
- CudaRobotGenerator.use_usd_kinematics
- CudaRobotGenerator.base_link
- CudaRobotGenerator.ee_link
 
 
- curobo.cuda_robot_model.cuda_robot_model module- CudaRobotModelConfig- CudaRobotModelConfig.tensor_args
- CudaRobotModelConfig.link_names
- CudaRobotModelConfig.kinematics_config
- CudaRobotModelConfig.self_collision_config
- CudaRobotModelConfig.kinematics_parser
- CudaRobotModelConfig.compute_jacobian
- CudaRobotModelConfig.use_global_cumul
- CudaRobotModelConfig.generator_config
- CudaRobotModelConfig.get_joint_limits
- CudaRobotModelConfig.from_basic_urdf
- CudaRobotModelConfig.from_basic_usd
- CudaRobotModelConfig.from_content_path
- CudaRobotModelConfig.from_robot_yaml_file
- CudaRobotModelConfig.from_data_dict
- CudaRobotModelConfig.from_config
- CudaRobotModelConfig.cspace
- CudaRobotModelConfig.dof
 
- CudaRobotModelState- CudaRobotModelState.ee_position
- CudaRobotModelState.ee_quaternion
- CudaRobotModelState.lin_jacobian
- CudaRobotModelState.ang_jacobian
- CudaRobotModelState.links_position
- CudaRobotModelState.links_quaternion
- CudaRobotModelState.link_spheres_tensor
- CudaRobotModelState.link_names
- CudaRobotModelState.ee_pose
- CudaRobotModelState.get_link_spheres
- CudaRobotModelState.link_pose
- CudaRobotModelState.link_poses
 
- CudaRobotModel- CudaRobotModel.update_batch_size
- CudaRobotModel.forward
- CudaRobotModel.get_state
- CudaRobotModel.compute_kinematics
- CudaRobotModel.compute_kinematics_from_joint_state
- CudaRobotModel.compute_kinematics_from_joint_position
- CudaRobotModel.get_robot_link_meshes
- CudaRobotModel.get_robot_as_mesh
- CudaRobotModel.get_robot_as_spheres
- CudaRobotModel.get_link_poses
- CudaRobotModel._cuda_forward
- CudaRobotModel.all_articulated_joint_names
- CudaRobotModel.get_self_collision_config
- CudaRobotModel.get_link_mesh
- CudaRobotModel.get_link_transform
- CudaRobotModel.get_all_link_transforms
- CudaRobotModel.get_dof
- CudaRobotModel.dof
- CudaRobotModel.joint_names
- CudaRobotModel.total_spheres
- CudaRobotModel.lock_jointstate
- CudaRobotModel.get_full_js
- CudaRobotModel.get_mimic_js
- CudaRobotModel.update_kinematics_config
- CudaRobotModel.attach_external_objects_to_robot
- CudaRobotModel.get_active_js
- CudaRobotModel.ee_link
- CudaRobotModel.base_link
- CudaRobotModel.robot_spheres
- CudaRobotModel.retract_config
- CudaRobotModel.compute_jacobian
- CudaRobotModel.cspace
- CudaRobotModel.from_basic_urdf
- CudaRobotModel.from_basic_usd
- CudaRobotModel.from_config
- CudaRobotModel.from_content_path
- CudaRobotModel.from_data_dict
- CudaRobotModel.from_robot_yaml_file
- CudaRobotModel.generator_config
- CudaRobotModel.get_joint_limits
- CudaRobotModel.kinematics_parser
- CudaRobotModel.self_collision_config
- CudaRobotModel.use_global_cumul
- CudaRobotModel.tensor_args
- CudaRobotModel.link_names
- CudaRobotModel.kinematics_config
 
 
- curobo.cuda_robot_model.kinematics_parser module
- curobo.cuda_robot_model.types module- JointType
- JointLimits
- CSpaceConfig- CSpaceConfig.joint_names
- CSpaceConfig.retract_config
- CSpaceConfig.cspace_distance_weight
- CSpaceConfig.null_space_weight
- CSpaceConfig.tensor_args
- CSpaceConfig.max_acceleration
- CSpaceConfig.max_jerk
- CSpaceConfig.velocity_scale
- CSpaceConfig.acceleration_scale
- CSpaceConfig.jerk_scale
- CSpaceConfig.position_limit_clip
- CSpaceConfig.inplace_reindex
- CSpaceConfig.copy_
- CSpaceConfig.clone
- CSpaceConfig.scale_joint_limits
- CSpaceConfig.load_from_joint_limits
 
- KinematicsTensorConfig- KinematicsTensorConfig.fixed_transforms
- KinematicsTensorConfig.link_map
- KinematicsTensorConfig.joint_map
- KinematicsTensorConfig.joint_map_type
- KinematicsTensorConfig.joint_offset_map
- KinematicsTensorConfig.store_link_map
- KinematicsTensorConfig.link_chain_map
- KinematicsTensorConfig.link_names
- KinematicsTensorConfig.joint_limits
- KinematicsTensorConfig.non_fixed_joint_names
- KinematicsTensorConfig.n_dof
- KinematicsTensorConfig.mesh_link_names
- KinematicsTensorConfig.joint_names
- KinematicsTensorConfig.lock_jointstate
- KinematicsTensorConfig.mimic_joints
- KinematicsTensorConfig.link_spheres
- KinematicsTensorConfig.link_sphere_idx_map
- KinematicsTensorConfig.link_name_to_idx_map
- KinematicsTensorConfig.total_spheres
- KinematicsTensorConfig.debug
- KinematicsTensorConfig.ee_idx
- KinematicsTensorConfig.cspace
- KinematicsTensorConfig.base_link
- KinematicsTensorConfig.ee_link
- KinematicsTensorConfig.reference_link_spheres
- KinematicsTensorConfig.copy_
- KinematicsTensorConfig.load_cspace_cfg_from_kinematics
- KinematicsTensorConfig.get_sphere_index_from_link_name
- KinematicsTensorConfig.update_link_spheres
- KinematicsTensorConfig.get_link_spheres
- KinematicsTensorConfig.get_reference_link_spheres
- KinematicsTensorConfig.attach_object
- KinematicsTensorConfig.detach_object
- KinematicsTensorConfig.get_number_of_spheres
- KinematicsTensorConfig.disable_link_spheres
- KinematicsTensorConfig.enable_link_spheres
 
- SelfCollisionKinematicsConfig- SelfCollisionKinematicsConfig.offset
- SelfCollisionKinematicsConfig.thread_location
- SelfCollisionKinematicsConfig.thread_max
- SelfCollisionKinematicsConfig.distance_threshold
- SelfCollisionKinematicsConfig.experimental_kernel
- SelfCollisionKinematicsConfig.collision_matrix
- SelfCollisionKinematicsConfig.checks_per_thread
 
 
- curobo.cuda_robot_model.urdf_kinematics_parser module- UrdfKinematicsParser- UrdfKinematicsParser.build_link_parent
- UrdfKinematicsParser._get_joint_name
- UrdfKinematicsParser._get_joint_limits
- UrdfKinematicsParser.get_link_parameters
- UrdfKinematicsParser.add_absolute_path_to_link_meshes
- UrdfKinematicsParser.get_urdf_string
- UrdfKinematicsParser.get_link_mesh
- UrdfKinematicsParser.root_link
- UrdfKinematicsParser._get_from_extra_links
- UrdfKinematicsParser.get_chain
- UrdfKinematicsParser.get_controlled_joint_names
- UrdfKinematicsParser._parent_map
 
 
- curobo.cuda_robot_model.usd_kinematics_parser module- UsdKinematicsParser- UsdKinematicsParser.robot_prim_root
- UsdKinematicsParser.build_link_parent
- UsdKinematicsParser.get_link_parameters
- UsdKinematicsParser._get_joint_transform
- UsdKinematicsParser._get_from_extra_links
- UsdKinematicsParser.add_absolute_path_to_link_meshes
- UsdKinematicsParser.get_chain
- UsdKinematicsParser.get_controlled_joint_names
- UsdKinematicsParser.get_link_mesh
- UsdKinematicsParser._parent_map
 
- get_links_for_joint
 
- curobo.cuda_robot_model.util module