Skip to content

Actuation API reference

soromox.actuation

Actuator

Bases: Module


              flowchart TD
              soromox.actuation.Actuator[Actuator]

              

              click soromox.actuation.Actuator href "" "soromox.actuation.Actuator"
            

A transmission paired with an effort law and ordered channel metadata.

efforts

efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_structure_for_robot

validate_structure_for_robot(robot: SoftRobot) -> None

Validate tracer-safe component compatibility with robot.

validate_values_for_robot

validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

ActuatorMetadata

ActuatorMetadata(*, labels: tuple[str, ...], units: str | tuple[str, ...], kind: ActuatorKind = 'generic', lower_bounds: Array | None = None, upper_bounds: Array | None = None)

Bases: Module


              flowchart TD
              soromox.actuation.ActuatorMetadata[ActuatorMetadata]

              

              click soromox.actuation.ActuatorMetadata href "" "soromox.actuation.ActuatorMetadata"
            

Ordered labels, units, limits, and semantics for input channels.

DirectEffort

Bases: EffortModel


              flowchart TD
              soromox.actuation.DirectEffort[DirectEffort]
              soromox.actuation.core.EffortModel[EffortModel]

                              soromox.actuation.core.EffortModel --> soromox.actuation.DirectEffort
                


              click soromox.actuation.DirectEffort href "" "soromox.actuation.DirectEffort"
              click soromox.actuation.core.EffortModel href "" "soromox.actuation.core.EffortModel"
            

Stateless effort model for which effort is exactly the user control.

EffortModel

Bases: Module


              flowchart TD
              soromox.actuation.EffortModel[EffortModel]

              

              click soromox.actuation.EffortModel href "" "soromox.actuation.EffortModel"
            

Map controls to efforts work-conjugate to transmission coordinates.

effort abstractmethod

effort(control: Array, coordinate: Array | None, velocity: Array | None) -> Array

Return actuator effort for the current control and transmission state.

IdentityActuator

IdentityActuator(num_channels: int)

