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.

validate_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate static component topology against robot.

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, velocity: Array) -> 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.

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 a copy with selected fields replaced.

validate

validate() -> None

Validate parameter consistency.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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_for_robot

validate_for_robot(robot: SoftRobot) -> None

Validate static component topology against robot.

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.

AffineJointTransmission

AffineJointTransmission(params: AffineJointTransmissionParams)

Bases: Transmission


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

                              soromox.actuation.core.Transmission --> soromox.actuation.AffineJointTransmission
                


              click soromox.actuation.AffineJointTransmission href "" "soromox.actuation.AffineJointTransmission"
              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.

AffineJointTransmissionParams

Bases: BaseSystemParams


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

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


              click soromox.actuation.AffineJointTransmissionParams href "" "soromox.actuation.AffineJointTransmissionParams"
              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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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

validate() -> None

Validate parameter consistency.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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 a copy with selected fields replaced.

validate_against_structure

validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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, velocity: Array) -> 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_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate static component topology against robot.

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.

validate_for_robot
validate_for_robot(robot: SoftRobot) -> None

Validate static component topology against robot.

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 a copy with selected fields replaced.

validate
validate() -> None

Validate parameter consistency.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

joint

Joint-space transmissions and articulated tendon mechanics.

AffineJointTransmissionParams

Bases: BaseSystemParams


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

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


              click soromox.actuation.joint.AffineJointTransmissionParams href "" "soromox.actuation.joint.AffineJointTransmissionParams"
              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 a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

AffineJointTransmission

AffineJointTransmission(params: AffineJointTransmissionParams)

Bases: Transmission


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

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


              click soromox.actuation.joint.AffineJointTransmission href "" "soromox.actuation.joint.AffineJointTransmission"
              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.

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 a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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 a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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.

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 a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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

Return a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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
validate() -> None

Validate parameter consistency.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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

Replace numeric fields while keeping routing topology immutable.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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

Return a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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

Return a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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.

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

Return a copy with selected fields replaced.

validate_against_structure
validate_against_structure(structure: Any) -> None

Validate params against static construction choices.

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.

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.