RigidLink#
- class genesis.engine.entities.rigid_entity.rigid_link.RigidLink(entity: RigidEntity, idx: int, parent_idx: int, root_idx: int | None, joint_start: int, n_joints: int, geom_start: int, cell_start: int, vert_start: int, face_start: int, edge_start: int, free_verts_state_start: int, fixed_verts_state_start: int, vgeom_start: int, vvert_start: int, vface_start: int, visualize_contact: bool, desc: RigidLinkDescription)[source]#
Bases:
KinematicLinkRigidLink class. One RigidEntity consists of multiple RigidLinks, each of which is a rigid body and could consist of multiple RigidGeoms (
link.geoms, for collision) and RigidVisGeoms (link.vgeomsfor visualization).- get_verts()[source]#
Get the vertices of the link’s collision body (concatenation of all
link.geoms) in the world frame.
- get_AABB()[source]#
Get the vertex-based axis-aligned bounding box (AABB) of the link’s collision body in the world frame by aggregating all the collision geometries associated with this link (
link.geoms).
- apply_external_wrench(force=None, torque=None, envs_idx=None, *, pos=None, ref: link_ref_frame = link_ref_frame.link_origin, local: bool = False)[source]#
Apply an external wrench over one simulation step on the link.
- Parameters:
force (None | array_like, optional) – The linear force to apply. None for a pure torque. Defaults to None.
torque (None | array_like, optional) – The torque to apply, on top of the moment induced by the linear force. Defaults to None.
envs_idx (None | array_like, optional) – The indices of the environments. If None, all environments will be considered. Defaults to None.
pos (None | array_like, optional) – Where the linear force is applied, which sets the moment arm of the induced torque. With
local=True, an offset from the origin of therefframe, so the point follows the link as it moves; otherwise a world position. None applies the force at the origin of therefframe. Defaults to None.ref (gs.link_ref_frame, optional) – The reference frame: the origin of the link (‘link_origin’), or its center of mass (‘link_COM’). It fixes where the linear force acts when
posis None, and the axes of the input coordinates whenlocal=True. Defaults to ‘link_origin’.local (bool, optional) – Whether
force,torqueandposare expressed in the coordinates of therefframe rather than the world frame. Defaults to False.
- apply_external_force(force, envs_idx=None, *, pos=None, ref: link_ref_frame = link_ref_frame.link_origin, local: bool = False)[source]#
Apply an external linear force over one simulation step on the link.
Refer to
RigidLink.apply_external_wrenchfor details.
- apply_external_torque(torque, envs_idx=None, *, ref: link_ref_frame = link_ref_frame.link_origin, local: bool = False)[source]#
Apply an external torque over one simulation step on the link.
Refer to
RigidLink.apply_external_wrenchfor details.
- set_mass(mass: tuple[float, ...])[source]#
Set the mass of the link, in kg.
The inertia of the link is left unchanged, so use
set_inertiato change it too.RigidEntity.set_massscales the inertia of every link of an entity instead, by the same factor as its mass, which is how a body of the same shape made heavier behaves.- Parameters:
mass (float | array_like, shape (n_envs,)) – The mass to set. Per-environment values require
RigidOptions.batch_links_info=True.
- set_COM(com)[source]#
Set the center of mass (COM) of the link, as an offset in the link’s local frame.
- Parameters:
com (array_like, shape (3,) or (n_envs, 3)) – The center of mass to set. Per-environment values require
RigidOptions.batch_links_info=True.
- set_inertia(inertia)[source]#
Set the inertia matrix of the link, expressed in its inertial frame.
- Parameters:
inertia (array_like, shape (3, 3) or (n_envs, 3, 3)) – The inertia matrix to set, which must be symmetric positive definite. Per-environment values require
RigidOptions.batch_links_info=True.
- get_invweight(envs_idx=None)[source]#
Get the constraint inverse weights of the link: one for forces, one for torques.
See
RigidEntity.get_links_invweightfor what an inverse weight is and where its value comes from.- Parameters:
envs_idx (None | array_like, optional) – The indices of the environments. If None, all environments are returned. Defaults to None.
- Returns:
invweight – The translational and rotational inverse weight of the link, per environment for a batched scene whose link info is batched.
- Return type:
torch.Tensor, shape (2,) or (n_envs, 2)
- get_mass(envs_idx=None)[source]#
Get the mass of the link, in kg.
- Parameters:
envs_idx (None | array_like, optional) – The indices of the environments. If None, all environments are returned. Defaults to None.
- Returns:
mass – The mass of the link, per environment for a batched scene whose link info is batched.
- Return type:
torch.Tensor, shape (n_envs,) or scalar
- set_friction_torsional(friction_torsional)[source]#
Set the torsional friction of all the link’s geoms (see ‘gs.materials.Rigid’).
- set_friction_rolling(friction_rolling)[source]#
Set the rolling friction of all the link’s geoms (see ‘gs.materials.Rigid’).
- property visualize_contact: bool#
Whether to visualize the contact of the link.
- property geoms: list[genesis.engine.entities.rigid_entity.rigid_geom.RigidGeom]#
The list of the link’s collision geometries (
RigidGeom).
- property n_geoms: int#
Number of the link’s collision geometries.
- property geom_start: int#
The start index of the link’s collision geometries in the RigidSolver.
- property geom_end: int#
The end index of the link’s collision geometries in the RigidSolver.
- property n_cells#
Number of sdf cells of all the link’s geoms.
- property n_verts: int#
Number of vertices of all the link’s geoms.
- property n_faces: int#
Number of faces of all the link’s geoms.
- property n_edges: int#
Number of edges of all the link’s geoms.
- property is_free#