Bases: Actuator


              flowchart TD
              soromox.actuation.IdentityActuator[IdentityActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.IdentityActuator
                


              click soromox.actuation.IdentityActuator href "" "soromox.actuation.IdentityActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Direct generalized-coordinate actuation used by default.

efforts

efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_values_for_robot

validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

IdentityActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.IdentityActuatorParams[IdentityActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.IdentityActuatorParams
                


              click soromox.actuation.IdentityActuatorParams href "" "soromox.actuation.IdentityActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Empty immutable parameter object for identity actuation.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate_structure

validate_structure() -> None

Validate statically observable parameter structure.

Returns:

Type Description
None

None. Subclasses override this hook to raise on invalid types,

None

shapes, PyTree layout, or static topology. Implementations must be

None

safe when array leaves are JAX tracers.

validate_values

validate_values() -> None

Validate eager value-dependent parameter invariants.

Returns:

Type Description
None

None. Subclasses override this hook for finiteness, physical

None

domains, symmetry, and other checks requiring concrete values.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

IdentityTransmission

IdentityTransmission(num_channels: int)

Bases: Transmission


              flowchart TD
              soromox.actuation.IdentityTransmission[IdentityTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.IdentityTransmission
                


              click soromox.actuation.IdentityTransmission href "" "soromox.actuation.IdentityTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Identity generalized-coordinate transmission.

velocities

velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

PassiveElement

Bases: Module


              flowchart TD
              soromox.actuation.PassiveElement[PassiveElement]

              

              click soromox.actuation.PassiveElement href "" "soromox.actuation.PassiveElement"
            

Independent passive contribution to robot mechanics.

validate_structure_for_robot

validate_structure_for_robot(robot: SoftRobot) -> None

Validate tracer-safe component compatibility with robot.

validate_values_for_robot

validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

Transmission

Bases: Module


              flowchart TD
              soromox.actuation.Transmission[Transmission]

              

              click soromox.actuation.Transmission href "" "soromox.actuation.Transmission"
            

Map robot configuration to work-conjugate actuator coordinates.

num_channels abstractmethod property

num_channels: int

Number of scalar transmission coordinates.

coordinates abstractmethod

coordinates(robot: SoftRobot, q: Array) -> Array

Return transmission coordinates y_a(q).

moment_matrix abstractmethod

moment_matrix(robot: SoftRobot, q: Array) -> Array

Return dy_a/dq.T with shape (num_dofs, num_channels).

velocities

velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

AffineGeneralizedCoordinateActuator

AffineGeneralizedCoordinateActuator(*, params: AffineGeneralizedCoordinateActuatorParams, labels: tuple[str, ...] | None = None, units: str | tuple[str, ...] = 'generalized effort', name: str = 'affine_generalized_coordinate_actuator')

Bases: Actuator


              flowchart TD
              soromox.actuation.AffineGeneralizedCoordinateActuator[AffineGeneralizedCoordinateActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.AffineGeneralizedCoordinateActuator
                


              click soromox.actuation.AffineGeneralizedCoordinateActuator href "" "soromox.actuation.AffineGeneralizedCoordinateActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Apply signed controls through a constant affine coordinate map.

The actuator combines :class:AffineGeneralizedCoordinateTransmission with :class:DirectEffort. For a routing matrix R, reference configuration q_ref, and coordinate offset y_a0, its work-conjugate actuator coordinates and velocities are

y_a = R @ (q - q_ref) + y_a0 and yd_a = R @ qd.

A user control is interpreted directly as the signed effort conjugate to y_a. The generalized force is therefore tau = R.T @ control and satisfies the power identity qd.T @ tau = yd_a.T @ control. This makes the class suitable for direct joint torques, prismatic forces, selected generalized-coordinate efforts, or fixed linear combinations of them. It imposes no tendon-specific positivity, serial-routing, or host restrictions.

Input bounds are exposed through :attr:metadata for downstream consumers. They are intentionally not enforced inside :meth:efforts; controls outside those bounds still produce the corresponding linear generalized force.

efforts

efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_values_for_robot

validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

from_routing classmethod

from_routing(routing_matrix: Array, *, reference_configuration: Array | None = None, coordinate_offset: Array | float = 0.0, lower_bounds: Array | float | None = None, upper_bounds: Array | float | None = None, labels: tuple[str, ...] | None = None, units: str | tuple[str, ...] = 'generalized effort', name: str = 'affine_generalized_coordinate_actuator') -> AffineGeneralizedCoordinateActuator

Construct signed direct actuation from an affine routing matrix.

Bounds are exposed through :class:ActuatorMetadata and are not enforced by clipping. Omitting either bound makes it infinite.

AffineGeneralizedCoordinateActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.AffineGeneralizedCoordinateActuatorParams[AffineGeneralizedCoordinateActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.AffineGeneralizedCoordinateActuatorParams
                


              click soromox.actuation.AffineGeneralizedCoordinateActuatorParams href "" "soromox.actuation.AffineGeneralizedCoordinateActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Parameters for signed direct effort through an affine coordinate map.

transmission defines actuator work coordinates y_a = R @ (q - q_ref) + y_a0. The corresponding moment matrix is A = R.T. lower_bounds and upper_bounds are ordered channel metadata for controllers, trajectory optimization, and user interfaces; they do not modify or clip controls passed to the actuator.

Attributes:

Name Type Description
transmission AffineGeneralizedCoordinateTransmissionParams

Affine generalized-coordinate transmission with one row per actuator channel and one column per robot coordinate.

lower_bounds Array

Descriptive lower control bound for every channel.

upper_bounds Array

Descriptive upper control bound for every channel.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

AffineGeneralizedCoordinateTransmission

AffineGeneralizedCoordinateTransmission(params: AffineGeneralizedCoordinateTransmissionParams)

Bases: Transmission


              flowchart TD
              soromox.actuation.AffineGeneralizedCoordinateTransmission[AffineGeneralizedCoordinateTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.AffineGeneralizedCoordinateTransmission
                


              click soromox.actuation.AffineGeneralizedCoordinateTransmission href "" "soromox.actuation.AffineGeneralizedCoordinateTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Affine actuator coordinates R @ (q - q_ref) + y_a0.

velocities

velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

AffineGeneralizedCoordinateTransmissionParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.AffineGeneralizedCoordinateTransmissionParams[AffineGeneralizedCoordinateTransmissionParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.AffineGeneralizedCoordinateTransmissionParams
                


              click soromox.actuation.AffineGeneralizedCoordinateTransmissionParams href "" "soromox.actuation.AffineGeneralizedCoordinateTransmissionParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Parameters for an affine mapping to actuator coordinates.

Attributes:

Name Type Description
routing_matrix Array

Matrix R with shape (num_channels, num_dofs). Each row is the derivative of one actuator coordinate with respect to the generalized coordinates.

reference_configuration Array

Generalized configuration q_ref at which the affine displacement term is zero.

coordinate_offset Array

Per-channel actuator coordinate y_a0 at q_ref, in the same units as the actuator coordinate. Thus y_a(q_ref) = y_a0 and the differential map is dy_a/dq = R. For passive tendon impedance, y_a0 specifies the deformation and corresponding preload at q_ref.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate_values

validate_values() -> None

Validate eager value-dependent parameter invariants.

Returns:

Type Description
None

None. Subclasses override this hook for finiteness, physical

None

domains, symmetry, and other checks requiring concrete values.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ArticulatedTendonActuator

ArticulatedTendonActuator(*, params: ArticulatedTendonActuatorParams, labels: tuple[str, ...] | None = None, name: str = 'articulated_tendons')

Bases: Actuator


              flowchart TD
              soromox.actuation.ArticulatedTendonActuator[ArticulatedTendonActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.ArticulatedTendonActuator
                


              click soromox.actuation.ArticulatedTendonActuator href "" "soromox.actuation.ArticulatedTendonActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Positive-tension actuation through fixed signed joint routing.

efforts

efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

from_routing classmethod

from_routing(routing_matrix: Array, *, reference_configuration: Array | None = None, coordinate_offset: Array | float = 0.0, lower_bounds: Array | float = 0.0, upper_bounds: Array | float = inf, labels: tuple[str, ...] | None = None, name: str = 'articulated_tendons') -> ArticulatedTendonActuator

Construct direct-tension actuation from signed joint routing.

The resulting actuator coordinate is routing_matrix @ (q - reference_configuration) + coordinate_offset. Each routing row is the signed contraction Jacobian of one tendon.

Parameters:

Name Type Description Default
routing_matrix Array

Signed tendon routing with one row per tendon and one column per generalized coordinate.

required
reference_configuration Array | None

Configuration q_ref used as the origin of the routing displacement. Defaults to zero.

None
coordinate_offset Array | float

Actuator coordinate y_a0 at q_ref, as a scalar shared by all tendons or one value per tendon. Under DirectEffort, the generalized force is R.T @ control.

0.0
lower_bounds Array | float

Lower tension bounds, shared or per tendon.

0.0
upper_bounds Array | float

Upper tension bounds, shared or per tendon.

inf
labels tuple[str, ...] | None

Optional input label for each tendon.

None
name str

Component name used for identification and rendering.

'articulated_tendons'

Returns:

Type Description
ArticulatedTendonActuator

An articulated tendon actuator with direct tension effort.

ArticulatedTendonActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.ArticulatedTendonActuatorParams[ArticulatedTendonActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.ArticulatedTendonActuatorParams
                


              click soromox.actuation.ArticulatedTendonActuatorParams href "" "soromox.actuation.ArticulatedTendonActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Physical parameters for direct-effort articulated tendons.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ArticulatedTendonImpedance

ArticulatedTendonImpedance(*, params: ArticulatedTendonImpedanceParams, name: str = 'passive_articulated_tendons')

Bases: PassiveElement


              flowchart TD
              soromox.actuation.ArticulatedTendonImpedance[ArticulatedTendonImpedance]
              soromox.actuation.core.PassiveElement[PassiveElement]

                              soromox.actuation.core.PassiveElement --> soromox.actuation.ArticulatedTendonImpedance
                


              click soromox.actuation.ArticulatedTendonImpedance href "" "soromox.actuation.ArticulatedTendonImpedance"
              click soromox.actuation.core.PassiveElement href "" "soromox.actuation.core.PassiveElement"
            

Passive spring-damper mechanics in affine tendon coordinates.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

from_routing classmethod

from_routing(routing_matrix: Array, *, stiffness: Array, damping: Array, reference_configuration: Array | None = None, coordinate_offset: Array | float = 0.0, name: str = 'passive_articulated_tendons') -> ArticulatedTendonImpedance

Construct passive spring-damper mechanics in tendon coordinates.

Parameters:

Name Type Description Default
routing_matrix Array

Signed tendon routing with one row per passive tendon and one column per generalized coordinate.

required
stiffness Array

Actuator-space stiffness, one value per tendon.

required
damping Array

Actuator-space damping, one value per tendon.

required
reference_configuration Array | None

Configuration q_ref used as the origin of the routing displacement. Defaults to zero.

None
coordinate_offset Array | float

Tendon deformation y_a0 at q_ref, as a scalar shared by all tendons or one value per tendon. Zero makes q_ref unstrained; a nonzero value creates elastic preload R.T @ (stiffness * y_a0).

0.0
name str

Component name used for identification and rendering.

'passive_articulated_tendons'

Returns:

Type Description
ArticulatedTendonImpedance

A passive articulated tendon impedance component.

ArticulatedTendonImpedanceParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.ArticulatedTendonImpedanceParams[ArticulatedTendonImpedanceParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.ArticulatedTendonImpedanceParams
                


              click soromox.actuation.ArticulatedTendonImpedanceParams href "" "soromox.actuation.ArticulatedTendonImpedanceParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Spring-damper parameters for articulated tendon coordinates.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ArticulatedMcKibbenActuator

ArticulatedMcKibbenActuator(*, params: ArticulatedMcKibbenActuatorParams, labels: tuple[str, ...] | None = None, name: str = 'mckibben_muscles')

Bases: Actuator


              flowchart TD
              soromox.actuation.ArticulatedMcKibbenActuator[ArticulatedMcKibbenActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.ArticulatedMcKibbenActuator
                


              click soromox.actuation.ArticulatedMcKibbenActuator href "" "soromox.actuation.ArticulatedMcKibbenActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Direct-pressure McKibben muscle actuator.

Controls are pressures in pascals. The transmission supplies equivalent volume coordinates, while diagnostic helpers expose effective lengths, endpoint segments, and signed axial forces. Installation requires a spatial articulated robot implementing the kinematic-frame contract; continuum hosts must use an appropriate continuum transmission instead.

efforts

efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

empty classmethod

empty(actuators_per_group: int = 4) -> ArticulatedMcKibbenActuator

Construct a zero-channel actuator with fixed empty group topology.

ArticulatedMcKibbenActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.ArticulatedMcKibbenActuatorParams[ArticulatedMcKibbenActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.ArticulatedMcKibbenActuatorParams
                


              click soromox.actuation.ArticulatedMcKibbenActuatorParams href "" "soromox.actuation.ArticulatedMcKibbenActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

McKibben transmission and pressure bounds.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

validate_structure

validate_structure() -> None

Validate McKibben actuator parameter structure.

validate_values

validate_values() -> None

Validate eager nested McKibben transmission values.

ArticulatedMcKibbenTransmission

ArticulatedMcKibbenTransmission(params: ArticulatedMcKibbenTransmissionParams)

Bases: Transmission


              flowchart TD
              soromox.actuation.ArticulatedMcKibbenTransmission[ArticulatedMcKibbenTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.ArticulatedMcKibbenTransmission
                


              click soromox.actuation.ArticulatedMcKibbenTransmission href "" "soromox.actuation.ArticulatedMcKibbenTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Pressure-work transmission using McKibben volume coordinates.

The transmission owns fixed and moving attachment geometry for grouped universal joints on a spatial articulated host. It computes effective muscle lengths, the volume-like coordinate work-conjugate to pressure, its analytic moment matrix, and renderer-facing endpoint segments without embedding those mechanics in a particular articulated robot class.

velocities

velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

local_segments

local_segments(q: Array) -> Array

Return group-local fixed/moving endpoint segments.

Returns:

Type Description
Array

Array with shape (num_groups, actuators_per_group, 2, 3).

Array

Endpoint axis 2 is ordered as [fixed, moving].

segments

segments(robot, q: Array) -> Array

Return world-space actuator endpoint segments for rendering.

Returns:

Type Description
Array

Array with shape (num_channels, 2, 3) whose endpoint axis is

Array

ordered as [fixed, moving].

effective_lengths

effective_lengths(q: Array) -> Array

Return effective McKibben muscle lengths.

For actuator i, the effective length is its current geometric endpoint distance minus reference_length[i] plus length_offset[i].

coordinates

coordinates(robot, q: Array) -> Array

Return pressure-work coordinates for all McKibben muscles.

The coordinate is (B**2 - length**2) * length / (4*pi*N**2) and has volume units, making pressure its work-conjugate effort.

moment_matrix

moment_matrix(robot, q: Array) -> Array

Return the analytic pressure-to-generalized-force matrix A(q).

axial_forces

axial_forces(q: Array, pressures: Array) -> Array

Return per-muscle axial forces for the supplied pressures.

The sign convention and constitutive equation match the cached UMArm model and its MuJoCo implementation.

ArticulatedMcKibbenTransmissionParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.ArticulatedMcKibbenTransmissionParams[ArticulatedMcKibbenTransmissionParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.ArticulatedMcKibbenTransmissionParams
                


              click soromox.actuation.ArticulatedMcKibbenTransmissionParams href "" "soromox.actuation.ArticulatedMcKibbenTransmissionParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Attachment geometry and constitutive parameters for McKibben groups.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

validate_values

validate_values() -> None

Validate eager McKibben topology values.

from_cached_npz classmethod

from_cached_npz(path: str | Path) -> ArticulatedMcKibbenTransmissionParams

Load McKibben transmission fields from an existing UMArm cache.

BaseThreadlikeRoutingParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.BaseThreadlikeRoutingParams[BaseThreadlikeRoutingParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.BaseThreadlikeRoutingParams
                


              click soromox.actuation.BaseThreadlikeRoutingParams href "" "soromox.actuation.BaseThreadlikeRoutingParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Base PyTree contract for vectorized threadlike routing parameters.

validate_structure

validate_structure() -> None

Validate statically observable parameter structure.

Returns:

Type Description
None

None. Subclasses override this hook to raise on invalid types,

None

shapes, PyTree layout, or static topology. Implementations must be

None

safe when array leaves are JAX tracers.

validate_values

validate_values() -> None

Validate eager value-dependent parameter invariants.

Returns:

Type Description
None

None. Subclasses override this hook for finiteness, physical

None

domains, symmetry, and other checks requiring concrete values.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

replace

replace(**updates: Any) -> BaseThreadlikeRoutingParams

Replace numeric fields while keeping routing topology immutable.

LinearThreadlikeRoutingParams

Bases: BaseThreadlikeRoutingParams


              flowchart TD
              soromox.actuation.LinearThreadlikeRoutingParams[LinearThreadlikeRoutingParams]
              soromox.actuation.threadlike.BaseThreadlikeRoutingParams[BaseThreadlikeRoutingParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.actuation.threadlike.BaseThreadlikeRoutingParams --> soromox.actuation.LinearThreadlikeRoutingParams
                                soromox.systems.params.BaseSystemParams --> soromox.actuation.threadlike.BaseThreadlikeRoutingParams
                



              click soromox.actuation.LinearThreadlikeRoutingParams href "" "soromox.actuation.LinearThreadlikeRoutingParams"
              click soromox.actuation.threadlike.BaseThreadlikeRoutingParams href "" "soromox.actuation.threadlike.BaseThreadlikeRoutingParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Batched linear material-frame routing and contiguous segment spans.

intercept and slope have shape (num_paths, 3) in the local material frame. Because SoRoMoX aligns the backbone with the local x-axis, their x-components must be zero; the remaining components describe the path within each material-frame cross-section.

replace

replace(**updates: Any) -> BaseThreadlikeRoutingParams

Replace numeric fields while keeping routing topology immutable.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

validate_values

validate_values() -> None

Validate eager linear-routing values.

ThreadlikeActuator

ThreadlikeActuator(*, params: ThreadlikeActuatorParams, routing: ThreadlikeRouting | None = None, labels: tuple[str, ...], units: str | tuple[str, ...], name: str, kind: ThreadlikeKind)

Bases: Actuator


              flowchart TD
              soromox.actuation.ThreadlikeActuator[ThreadlikeActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.ThreadlikeActuator
                


              click soromox.actuation.ThreadlikeActuator href "" "soromox.actuation.ThreadlikeActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Vectorized threadlike actuator with modality-specific presets.

efforts

efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

ThreadlikeActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.ThreadlikeActuatorParams[ThreadlikeActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.ThreadlikeActuatorParams
                


              click soromox.actuation.ThreadlikeActuatorParams href "" "soromox.actuation.ThreadlikeActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Physical and control parameters for a threadlike actuator family.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

validate_structure

validate_structure() -> None

Validate threadlike actuator parameter structure.

validate_values

validate_values() -> None

Validate eager nested threadlike transmission values.

ThreadlikeImpedance

ThreadlikeImpedance(*, routing: ThreadlikeRouting | BaseThreadlikeRoutingParams, stiffness: Array, damping: Array, rest_length: Array, name: str = 'passive_threadlike')

Bases: PassiveElement


              flowchart TD
              soromox.actuation.ThreadlikeImpedance[ThreadlikeImpedance]
              soromox.actuation.core.PassiveElement[PassiveElement]

                              soromox.actuation.core.PassiveElement --> soromox.actuation.ThreadlikeImpedance
                


              click soromox.actuation.ThreadlikeImpedance href "" "soromox.actuation.ThreadlikeImpedance"
              click soromox.actuation.core.PassiveElement href "" "soromox.actuation.core.PassiveElement"
            

Passive spring-damper mechanics along fixed threadlike paths.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

path_lengths

path_lengths(robot, q: Array) -> Array

Return the raw lengths of the passive routed paths.

path_velocities

path_velocities(robot, q: Array, qd: Array) -> Array

Return the raw length rates of the passive routed paths.

path_poses

path_poses(robot, q: Array, s: Array) -> Array

Return passive routed-path positions at backbone coordinate s.

ThreadlikeImpedanceParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.ThreadlikeImpedanceParams[ThreadlikeImpedanceParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.ThreadlikeImpedanceParams
                


              click soromox.actuation.ThreadlikeImpedanceParams href "" "soromox.actuation.ThreadlikeImpedanceParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Spring-damper parameters for passive routed paths.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

validate_structure

validate_structure() -> None

Validate threadlike impedance parameter structure.

validate_values

validate_values() -> None

Validate eager nested threadlike routing values.

ThreadlikeRouting

Bases: Module


              flowchart TD
              soromox.actuation.ThreadlikeRouting[ThreadlikeRouting]

              

              click soromox.actuation.ThreadlikeRouting href "" "soromox.actuation.ThreadlikeRouting"
            

Runtime routing object for a batched fixed material-frame path family.

linear classmethod

linear(*, intercept: Array, slope: Array | float = 0.0, start_segment_index: int | tuple[int, ...] | Array = 0, end_segment_index: int | tuple[int, ...] | Array = 0) -> ThreadlikeRouting

Construct linear cross-section paths in the local material frame.

The final array axis is [x, y, z]. Local x follows the backbone, so the x-components of intercept and slope must both be zero.

offset

offset(path_params: BaseThreadlikeRoutingParams, s: Array) -> Array

Evaluate one path's material-frame offset at s.

derivative

derivative(path_params: BaseThreadlikeRoutingParams, s: Array) -> Array

Evaluate one path's material-frame offset derivative at s.

ThreadlikeTransmission

ThreadlikeTransmission(params: ThreadlikeTransmissionParams, *, routing: ThreadlikeRouting | None = None)

Bases: Transmission


              flowchart TD
              soromox.actuation.ThreadlikeTransmission[ThreadlikeTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.ThreadlikeTransmission
                


              click soromox.actuation.ThreadlikeTransmission href "" "soromox.actuation.ThreadlikeTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Transmission whose coordinates are scaled routed-path lengths.

velocities

velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

ThreadlikeTransmissionParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.ThreadlikeTransmissionParams[ThreadlikeTransmissionParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.ThreadlikeTransmissionParams
                


              click soromox.actuation.ThreadlikeTransmissionParams href "" "soromox.actuation.ThreadlikeTransmissionParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Routing parameters and constant work-coordinate scale per path.

replace

replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate

validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update

validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility

validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility

validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure

validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

validate_structure

validate_structure() -> None

Validate threadlike transmission parameter structure.

validate_values

validate_values() -> None

Validate eager nested routing values.

linear_threadlike_routing

linear_threadlike_routing(params: LinearThreadlikeRoutingParams, s: Array) -> Array

Return material-frame offsets intercept + slope * s.

linear_threadlike_routing_derivative

linear_threadlike_routing_derivative(params: LinearThreadlikeRoutingParams, s: Array) -> Array

Return the arc-length derivative of a linear routing offset.

core

Composable actuation primitives.

The actuation model follows a work-conjugate formulation. A transmission defines actuator coordinates y_a(q) and their moment matrix A(q) = dy_a/dq.T. An effort model maps user controls to efforts conjugate to those coordinates, and generalized actuation forces are A(q) @ effort.

ActuatorMetadata

ActuatorMetadata(*, labels: tuple[str, ...], units: str | tuple[str, ...], kind: ActuatorKind = 'generic', lower_bounds: Array | None = None, upper_bounds: Array | None = None)

Bases: Module


              flowchart TD
              soromox.actuation.core.ActuatorMetadata[ActuatorMetadata]

              

              click soromox.actuation.core.ActuatorMetadata href "" "soromox.actuation.core.ActuatorMetadata"
            

Ordered labels, units, limits, and semantics for input channels.

Transmission

Bases: Module


              flowchart TD
              soromox.actuation.core.Transmission[Transmission]

              

              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Map robot configuration to work-conjugate actuator coordinates.

num_channels abstractmethod property
num_channels: int

Number of scalar transmission coordinates.

coordinates abstractmethod
coordinates(robot: SoftRobot, q: Array) -> Array

Return transmission coordinates y_a(q).

moment_matrix abstractmethod
moment_matrix(robot: SoftRobot, q: Array) -> Array

Return dy_a/dq.T with shape (num_dofs, num_channels).

velocities
velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

EffortModel

Bases: Module


              flowchart TD
              soromox.actuation.core.EffortModel[EffortModel]

              

              click soromox.actuation.core.EffortModel href "" "soromox.actuation.core.EffortModel"
            

Map controls to efforts work-conjugate to transmission coordinates.

effort abstractmethod
effort(control: Array, coordinate: Array | None, velocity: Array | None) -> Array

Return actuator effort for the current control and transmission state.

DirectEffort

Bases: EffortModel


              flowchart TD
              soromox.actuation.core.DirectEffort[DirectEffort]
              soromox.actuation.core.EffortModel[EffortModel]

                              soromox.actuation.core.EffortModel --> soromox.actuation.core.DirectEffort
                


              click soromox.actuation.core.DirectEffort href "" "soromox.actuation.core.DirectEffort"
              click soromox.actuation.core.EffortModel href "" "soromox.actuation.core.EffortModel"
            

Stateless effort model for which effort is exactly the user control.

PassiveElement

Bases: Module


              flowchart TD
              soromox.actuation.core.PassiveElement[PassiveElement]

              

              click soromox.actuation.core.PassiveElement href "" "soromox.actuation.core.PassiveElement"
            

Independent passive contribution to robot mechanics.

validate_structure_for_robot
validate_structure_for_robot(robot: SoftRobot) -> None

Validate tracer-safe component compatibility with robot.

validate_values_for_robot
validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

Actuator

Bases: Module


              flowchart TD
              soromox.actuation.core.Actuator[Actuator]

              

              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

A transmission paired with an effort law and ordered channel metadata.

efforts
efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_structure_for_robot
validate_structure_for_robot(robot: SoftRobot) -> None

Validate tracer-safe component compatibility with robot.

validate_values_for_robot
validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

IdentityActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.core.IdentityActuatorParams[IdentityActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.core.IdentityActuatorParams
                


              click soromox.actuation.core.IdentityActuatorParams href "" "soromox.actuation.core.IdentityActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Empty immutable parameter object for identity actuation.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate_structure
validate_structure() -> None

Validate statically observable parameter structure.

Returns:

Type Description
None

None. Subclasses override this hook to raise on invalid types,

None

shapes, PyTree layout, or static topology. Implementations must be

None

safe when array leaves are JAX tracers.

validate_values
validate_values() -> None

Validate eager value-dependent parameter invariants.

Returns:

Type Description
None

None. Subclasses override this hook for finiteness, physical

None

domains, symmetry, and other checks requiring concrete values.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

IdentityTransmission

IdentityTransmission(num_channels: int)

Bases: Transmission


              flowchart TD
              soromox.actuation.core.IdentityTransmission[IdentityTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.core.IdentityTransmission
                


              click soromox.actuation.core.IdentityTransmission href "" "soromox.actuation.core.IdentityTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Identity generalized-coordinate transmission.

velocities
velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

IdentityActuator

IdentityActuator(num_channels: int)

Bases: Actuator


              flowchart TD
              soromox.actuation.core.IdentityActuator[IdentityActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.core.IdentityActuator
                


              click soromox.actuation.core.IdentityActuator href "" "soromox.actuation.core.IdentityActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Direct generalized-coordinate actuation used by default.

efforts
efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_values_for_robot
validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

joint

Joint-space transmissions and articulated tendon mechanics.

AffineGeneralizedCoordinateTransmissionParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.joint.AffineGeneralizedCoordinateTransmissionParams[AffineGeneralizedCoordinateTransmissionParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.joint.AffineGeneralizedCoordinateTransmissionParams
                


              click soromox.actuation.joint.AffineGeneralizedCoordinateTransmissionParams href "" "soromox.actuation.joint.AffineGeneralizedCoordinateTransmissionParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Parameters for an affine mapping to actuator coordinates.

Attributes:

Name Type Description
routing_matrix Array

Matrix R with shape (num_channels, num_dofs). Each row is the derivative of one actuator coordinate with respect to the generalized coordinates.

reference_configuration Array

Generalized configuration q_ref at which the affine displacement term is zero.

coordinate_offset Array

Per-channel actuator coordinate y_a0 at q_ref, in the same units as the actuator coordinate. Thus y_a(q_ref) = y_a0 and the differential map is dy_a/dq = R. For passive tendon impedance, y_a0 specifies the deformation and corresponding preload at q_ref.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate_values
validate_values() -> None

Validate eager value-dependent parameter invariants.

Returns:

Type Description
None

None. Subclasses override this hook for finiteness, physical

None

domains, symmetry, and other checks requiring concrete values.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

AffineGeneralizedCoordinateTransmission

AffineGeneralizedCoordinateTransmission(params: AffineGeneralizedCoordinateTransmissionParams)

Bases: Transmission


              flowchart TD
              soromox.actuation.joint.AffineGeneralizedCoordinateTransmission[AffineGeneralizedCoordinateTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.joint.AffineGeneralizedCoordinateTransmission
                


              click soromox.actuation.joint.AffineGeneralizedCoordinateTransmission href "" "soromox.actuation.joint.AffineGeneralizedCoordinateTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Affine actuator coordinates R @ (q - q_ref) + y_a0.

velocities
velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

AffineGeneralizedCoordinateActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.joint.AffineGeneralizedCoordinateActuatorParams[AffineGeneralizedCoordinateActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.joint.AffineGeneralizedCoordinateActuatorParams
                


              click soromox.actuation.joint.AffineGeneralizedCoordinateActuatorParams href "" "soromox.actuation.joint.AffineGeneralizedCoordinateActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Parameters for signed direct effort through an affine coordinate map.

transmission defines actuator work coordinates y_a = R @ (q - q_ref) + y_a0. The corresponding moment matrix is A = R.T. lower_bounds and upper_bounds are ordered channel metadata for controllers, trajectory optimization, and user interfaces; they do not modify or clip controls passed to the actuator.

Attributes:

Name Type Description
transmission AffineGeneralizedCoordinateTransmissionParams

Affine generalized-coordinate transmission with one row per actuator channel and one column per robot coordinate.

lower_bounds Array

Descriptive lower control bound for every channel.

upper_bounds Array

Descriptive upper control bound for every channel.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

AffineGeneralizedCoordinateActuator

AffineGeneralizedCoordinateActuator(*, params: AffineGeneralizedCoordinateActuatorParams, labels: tuple[str, ...] | None = None, units: str | tuple[str, ...] = 'generalized effort', name: str = 'affine_generalized_coordinate_actuator')

Bases: Actuator


              flowchart TD
              soromox.actuation.joint.AffineGeneralizedCoordinateActuator[AffineGeneralizedCoordinateActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.joint.AffineGeneralizedCoordinateActuator
                


              click soromox.actuation.joint.AffineGeneralizedCoordinateActuator href "" "soromox.actuation.joint.AffineGeneralizedCoordinateActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Apply signed controls through a constant affine coordinate map.

The actuator combines :class:AffineGeneralizedCoordinateTransmission with :class:DirectEffort. For a routing matrix R, reference configuration q_ref, and coordinate offset y_a0, its work-conjugate actuator coordinates and velocities are

y_a = R @ (q - q_ref) + y_a0 and yd_a = R @ qd.

A user control is interpreted directly as the signed effort conjugate to y_a. The generalized force is therefore tau = R.T @ control and satisfies the power identity qd.T @ tau = yd_a.T @ control. This makes the class suitable for direct joint torques, prismatic forces, selected generalized-coordinate efforts, or fixed linear combinations of them. It imposes no tendon-specific positivity, serial-routing, or host restrictions.

Input bounds are exposed through :attr:metadata for downstream consumers. They are intentionally not enforced inside :meth:efforts; controls outside those bounds still produce the corresponding linear generalized force.

from_routing classmethod
from_routing(routing_matrix: Array, *, reference_configuration: Array | None = None, coordinate_offset: Array | float = 0.0, lower_bounds: Array | float | None = None, upper_bounds: Array | float | None = None, labels: tuple[str, ...] | None = None, units: str | tuple[str, ...] = 'generalized effort', name: str = 'affine_generalized_coordinate_actuator') -> AffineGeneralizedCoordinateActuator

Construct signed direct actuation from an affine routing matrix.

Bounds are exposed through :class:ActuatorMetadata and are not enforced by clipping. Omitting either bound makes it infinite.

efforts
efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_values_for_robot
validate_values_for_robot(robot: SoftRobot) -> None

Validate concrete component values against robot.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

ArticulatedTendonActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.joint.ArticulatedTendonActuatorParams[ArticulatedTendonActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.joint.ArticulatedTendonActuatorParams
                


              click soromox.actuation.joint.ArticulatedTendonActuatorParams href "" "soromox.actuation.joint.ArticulatedTendonActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Physical parameters for direct-effort articulated tendons.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ArticulatedTendonActuator

ArticulatedTendonActuator(*, params: ArticulatedTendonActuatorParams, labels: tuple[str, ...] | None = None, name: str = 'articulated_tendons')

Bases: Actuator


              flowchart TD
              soromox.actuation.joint.ArticulatedTendonActuator[ArticulatedTendonActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.joint.ArticulatedTendonActuator
                


              click soromox.actuation.joint.ArticulatedTendonActuator href "" "soromox.actuation.joint.ArticulatedTendonActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Positive-tension actuation through fixed signed joint routing.

from_routing classmethod
from_routing(routing_matrix: Array, *, reference_configuration: Array | None = None, coordinate_offset: Array | float = 0.0, lower_bounds: Array | float = 0.0, upper_bounds: Array | float = inf, labels: tuple[str, ...] | None = None, name: str = 'articulated_tendons') -> ArticulatedTendonActuator

Construct direct-tension actuation from signed joint routing.

The resulting actuator coordinate is routing_matrix @ (q - reference_configuration) + coordinate_offset. Each routing row is the signed contraction Jacobian of one tendon.

Parameters:

Name Type Description Default
routing_matrix Array

Signed tendon routing with one row per tendon and one column per generalized coordinate.

required
reference_configuration Array | None

Configuration q_ref used as the origin of the routing displacement. Defaults to zero.

None
coordinate_offset Array | float

Actuator coordinate y_a0 at q_ref, as a scalar shared by all tendons or one value per tendon. Under DirectEffort, the generalized force is R.T @ control.

0.0
lower_bounds Array | float

Lower tension bounds, shared or per tendon.

0.0
upper_bounds Array | float

Upper tension bounds, shared or per tendon.

inf
labels tuple[str, ...] | None

Optional input label for each tendon.

None
name str

Component name used for identification and rendering.

'articulated_tendons'

Returns:

Type Description
ArticulatedTendonActuator

An articulated tendon actuator with direct tension effort.

efforts
efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

ArticulatedTendonImpedanceParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.joint.ArticulatedTendonImpedanceParams[ArticulatedTendonImpedanceParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.joint.ArticulatedTendonImpedanceParams
                


              click soromox.actuation.joint.ArticulatedTendonImpedanceParams href "" "soromox.actuation.joint.ArticulatedTendonImpedanceParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Spring-damper parameters for articulated tendon coordinates.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ArticulatedTendonImpedance

ArticulatedTendonImpedance(*, params: ArticulatedTendonImpedanceParams, name: str = 'passive_articulated_tendons')

Bases: PassiveElement


              flowchart TD
              soromox.actuation.joint.ArticulatedTendonImpedance[ArticulatedTendonImpedance]
              soromox.actuation.core.PassiveElement[PassiveElement]

                              soromox.actuation.core.PassiveElement --> soromox.actuation.joint.ArticulatedTendonImpedance
                


              click soromox.actuation.joint.ArticulatedTendonImpedance href "" "soromox.actuation.joint.ArticulatedTendonImpedance"
              click soromox.actuation.core.PassiveElement href "" "soromox.actuation.core.PassiveElement"
            

Passive spring-damper mechanics in affine tendon coordinates.

from_routing classmethod
from_routing(routing_matrix: Array, *, stiffness: Array, damping: Array, reference_configuration: Array | None = None, coordinate_offset: Array | float = 0.0, name: str = 'passive_articulated_tendons') -> ArticulatedTendonImpedance

Construct passive spring-damper mechanics in tendon coordinates.

Parameters:

Name Type Description Default
routing_matrix Array

Signed tendon routing with one row per passive tendon and one column per generalized coordinate.

required
stiffness Array

Actuator-space stiffness, one value per tendon.

required
damping Array

Actuator-space damping, one value per tendon.

required
reference_configuration Array | None

Configuration q_ref used as the origin of the routing displacement. Defaults to zero.

None
coordinate_offset Array | float

Tendon deformation y_a0 at q_ref, as a scalar shared by all tendons or one value per tendon. Zero makes q_ref unstrained; a nonzero value creates elastic preload R.T @ (stiffness * y_a0).

0.0
name str

Component name used for identification and rendering.

'passive_articulated_tendons'

Returns:

Type Description
ArticulatedTendonImpedance

A passive articulated tendon impedance component.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

mckibben

McKibben pneumatic-muscle transmission for spatial articulated robots.

This module's geometry is intentionally specific to grouped muscles spanning two-axis articulated joints. It requires a host that provides spatial kinematic frames; it is not a continuum-rod transmission. Continuum models can use threadlike muscle or equivalent pressure-chamber coordinates, while a future continuum McKibben model may reuse the constitutive equation with a different geometry contract.

ArticulatedMcKibbenTransmissionParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.mckibben.ArticulatedMcKibbenTransmissionParams[ArticulatedMcKibbenTransmissionParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.mckibben.ArticulatedMcKibbenTransmissionParams
                


              click soromox.actuation.mckibben.ArticulatedMcKibbenTransmissionParams href "" "soromox.actuation.mckibben.ArticulatedMcKibbenTransmissionParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Attachment geometry and constitutive parameters for McKibben groups.

validate_values
validate_values() -> None

Validate eager McKibben topology values.

from_cached_npz classmethod
from_cached_npz(path: str | Path) -> ArticulatedMcKibbenTransmissionParams

Load McKibben transmission fields from an existing UMArm cache.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ArticulatedMcKibbenTransmission

ArticulatedMcKibbenTransmission(params: ArticulatedMcKibbenTransmissionParams)

Bases: Transmission


              flowchart TD
              soromox.actuation.mckibben.ArticulatedMcKibbenTransmission[ArticulatedMcKibbenTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.mckibben.ArticulatedMcKibbenTransmission
                


              click soromox.actuation.mckibben.ArticulatedMcKibbenTransmission href "" "soromox.actuation.mckibben.ArticulatedMcKibbenTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Pressure-work transmission using McKibben volume coordinates.

The transmission owns fixed and moving attachment geometry for grouped universal joints on a spatial articulated host. It computes effective muscle lengths, the volume-like coordinate work-conjugate to pressure, its analytic moment matrix, and renderer-facing endpoint segments without embedding those mechanics in a particular articulated robot class.

local_segments
local_segments(q: Array) -> Array

Return group-local fixed/moving endpoint segments.

Returns:

Type Description
Array

Array with shape (num_groups, actuators_per_group, 2, 3).

Array

Endpoint axis 2 is ordered as [fixed, moving].

segments
segments(robot, q: Array) -> Array

Return world-space actuator endpoint segments for rendering.

Returns:

Type Description
Array

Array with shape (num_channels, 2, 3) whose endpoint axis is

Array

ordered as [fixed, moving].

effective_lengths
effective_lengths(q: Array) -> Array

Return effective McKibben muscle lengths.

For actuator i, the effective length is its current geometric endpoint distance minus reference_length[i] plus length_offset[i].

coordinates
coordinates(robot, q: Array) -> Array

Return pressure-work coordinates for all McKibben muscles.

The coordinate is (B**2 - length**2) * length / (4*pi*N**2) and has volume units, making pressure its work-conjugate effort.

moment_matrix
moment_matrix(robot, q: Array) -> Array

Return the analytic pressure-to-generalized-force matrix A(q).

axial_forces
axial_forces(q: Array, pressures: Array) -> Array

Return per-muscle axial forces for the supplied pressures.

The sign convention and constitutive equation match the cached UMArm model and its MuJoCo implementation.

velocities
velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

ArticulatedMcKibbenActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.mckibben.ArticulatedMcKibbenActuatorParams[ArticulatedMcKibbenActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.mckibben.ArticulatedMcKibbenActuatorParams
                


              click soromox.actuation.mckibben.ArticulatedMcKibbenActuatorParams href "" "soromox.actuation.mckibben.ArticulatedMcKibbenActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

McKibben transmission and pressure bounds.

validate_structure
validate_structure() -> None

Validate McKibben actuator parameter structure.

validate_values
validate_values() -> None

Validate eager nested McKibben transmission values.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ArticulatedMcKibbenActuator

ArticulatedMcKibbenActuator(*, params: ArticulatedMcKibbenActuatorParams, labels: tuple[str, ...] | None = None, name: str = 'mckibben_muscles')

Bases: Actuator


              flowchart TD
              soromox.actuation.mckibben.ArticulatedMcKibbenActuator[ArticulatedMcKibbenActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.mckibben.ArticulatedMcKibbenActuator
                


              click soromox.actuation.mckibben.ArticulatedMcKibbenActuator href "" "soromox.actuation.mckibben.ArticulatedMcKibbenActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Direct-pressure McKibben muscle actuator.

Controls are pressures in pascals. The transmission supplies equivalent volume coordinates, while diagnostic helpers expose effective lengths, endpoint segments, and signed axial forces. Installation requires a spatial articulated robot implementing the kinematic-frame contract; continuum hosts must use an appropriate continuum transmission instead.

empty classmethod
empty(actuators_per_group: int = 4) -> ArticulatedMcKibbenActuator

Construct a zero-channel actuator with fixed empty group topology.

efforts
efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

threadlike

Fixed material-frame routing for threadlike continuum actuators.

BaseThreadlikeRoutingParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.threadlike.BaseThreadlikeRoutingParams[BaseThreadlikeRoutingParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.threadlike.BaseThreadlikeRoutingParams
                


              click soromox.actuation.threadlike.BaseThreadlikeRoutingParams href "" "soromox.actuation.threadlike.BaseThreadlikeRoutingParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Base PyTree contract for vectorized threadlike routing parameters.

replace
replace(**updates: Any) -> BaseThreadlikeRoutingParams

Replace numeric fields while keeping routing topology immutable.

validate_structure
validate_structure() -> None

Validate statically observable parameter structure.

Returns:

Type Description
None

None. Subclasses override this hook to raise on invalid types,

None

shapes, PyTree layout, or static topology. Implementations must be

None

safe when array leaves are JAX tracers.

validate_values
validate_values() -> None

Validate eager value-dependent parameter invariants.

Returns:

Type Description
None

None. Subclasses override this hook for finiteness, physical

None

domains, symmetry, and other checks requiring concrete values.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

LinearThreadlikeRoutingParams

Bases: BaseThreadlikeRoutingParams


              flowchart TD
              soromox.actuation.threadlike.LinearThreadlikeRoutingParams[LinearThreadlikeRoutingParams]
              soromox.actuation.threadlike.BaseThreadlikeRoutingParams[BaseThreadlikeRoutingParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.actuation.threadlike.BaseThreadlikeRoutingParams --> soromox.actuation.threadlike.LinearThreadlikeRoutingParams
                                soromox.systems.params.BaseSystemParams --> soromox.actuation.threadlike.BaseThreadlikeRoutingParams
                



              click soromox.actuation.threadlike.LinearThreadlikeRoutingParams href "" "soromox.actuation.threadlike.LinearThreadlikeRoutingParams"
              click soromox.actuation.threadlike.BaseThreadlikeRoutingParams href "" "soromox.actuation.threadlike.BaseThreadlikeRoutingParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Batched linear material-frame routing and contiguous segment spans.

intercept and slope have shape (num_paths, 3) in the local material frame. Because SoRoMoX aligns the backbone with the local x-axis, their x-components must be zero; the remaining components describe the path within each material-frame cross-section.

validate_values
validate_values() -> None

Validate eager linear-routing values.

replace
replace(**updates: Any) -> BaseThreadlikeRoutingParams

Replace numeric fields while keeping routing topology immutable.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ThreadlikeRouting

Bases: Module


              flowchart TD
              soromox.actuation.threadlike.ThreadlikeRouting[ThreadlikeRouting]

              

              click soromox.actuation.threadlike.ThreadlikeRouting href "" "soromox.actuation.threadlike.ThreadlikeRouting"
            

Runtime routing object for a batched fixed material-frame path family.

linear classmethod
linear(*, intercept: Array, slope: Array | float = 0.0, start_segment_index: int | tuple[int, ...] | Array = 0, end_segment_index: int | tuple[int, ...] | Array = 0) -> ThreadlikeRouting

Construct linear cross-section paths in the local material frame.

The final array axis is [x, y, z]. Local x follows the backbone, so the x-components of intercept and slope must both be zero.

offset
offset(path_params: BaseThreadlikeRoutingParams, s: Array) -> Array

Evaluate one path's material-frame offset at s.

derivative
derivative(path_params: BaseThreadlikeRoutingParams, s: Array) -> Array

Evaluate one path's material-frame offset derivative at s.

ThreadlikeTransmissionParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.threadlike.ThreadlikeTransmissionParams[ThreadlikeTransmissionParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.threadlike.ThreadlikeTransmissionParams
                


              click soromox.actuation.threadlike.ThreadlikeTransmissionParams href "" "soromox.actuation.threadlike.ThreadlikeTransmissionParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Routing parameters and constant work-coordinate scale per path.

validate_structure
validate_structure() -> None

Validate threadlike transmission parameter structure.

validate_values
validate_values() -> None

Validate eager nested routing values.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ThreadlikeTransmission

ThreadlikeTransmission(params: ThreadlikeTransmissionParams, *, routing: ThreadlikeRouting | None = None)

Bases: Transmission


              flowchart TD
              soromox.actuation.threadlike.ThreadlikeTransmission[ThreadlikeTransmission]
              soromox.actuation.core.Transmission[Transmission]

                              soromox.actuation.core.Transmission --> soromox.actuation.threadlike.ThreadlikeTransmission
                


              click soromox.actuation.threadlike.ThreadlikeTransmission href "" "soromox.actuation.threadlike.ThreadlikeTransmission"
              click soromox.actuation.core.Transmission href "" "soromox.actuation.core.Transmission"
            

Transmission whose coordinates are scaled routed-path lengths.

velocities
velocities(robot: SoftRobot, q: Array, qd: Array) -> Array

Return transmission-coordinate velocities.

ThreadlikeActuatorParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.threadlike.ThreadlikeActuatorParams[ThreadlikeActuatorParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.threadlike.ThreadlikeActuatorParams
                


              click soromox.actuation.threadlike.ThreadlikeActuatorParams href "" "soromox.actuation.threadlike.ThreadlikeActuatorParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Physical and control parameters for a threadlike actuator family.

validate_structure
validate_structure() -> None

Validate threadlike actuator parameter structure.

validate_values
validate_values() -> None

Validate eager nested threadlike transmission values.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ThreadlikeActuator

ThreadlikeActuator(*, params: ThreadlikeActuatorParams, routing: ThreadlikeRouting | None = None, labels: tuple[str, ...], units: str | tuple[str, ...], name: str, kind: ThreadlikeKind)

Bases: Actuator


              flowchart TD
              soromox.actuation.threadlike.ThreadlikeActuator[ThreadlikeActuator]
              soromox.actuation.core.Actuator[Actuator]

                              soromox.actuation.core.Actuator --> soromox.actuation.threadlike.ThreadlikeActuator
                


              click soromox.actuation.threadlike.ThreadlikeActuator href "" "soromox.actuation.threadlike.ThreadlikeActuator"
              click soromox.actuation.core.Actuator href "" "soromox.actuation.core.Actuator"
            

Vectorized threadlike actuator with modality-specific presets.

efforts
efforts(robot: SoftRobot, q: Array, control: Array, qd: Array | None = None, *, transmission_matrix: Array | None = None) -> Array

Map controls to work-conjugate efforts for this actuator.

Only transmission coordinates and velocities required by the installed effort model are evaluated. A precomputed transmission matrix may be supplied to reuse it when evaluating actuator-coordinate velocities.

Parameters:

Name Type Description Default
robot SoftRobot

Soft robot on which the actuator is installed.

required
q Array

Generalized coordinates of shape (robot.num_coordinates,).

required
control Array

Controls for this actuator with shape (self.num_channels,).

required
qd Array | None

Optional generalized velocities of shape (robot.num_velocities,). If omitted for a velocity-dependent effort model, zero generalized velocity is used.

None
transmission_matrix Array | None

Optional precomputed transmission matrix with shape (robot.num_velocities, self.num_channels).

None

Returns:

Name Type Description
e Array

Work-conjugate actuator efforts with shape (self.num_channels,).

Raises:

Type Description
ValueError

If transmission_matrix has an incompatible shape.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

ThreadlikeImpedanceParams

Bases: BaseSystemParams


              flowchart TD
              soromox.actuation.threadlike.ThreadlikeImpedanceParams[ThreadlikeImpedanceParams]
              soromox.systems.params.BaseSystemParams[BaseSystemParams]

                              soromox.systems.params.BaseSystemParams --> soromox.actuation.threadlike.ThreadlikeImpedanceParams
                


              click soromox.actuation.threadlike.ThreadlikeImpedanceParams href "" "soromox.actuation.threadlike.ThreadlikeImpedanceParams"
              click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
            

Spring-damper parameters for passive routed paths.

validate_structure
validate_structure() -> None

Validate threadlike impedance parameter structure.

validate_values
validate_values() -> None

Validate eager nested threadlike routing values.

replace
replace(**updates: Any) -> BaseSystemParams

Return an immutable copy with selected fields replaced.

Parameters:

Name Type Description Default
**updates Any

Parameter field names and their replacement values. Nested parameter components should first be replaced with their own replace method, then supplied as a top-level field.

{}

Returns:

Type Description
BaseSystemParams

A validated parameter PyTree of the same concrete class.

Raises:

Type Description
KeyError

If any update names an unknown parameter field.

TypeError

If a replacement cannot be inserted into the PyTree.

ValueError

If validation of the resulting parameters fails.

validate
validate() -> None

Validate both parameter structure and eager numeric values.

validate_for_update
validate_for_update() -> None

Validate values when concrete and structure when dynamically traced.

validate_structure_compatibility
validate_structure_compatibility(structure: Any) -> None

Validate statically observable compatibility with a model structure.

validate_value_compatibility
validate_value_compatibility(structure: Any) -> None

Validate eager value compatibility with a model structure.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate parameters fully against static construction choices.

Parameters:

Name Type Description Default
structure Any

System-specific static structure to validate against.

required

Returns:

Type Description
None

None after successful validation.

Raises:

Type Description
ValueError

If intrinsic or structure-dependent validation fails.

validate_for_update_against_structure
validate_for_update_against_structure(structure: Any) -> None

Validate concrete values and traced structure against a model.

ThreadlikeImpedance

ThreadlikeImpedance(*, routing: ThreadlikeRouting | BaseThreadlikeRoutingParams, stiffness: Array, damping: Array, rest_length: Array, name: str = 'passive_threadlike')

Bases: PassiveElement


              flowchart TD
              soromox.actuation.threadlike.ThreadlikeImpedance[ThreadlikeImpedance]
              soromox.actuation.core.PassiveElement[PassiveElement]

                              soromox.actuation.core.PassiveElement --> soromox.actuation.threadlike.ThreadlikeImpedance
                


              click soromox.actuation.threadlike.ThreadlikeImpedance href "" "soromox.actuation.threadlike.ThreadlikeImpedance"
              click soromox.actuation.core.PassiveElement href "" "soromox.actuation.core.PassiveElement"
            

Passive spring-damper mechanics along fixed threadlike paths.

path_lengths
path_lengths(robot, q: Array) -> Array

Return the raw lengths of the passive routed paths.

path_velocities
path_velocities(robot, q: Array, qd: Array) -> Array

Return the raw length rates of the passive routed paths.

path_poses
path_poses(robot, q: Array, s: Array) -> Array

Return passive routed-path positions at backbone coordinate s.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate robot compatibility without concretizing dynamic leaves.

linear_threadlike_routing

linear_threadlike_routing(params: LinearThreadlikeRoutingParams, s: Array) -> Array

Return material-frame offsets intercept + slope * s.

linear_threadlike_routing_derivative

linear_threadlike_routing_derivative(params: LinearThreadlikeRoutingParams, s: Array) -> Array

Return the arc-length derivative of a linear routing offset.