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.
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