curobo.geom.sdf.world_voxel module

class WorldVoxelCollision(
config: WorldCollisionConfig,
)

Bases: WorldMeshCollision

Voxel grid representation of World, with each voxel containing Euclidean Signed Distance.

_init_cache()
_create_voxel_cache(
voxel_cache: Dict[str, Any],
)
load_collision_model(
world_model: WorldConfig,
env_idx=0,
fix_cache_reference: bool = False,
)
_load_voxel_collision_model_in_cache(
world_config: WorldConfig,
env_idx: int = 0,
fix_cache_reference: bool = False,
)

TODO:

_extended_summary_

Parameters:
  • world_config – _description_

  • env_idx – _description_

  • fix_cache_reference – _description_

_batch_tensor_voxel(
pose: List[List[float]],
dims: List[float],
voxel_size: List[float],
)
load_batch_collision_model(
world_config_list: List[WorldConfig],
)

Load voxel grid for batched environments

_extended_summary_

Parameters:

world_config_list – _description_

Returns:

_description_

enable_obstacle(
name: str,
enable: bool = True,
env_idx: int = 0,
)
enable_voxel(
enable: bool = True,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)

Update obstacle dimensions

Parameters:
update_obstacle_pose(
name: str,
w_obj_pose: Pose,
env_idx: int = 0,
)
update_voxel_data(
new_voxel: VoxelGrid,
env_idx: int = 0,
)
update_voxel_features(
features: Tensor,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)

Update pose of a specific objects. This also updates the signed distance grid to account for the updated object pose. Args: obj_w_pose: Pose obj_idx:

update_voxel_pose(
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)

Update pose of a specific objects. This also updates the signed distance grid to account for the updated object pose. Args: obj_w_pose: Pose obj_idx:

get_voxel_idx(
name: str,
env_idx: int = 0,
) int
get_voxel_grid(
name: str,
env_idx: int = 0,
)
get_sphere_distance(
query_sphere,
collision_query_buffer: CollisionQueryBuffer,
weight: Tensor,
activation_distance: Tensor,
env_query_idx: Tensor | None = None,
return_loss=False,
sum_collisions: bool = True,
compute_esdf: bool = False,
)

Computes the signed distance via analytic function Args: tensor_sphere: b, n, 4

get_sphere_collision(
query_sphere,
collision_query_buffer: CollisionQueryBuffer,
weight: Tensor,
activation_distance: Tensor,
env_query_idx: Tensor | None = None,
return_loss=False,
**kwargs,
)

Computes the signed distance via analytic function Args: tensor_sphere: b, n, 4 we assume we don’t need gradient for this function. If you need gradient, use get_sphere_distance

get_swept_sphere_distance(
query_sphere,
collision_query_buffer: CollisionQueryBuffer,
weight: Tensor,
activation_distance: Tensor,
speed_dt: Tensor,
sweep_steps: int,
enable_speed_metric=False,
env_query_idx: Tensor | None = None,
return_loss=False,
sum_collisions: bool = True,
)

Computes the signed distance via analytic function Args: tensor_sphere: b, n, 4

get_swept_sphere_collision(
query_sphere,
collision_query_buffer: CollisionQueryBuffer,
weight: Tensor,
activation_distance: Tensor,
speed_dt: Tensor,
sweep_steps: int,
enable_speed_metric=False,
env_query_idx: Tensor | None = None,
return_loss=False,
)

Computes the signed distance via analytic function Args: tensor_sphere: b, n, 4

clear_cache()
get_voxel_grid_shape(
env_idx: int = 0,
obs_idx: int = 0,
)
_create_mesh_cache(
mesh_cache,
)
_create_obb_cache(
obb_cache,
)
classmethod _get_obstacle_poses(
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
)
_get_sdf(
query_spheres,
collision_query_buffer: CollisionQueryBuffer,
weight: Tensor,
activation_distance: Tensor,
env_query_idx=None,
return_loss=False,
compute_esdf=False,
)
_get_swept_sdf(
query_spheres,
collision_query_buffer: CollisionQueryBuffer,
weight: Tensor,
activation_distance: Tensor,
speed_dt: Tensor,
sweep_steps: int,
enable_speed_metric=False,
env_query_idx=None,
return_loss: bool = False,
)
_load_batch_mesh_to_warp(
mesh_list: List[Mesh],
)
_load_collision_model_in_cache(
world_config: WorldConfig,
env_idx: int = 0,
fix_cache_reference: bool = False,
)
_load_mesh_into_cache(
mesh: Mesh,
) WarpMeshData
_load_mesh_to_warp(
mesh: Mesh,
)
add_mesh(
new_mesh: Mesh,
env_idx: int = 0,
)
add_obb(
cuboid: Cuboid,
env_idx: int = 0,
)
add_obb_from_raw(
name: str,
dims: Tensor,
env_idx: int,
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
)

Args: dims: lenght, width, height position: x,y,z rotation: matrix (3x3)

cache: Dict[Obstacle, int] | None = None
checker_type: CollisionCheckerType = 'PRIMITIVE'
clear_voxelization_cache()
create_collision_cache(
mesh_cache=None,
obb_cache=None,
n_envs=None,
)
enable_mesh(
enable: bool = True,
name: str | None = None,
env_mesh_idx: Tensor | None = None,
env_idx: int = 0,
)

Update obstacle dimensions

Parameters:
enable_obb(
enable: bool = True,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)

Update obstacle dimensions

Parameters:
get_esdf_in_bounding_box(
cuboid: Cuboid = Cuboid(name='test', pose=[0, 0, 0, 1, 0, 0, 0], scale=None, color=None, texture_id=None, texture=None, material=Material(metallic=0.0, roughness=0.4), tensor_args=TensorDeviceType(device=device(type='cuda', index=0), dtype=torch.float32, collision_geometry_dtype=torch.float32, collision_gradient_dtype=torch.float32, collision_distance_dtype=torch.float32), dims=[1, 1, 1]),
voxel_size: float = 0.02,
dtype=torch.float32,
) VoxelGrid
get_mesh_idx(
name: str,
env_idx: int = 0,
) int
get_mesh_in_bounding_box(
cuboid: Cuboid = Cuboid(name='test', pose=[0, 0, 0, 1, 0, 0, 0], scale=None, color=None, texture_id=None, texture=None, material=Material(metallic=0.0, roughness=0.4), tensor_args=TensorDeviceType(device=device(type='cuda', index=0), dtype=torch.float32, collision_geometry_dtype=torch.float32, collision_gradient_dtype=torch.float32, collision_distance_dtype=torch.float32), dims=[1, 1, 1]),
voxel_size: float = 0.02,
) Mesh
get_obb_idx(
name: str,
env_idx: int = 0,
) int
get_occupancy_in_bounding_box(
cuboid: Cuboid = Cuboid(name='test', pose=[0, 0, 0, 1, 0, 0, 0], scale=None, color=None, texture_id=None, texture=None, material=Material(metallic=0.0, roughness=0.4), tensor_args=TensorDeviceType(device=device(type='cuda', index=0), dtype=torch.float32, collision_geometry_dtype=torch.float32, collision_gradient_dtype=torch.float32, collision_distance_dtype=torch.float32), dims=[1, 1, 1]),
voxel_size: float = 0.02,
) VoxelGrid
get_sphere_trace(
query_sphere,
collision_query_buffer: CollisionQueryBuffer,
weight: Tensor,
sweep_steps: int,
env_query_idx: Tensor | None = None,
return_loss: bool = False,
)
get_voxels_in_bounding_box(
cuboid: Cuboid = Cuboid(name='test', pose=[0, 0, 0, 1, 0, 0, 0], scale=None, color=None, texture_id=None, texture=None, material=Material(metallic=0.0, roughness=0.4), tensor_args=TensorDeviceType(device=device(type='cuda', index=0), dtype=torch.float32, collision_geometry_dtype=torch.float32, collision_gradient_dtype=torch.float32, collision_distance_dtype=torch.float32), dims=[1, 1, 1]),
voxel_size: float = 0.02,
) List[Cuboid] | Tensor
static load_from_dict(
world_coll_checker_dict: Dict,
world_model_dict: WorldConfig | Dict | List[WorldConfig] | None = None,
tensor_args: TensorDeviceType = TensorDeviceType(device=device(type='cuda', index=0), dtype=torch.float32, collision_geometry_dtype=torch.float32, collision_gradient_dtype=torch.float32, collision_distance_dtype=torch.float32),
)
max_distance: torch.Tensor | float = 0.1
max_esdf_distance: torch.Tensor | float = 100.0
n_envs: int = 1
update_all_mesh_pose(
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
name: List[str] | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)

Update poses for a list of meshes in the same environment

Parameters:
  • w_obj_pose (Optional[Pose], optional) – _description_. Defaults to None.

  • obj_w_pose (Optional[Pose], optional) – _description_. Defaults to None.

  • name (Optional[List[str]], optional) – _description_. Defaults to None.

  • env_obj_idx (Optional[torch.Tensor], optional) – _description_. Defaults to None.

  • env_idx (int, optional) – _description_. Defaults to 0.

update_cache_voxelization(
new_grid: VoxelGrid,
)
update_mesh_from_warp(
warp_mesh_idx: int,
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
obj_idx: int = 0,
env_idx: int = 0,
name: str | None = None,
)
update_mesh_pose(
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)
update_mesh_pose_env(
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: List[int] = [0],
)

Update pose of a single object in a list of environments

Parameters:
  • w_obj_pose (Optional[Pose], optional) – _description_. Defaults to None.

  • obj_w_pose (Optional[Pose], optional) – _description_. Defaults to None.

  • name (Optional[List[str]], optional) – _description_. Defaults to None.

  • env_obj_idx (Optional[torch.Tensor], optional) – _description_. Defaults to None.

  • env_idx (List[int], optional) – _description_. Defaults to [0].

update_obb_dims(
obj_dims: Tensor,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)

Update obstacle dimensions

Parameters:
update_obb_pose(
w_obj_pose: Pose | None = None,
obj_w_pose: Pose | None = None,
name: str | None = None,
env_obj_idx: Tensor | None = None,
env_idx: int = 0,
)

Update pose of a specific objects. This also updates the signed distance grid to account for the updated object pose. Args: obj_w_pose: Pose obj_idx:

world_model: List[WorldConfig] | WorldConfig | None = None
tensor_args: TensorDeviceType