Parameters¶
Actuator and passive-element parameters follow the same immutable replacement style through indexed robot delegates. See Actuation parameter updates.
System parameters are represented as typed Equinox PyTrees. Shared base classes
and cross-system tendon params live in soromox.systems.params; concrete params
and structures live next to their system family, for example
soromox.systems.gvs.params and soromox.systems.gvs.structures.
Overview¶
Each system separates dynamic numeric values from static model structure:
- Params objects store JAX arrays that may be optimized, differentiated, vmapped, and replaced without changing the PyTree layout.
- Structure objects store static choices such as quadrature counts, active strain masks, GVS joint/basis/cross-section choices, symbolic expression paths, and padding sizes. Changing structure means constructing a new system and may recompile jitted methods.
- Spec objects are ergonomic construction inputs for model families that
need richer setup. For GVS,
GVSSegment,LinkSpec,JointSpec, andStrainBasisSpecmay contain both static choices and numeric values; factory methods split them into params and structure objects.
The top-level soromox.systems package re-exports the public params,
structures, and specs for convenient imports. Internally, concrete containers
are family-local:
| System family | Dynamic params | Static structures | Construction specs |
|---|---|---|---|
| PCS | soromox.systems.pcs.params |
soromox.systems.pcs.structures |
- |
| GVS | soromox.systems.gvs.params |
soromox.systems.gvs.structures |
soromox.systems.gvs.specs |
| HSA | soromox.systems.hsa.params |
soromox.systems.hsa.structures |
- |
| Pendulum | soromox.systems.pendulum.params |
- | - |
| Articulated | soromox.systems.articulated.params |
- | - |
The public construction pattern is:
robot = PCS(params=PCSParams(...), structure=PCSStructure(...))
robot = robot.update_params(length=new_length)
robot = robot.with_params(new_params)
Same-shape, same-dtype parameter updates preserve the JAX compilation layout. Changing the number of segments, tendons, active strains, GVS basis layout, or quadrature layout is a structural change and requires reconstruction.
For GVS specifically, GVS.from_segments(...) is the recommended constructor.
It accepts user-facing segment specs, stores numeric values only in GVSParams,
and stores stripped static choices in GVSStructure. This avoids stale
duplicates when updating values such as Young's modulus or link length.
Naming¶
Typed params use singular physical quantity names. A field name denotes the
quantity for one indexed entity; array axes describe batching. For example,
length stores one length per segment or link when its shape is (num_segments,)
or (num_links,).
| Field | Meaning |
|---|---|
length |
Per-segment or per-link length |
radius |
Per-segment circular cross-section radius |
density |
Per-segment material density |
young_modulus |
Per-segment Young's modulus |
shear_modulus |
Per-segment shear modulus |
material_damping_coefficient |
PCS material damping coefficient |
damping_matrix |
Custom generalized damping matrix |
gravity |
Gravity vector |
base_pose |
Base configuration as scalar-first quaternion pose |
reference_strain |
Reference strain vector |
joint_rest_configuration |
Joint coordinates where elastic joint force is zero |
World Frame, Mounting, and Gravity Defaults¶
Soft-robot parameter objects use an upright mounting and Earth gravity when
base_pose or gravity is omitted. Vertical is world y for planar systems and
world z for spatial systems. Gravity is always expressed in the inertial/world
frame; changing the base mounting does not rotate the gravity vector.
| Mounting constructor | Planar backbone | Spatial backbone | Default gravity |
|---|---|---|---|
horizontal |
+x | +x | negative vertical |
upright |
+y | +z | negative vertical |
hanging |
-y | -z | negative vertical |
The exact default values are:
- Planar upright pose:
[pi / 2, 0, 0]; gravity:[0, -9.81]m/s². - Spatial upright pose:
[sqrt(0.5), 0, -sqrt(0.5), 0, 0, 0, 0]; gravity:[0, 0, -9.81]m/s². - Planar poses use
[theta, x, y]. Spatial poses use scalar-first Hamilton quaternions in[qw, qx, qy, qz, x, y, z]order.
Omitting both fields selects the defaults:
params = PlanarPCSParams(
length=length,
radius=radius,
density=density,
young_modulus=young_modulus,
shear_modulus=shear_modulus,
damping_matrix=damping_matrix,
reference_strain=reference_strain,
)
Use the inherited mounting constructors to make another common mounting
explicit. base_position translates the mounting without changing its
orientation:
horizontal = PlanarPCSParams.horizontal(**planar_params)
upright = PlanarPCSParams.upright(
**planar_params, base_position=jnp.array([0.2, 0.1])
)
hanging = PCSParams.hanging(
**spatial_params, base_position=jnp.array([0.0, 0.0, 0.5])
)
Pass an explicit vector for custom or zero gravity. Pass an explicit
base_pose through the ordinary constructor for arbitrary orientations:
zero_gravity = PCSParams(..., gravity=jnp.zeros(3))
custom = PlanarPCSParams(
...,
gravity=jnp.array([1.0, -9.7]),
base_pose=jnp.array([0.3, 0.2, 0.1]),
)
Calling replace(base_pose=None) or replace(gravity=None) restores the
dimension-appropriate default. The former identity fallback is available as
.horizontal(...) or by passing an explicit identity pose.
Threadlike Actuation Parameters¶
Continuum routed actuation uses ThreadlikeRouting and explicit active or
passive components. The leading array axis indexes paths, so each path can have
distinct offsets, slopes, and a contiguous segment span.
import jax.numpy as jnp
from soromox.actuation import (
ThreadlikeActuator,
ThreadlikeImpedance,
ThreadlikeRouting,
)
active_routing = ThreadlikeRouting.linear(
intercept=jnp.array([[0.0, 0.01, 0.0], [0.0, -0.01, 0.0]]),
slope=jnp.array([[0.0, 0.0, 0.0], [0.0, 0.002, 0.0]]),
start_segment_index=(0, 0),
end_segment_index=(0, 1),
)
active_tendons = ThreadlikeActuator.tendons(active_routing)
passive_routing = ThreadlikeRouting.linear(
intercept=jnp.array([[0.0, 0.005, 0.004], [0.0, -0.005, 0.004]]),
slope=jnp.zeros((2, 3)),
start_segment_index=(0, 0),
end_segment_index=(0, 1),
)
passive_impedance = ThreadlikeImpedance(
routing=passive_routing,
stiffness=jnp.array([10.0, 25.0]),
damping=jnp.array([0.1, 0.3]),
rest_length=jnp.array([0.2, 0.21]),
)
The number of paths and their segment-span topology are structural. Changing either requires reconstructing the component and robot; numeric coefficients and mechanical parameters use immutable component updates.
Structure Naming¶
The public static objects are named PCSStructure, GVSStructure, and
PlanarHSAStructure. Topology was considered, but it is too narrow for
objects that also contain quadrature counts, active strain masks, basis padding,
and symbolic evaluation choices. Layout was also considered, but it reads as
array-shape-only. Structure is the least misleading umbrella for static model
choices that affect compilation.
Example¶
import jax.numpy as jnp
from soromox.systems import PCS, PCSParams, PCSStructure
params = PCSParams.upright(
length=jnp.array([0.1, 0.1]),
radius=jnp.array([0.01, 0.01]),
density=jnp.array([1000.0, 1000.0]),
young_modulus=jnp.array([1e6, 1e6]),
shear_modulus=jnp.array([1e5, 1e5]),
damping_matrix=jnp.eye(12),
reference_strain=jnp.tile(jnp.array([0.0, 0.0, 0.0, 1.0, 0.0, 0.0]), 2),
)
robot = PCS(params=params, structure=PCSStructure(num_gauss_points=5))
updated_robot = robot.update_params(length=jnp.array([0.12, 0.1]))
API Reference¶
soromox.systems.params
¶
BaseSystemParams
¶
Bases: Module
flowchart TD
soromox.systems.params.BaseSystemParams[BaseSystemParams]
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Base class for dynamic system parameters stored as JAX PyTrees.
validate_against_structure
¶
Validate params against static construction choices.
BaseSoftRobotParams
¶
Bases: BaseSystemParams
flowchart TD
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Common dynamic parameters for soft robot systems.
base_pose and gravity are optional keyword-only constructor inputs.
When omitted, the robot points upright and standard Earth gravity acts in
the negative vertical world direction. Planar robots use
base_pose = [theta, x, y] with 2D gravity, where theta is a
right-handed angle in radians about the out-of-plane z-axis. Spatial robots use
base_pose = [qw, qx, qy, qz, x, y, z] with 3D gravity. Spatial
quaternions are scalar-first Hamilton quaternions, normalized before
transform construction, and must have nonzero finite norm. Use
:meth:horizontal, :meth:upright, or :meth:hanging for explicit common
mounting configurations.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
validate_against_structure
¶
Validate params against static construction choices.
BaseContinuumSoftRobotParams
¶
Bases: BaseSoftRobotParams
flowchart TD
soromox.systems.params.BaseContinuumSoftRobotParams[BaseContinuumSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseContinuumSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.params.BaseContinuumSoftRobotParams href "" "soromox.systems.params.BaseContinuumSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Shared dynamic parameters for continuum soft robots.
Field names denote one segment's physical quantity; the leading axis stores
the segment batch. reference_strain contains the flattened per-segment
reference strain used by PCS-style continuum models.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
BaseArticulatedSoftRobotParams
¶
Bases: BaseSoftRobotParams
flowchart TD
soromox.systems.params.BaseArticulatedSoftRobotParams[BaseArticulatedSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseArticulatedSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.params.BaseArticulatedSoftRobotParams href "" "soromox.systems.params.BaseArticulatedSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Shared dynamic parameters for articulated systems.
The leading axis indexes joints/links. Stiffness, damping, and reference
coordinates are dynamic arrays so optimization can update them without
changing the system structure. joint_rest_configuration is the joint
coordinate at which the elastic joint force is zero.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
validate_planar_base_pose
¶
Validate a planar base pose.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Parameter name used in error messages. |
required |
value
|
Array
|
Planar pose array with shape |
required |
Returns:
| Type | Description |
|---|---|
None
|
None. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the shape is not |
validate_quaternion_base_pose
¶
validate_quaternion_base_pose(name: str, value: Array, expected_shape: tuple[int, ...], *, min_norm: float = 1e-12) -> None
Validate a scalar-first quaternion base pose.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Parameter name used in error messages. |
required |
value
|
Array
|
Base pose array whose first four entries are a scalar-first
Hamilton quaternion in |
required |
expected_shape
|
tuple[int, ...]
|
Required full pose shape, typically |
required |
min_norm
|
float
|
Minimum allowed Euclidean norm for the quaternion component. |
1e-12
|
Concrete parameter objects are checked for finite entries and nonzero quaternion norm. During JAX tracing, only the static shape check is performed; transform helpers still avoid zero-norm division to keep traced code finite.
Raises:
| Type | Description |
|---|---|
ValueError
|
If the shape is wrong, any entry is non-finite, or the quaternion component is zero or numerically too small to normalize safely. |
soromox.systems.pcs.params
¶
PCSParams
¶
Bases: BaseContinuumSoftRobotParams
flowchart TD
soromox.systems.pcs.params.PCSParams[PCSParams]
soromox.systems.params.BaseContinuumSoftRobotParams[BaseContinuumSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseContinuumSoftRobotParams --> soromox.systems.pcs.params.PCSParams
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseContinuumSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.pcs.params.PCSParams href "" "soromox.systems.pcs.params.PCSParams"
click soromox.systems.params.BaseContinuumSoftRobotParams href "" "soromox.systems.params.BaseContinuumSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for the spatial PCS model.
length, radius, material parameters, and density use a leading
segment axis. Damping can be supplied either as the preferred
material_damping_coefficient or as a full flattened strain
damping_matrix. material_damping_coefficient is a viscosity-like
modulus in Pa*s (N*s/m^2); it may be scalar or have one value per segment.
The assembled matrix includes geometry and length factors, so its entries
have generalized-coordinate-dependent units rather than a single Pa*s unit.
base_pose is the scalar-first quaternion SE(3) base pose vector
[qw, qx, qy, qz, x, y, z] used to initialize the base transform. The
quaternion is normalized before use and must have nonzero finite norm.
Omitting base_pose and gravity selects upright spatial mounting and
negative-z Earth gravity.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
PlanarPCSParams
¶
Bases: BaseContinuumSoftRobotParams
flowchart TD
soromox.systems.pcs.params.PlanarPCSParams[PlanarPCSParams]
soromox.systems.params.BaseContinuumSoftRobotParams[BaseContinuumSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseContinuumSoftRobotParams --> soromox.systems.pcs.params.PlanarPCSParams
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseContinuumSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.pcs.params.PlanarPCSParams href "" "soromox.systems.pcs.params.PlanarPCSParams"
click soromox.systems.params.BaseContinuumSoftRobotParams href "" "soromox.systems.params.BaseContinuumSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for the planar PCS model.
The leading axis of per-segment fields indexes planar constant-strain
segments. base_pose stores the planar pose [theta, x, y] with shape
(3,). theta is a right-handed angle in radians about the
out-of-plane z-axis, and x/y are direct translations in the parent
frame. material_damping_coefficient is a viscosity-like modulus in Pa*s
(N*s/m^2); it may be scalar or have one value per segment. The assembled
matrix includes geometry and length factors and therefore has
generalized-coordinate-dependent entry units.
Omitting base_pose and gravity selects upright planar
mounting and negative-y Earth gravity.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
ISupportParams
¶
Bases: PCSParams
flowchart TD
soromox.systems.pcs.params.ISupportParams[ISupportParams]
soromox.systems.pcs.params.PCSParams[PCSParams]
soromox.systems.params.BaseContinuumSoftRobotParams[BaseContinuumSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.pcs.params.PCSParams --> soromox.systems.pcs.params.ISupportParams
soromox.systems.params.BaseContinuumSoftRobotParams --> soromox.systems.pcs.params.PCSParams
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseContinuumSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.pcs.params.ISupportParams href "" "soromox.systems.pcs.params.ISupportParams"
click soromox.systems.pcs.params.PCSParams href "" "soromox.systems.pcs.params.PCSParams"
click soromox.systems.params.BaseContinuumSoftRobotParams href "" "soromox.systems.params.BaseContinuumSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for the I-SUPPORT spatial pneumatic PCS model.
The leading axis of the standard PCS body fields indexes every physical
rigid or pneumatic segment in robot order. ISupport expands these fields
into the internal PCS layout using ISupportStructure. Chamber fields
index only pneumatic segments, in their order of appearance. Chamber
azimuth is right-handed about local +X, measured from +Y toward +Z; array
index j is pressure channel j. If chamber_azimuth_angles is
omitted, ISupport uses 0, 120, and 240 degrees for every pneumatic
segment. chamber_effective_pressure_area scales each routed chamber-path
length into its pressure-conjugate equivalent-volume coordinate. It contains
one value per pneumatic segment and is shared by all chambers in that
segment. When omitted, it is derived as
pi * (chamber_outer_radius**2 - chamber_inner_radius**2). Damping can be
supplied as material_damping_coefficient or as a full damping_matrix.
A custom damping_matrix is expressed in flattened pneumatic-segment
strain coordinates and must be block diagonal by pneumatic segment when the
model is constructed.
pcs_segment_lengths optionally stores flattened PCS segment lengths in
the order defined by ISupportStructure.pcs_segment_counts. If omitted,
each pneumatic segment is split into equal-length PCS segments. The entries
assigned to each pneumatic segment must sum to the corresponding
length entry when the model is constructed.
Segment types are defined by ISupportStructure.rigid_segment_selector.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
soromox.systems.pcs.structures
¶
PCSStructure
¶
Bases: Module
flowchart TD
soromox.systems.pcs.structures.PCSStructure[PCSStructure]
click soromox.systems.pcs.structures.PCSStructure href "" "soromox.systems.pcs.structures.PCSStructure"
Static PCS layout that determines JAX compilation structure.
PlanarPCSStructure
¶
Bases: Module
flowchart TD
soromox.systems.pcs.structures.PlanarPCSStructure[PlanarPCSStructure]
click soromox.systems.pcs.structures.PlanarPCSStructure href "" "soromox.systems.pcs.structures.PlanarPCSStructure"
Static planar PCS layout.
ISupportStructure
¶
Bases: PCSStructure
flowchart TD
soromox.systems.pcs.structures.ISupportStructure[ISupportStructure]
soromox.systems.pcs.structures.PCSStructure[PCSStructure]
soromox.systems.pcs.structures.PCSStructure --> soromox.systems.pcs.structures.ISupportStructure
click soromox.systems.pcs.structures.ISupportStructure href "" "soromox.systems.pcs.structures.ISupportStructure"
click soromox.systems.pcs.structures.PCSStructure href "" "soromox.systems.pcs.structures.PCSStructure"
Static I-SUPPORT PCS layout.
pcs_segment_counts defines how many constant-strain PCS segments are
used for each physical pneumatic segment, in pneumatic-segment order. A
scalar count applies the same count to every pneumatic segment. Child
lengths live in ISupportParams.pcs_segment_lengths.
rigid_segment_selector has one entry per physical segment in
ISupportParams. True marks a rigid segment and False a pneumatic
segment. When omitted, segment types alternate from a rigid segment at index
zero. If strain_selector is provided, it is interpreted on the expanded
PCS layout; rigid-segment strains are always deactivated.
soromox.systems.gvs.params
¶
GVSLinkParams
¶
Bases: BaseSystemParams
flowchart TD
soromox.systems.gvs.params.GVSLinkParams[GVSLinkParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseSystemParams --> soromox.systems.gvs.params.GVSLinkParams
click soromox.systems.gvs.params.GVSLinkParams href "" "soromox.systems.gvs.params.GVSLinkParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic per-link arrays for all GVS segments.
Every field has leading shape (num_segments,); this is not a single-link
object. It stores the numeric link values without duplicating the static
cross-section family stored in GVSStructure.segments. length follows
the singular per-link naming convention used by the other fields. Reference
strain is intentionally stored on GVSParams because it belongs to the
strain basis state, not the link cross-section/material data.
damping_coefficient is a viscosity-like modulus in Pa*s (N*s/m^2).
validate_against_structure
¶
Validate params against static construction choices.
GVSParams
¶
Bases: BaseSoftRobotParams
flowchart TD
soromox.systems.gvs.params.GVSParams[GVSParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.gvs.params.GVSParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.gvs.params.GVSParams href "" "soromox.systems.gvs.params.GVSParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for a GVS model.
link contains per-segment link arrays. reference_strain has shape
(num_segments, 6) and is kept here, rather than in GVSLinkParams,
because it parameterizes the strain basis/reference configuration rather
than link geometry or material properties. joint_stiffness has shape
(num_segments, max_dof, max_dof) and is padded to the static GVS layout.
base_pose uses scalar-first quaternion SE(3) coordinates
[qw, qx, qy, qz, x, y, z] with nonzero finite quaternion norm. Omitting
base_pose and gravity selects upright spatial mounting and
negative-z Earth gravity.
validate_against_structure
¶
Validate dynamic GVS arrays against the static padded layout.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
soromox.systems.gvs.structures
¶
GVSLinkStructure
¶
Bases: Module
flowchart TD
soromox.systems.gvs.structures.GVSLinkStructure[GVSLinkStructure]
click soromox.systems.gvs.structures.GVSLinkStructure href "" "soromox.systems.gvs.structures.GVSLinkStructure"
Static link choices for one GVS segment.
This stores only choices that affect compilation or dispatch. Numeric link
values such as length, material constants, and cross-section dimensions live
in GVSParams.link.
GVSJointStructure
¶
Bases: Module
flowchart TD
soromox.systems.gvs.structures.GVSJointStructure[GVSJointStructure]
click soromox.systems.gvs.structures.GVSJointStructure href "" "soromox.systems.gvs.structures.GVSJointStructure"
Static joint choices for one GVS segment.
Joint stiffness is dynamic and lives in GVSParams.joint_stiffness.
GVSStrainBasisStructure
¶
Bases: Module
flowchart TD
soromox.systems.gvs.structures.GVSStrainBasisStructure[GVSStrainBasisStructure]
click soromox.systems.gvs.structures.GVSStrainBasisStructure href "" "soromox.systems.gvs.structures.GVSStrainBasisStructure"
Static strain-basis choices for one GVS segment.
Reference strain is dynamic and lives in GVSParams.reference_strain.
GVSSegmentStructure
¶
Bases: Module
flowchart TD
soromox.systems.gvs.structures.GVSSegmentStructure[GVSSegmentStructure]
click soromox.systems.gvs.structures.GVSSegmentStructure href "" "soromox.systems.gvs.structures.GVSSegmentStructure"
Static structure for one GVS segment.
GVSStructure
¶
Bases: Module
flowchart TD
soromox.systems.gvs.structures.GVSStructure[GVSStructure]
click soromox.systems.gvs.structures.GVSStructure href "" "soromox.systems.gvs.structures.GVSStructure"
Static GVS segment structure and padded layout choices.
segments stores stripped static segment structures: joint families, basis
families/orders/active masks, quadrature counts, and cross-section families.
Dynamic numeric values live in GVSParams.
soromox.systems.hsa.params
¶
PlanarHSAParams
¶
Bases: BaseSoftRobotParams
flowchart TD
soromox.systems.hsa.params.PlanarHSAParams[PlanarHSAParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.hsa.params.PlanarHSAParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.hsa.params.PlanarHSAParams href "" "soromox.systems.hsa.params.PlanarHSAParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for planar HSA systems.
Field names denote one segment/platform quantity; leading axes store the
batched values. Arrays store length, rod geometry, reference strain
components, platform/cap dimensions, end-effector offset, and optional
hysteresis coefficients used by the symbolic HSA expressions. base_pose
stores the planar pose [theta, x, y] with shape (3,). theta is
a right-handed angle in radians about the out-of-plane z-axis, and
x/y are direct translations in the parent frame. Omitting
base_pose and gravity selects upright mounting and negative-y Earth
gravity.
from_npz
classmethod
¶
from_npz(path: str | Path) -> PlanarHSAParams
Load planar HSA parameters from an explicit .npz file path.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
soromox.systems.hsa.structures
¶
PlanarHSAStructure
¶
Bases: Module
flowchart TD
soromox.systems.hsa.structures.PlanarHSAStructure[PlanarHSAStructure]
click soromox.systems.hsa.structures.PlanarHSAStructure href "" "soromox.systems.hsa.structures.PlanarHSAStructure"
Static symbolic and layout choices for planar HSA.
soromox.systems.pendulum.params
¶
PendulumParams
¶
Bases: BaseArticulatedSoftRobotParams
flowchart TD
soromox.systems.pendulum.params.PendulumParams[PendulumParams]
soromox.systems.params.BaseArticulatedSoftRobotParams[BaseArticulatedSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseArticulatedSoftRobotParams --> soromox.systems.pendulum.params.PendulumParams
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseArticulatedSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.pendulum.params.PendulumParams href "" "soromox.systems.pendulum.params.PendulumParams"
click soromox.systems.params.BaseArticulatedSoftRobotParams href "" "soromox.systems.params.BaseArticulatedSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for planar pendulum chains.
The leading axis indexes links/joints. moment_inertia and
center_of_mass_length are per link, while stiffness and damping are
generalized-coordinate matrices inherited from the articulated base class.
base_pose stores the planar pose [theta, x, y] with shape (3,).
theta is a right-handed angle in radians about the out-of-plane z-axis,
and x/y are direct translations in the parent frame. Omitting
base_pose and gravity selects upright mounting and negative-y Earth
gravity.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
soromox.systems.articulated.params
¶
ArticulatedSoftRobotParams
¶
ArticulatedSoftRobotParams(*, joint_screw: Array, parent_to_joint_transform: Array, tip_position: Array, center_of_mass_position: Array, mass: Array, center_of_mass_inertia: Array, gravity: Array | None = None, joint_stiffness: Array, joint_damping: Array, joint_rest_configuration: Array, radius: Array, base_pose: Array | None = None)
Bases: BaseArticulatedSoftRobotParams
flowchart TD
soromox.systems.articulated.params.ArticulatedSoftRobotParams[ArticulatedSoftRobotParams]
soromox.systems.params.BaseArticulatedSoftRobotParams[BaseArticulatedSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.params.BaseArticulatedSoftRobotParams --> soromox.systems.articulated.params.ArticulatedSoftRobotParams
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseArticulatedSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.articulated.params.ArticulatedSoftRobotParams href "" "soromox.systems.articulated.params.ArticulatedSoftRobotParams"
click soromox.systems.params.BaseArticulatedSoftRobotParams href "" "soromox.systems.params.BaseArticulatedSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for spatial articulated soft robots.
Per-joint screw axes and transforms define the dynamic link geometry used by
the articulated model. The number of joints is fixed by array shapes.
base_pose uses scalar-first quaternion SE(3) coordinates
[qw, qx, qy, qz, x, y, z] with nonzero finite quaternion norm. Omitting
base_pose and gravity selects upright mounting and negative-z Earth
gravity.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).
McKibbenActuatedUMArmParams
¶
McKibbenActuatedUMArmParams(*, joint_screw: Array, parent_to_joint_transform: Array, tip_position: Array, center_of_mass_position: Array, mass: Array, center_of_mass_inertia: Array, gravity: Array | None = None, joint_stiffness: Array, joint_damping: Array, joint_rest_configuration: Array, radius: Array, joint_armature: Array, base_pose: Array | None = None)
Bases: ArticulatedSoftRobotParams
flowchart TD
soromox.systems.articulated.params.McKibbenActuatedUMArmParams[McKibbenActuatedUMArmParams]
soromox.systems.articulated.params.ArticulatedSoftRobotParams[ArticulatedSoftRobotParams]
soromox.systems.params.BaseArticulatedSoftRobotParams[BaseArticulatedSoftRobotParams]
soromox.systems.params.BaseSoftRobotParams[BaseSoftRobotParams]
soromox.systems.params.BaseSystemParams[BaseSystemParams]
soromox.systems.articulated.params.ArticulatedSoftRobotParams --> soromox.systems.articulated.params.McKibbenActuatedUMArmParams
soromox.systems.params.BaseArticulatedSoftRobotParams --> soromox.systems.articulated.params.ArticulatedSoftRobotParams
soromox.systems.params.BaseSoftRobotParams --> soromox.systems.params.BaseArticulatedSoftRobotParams
soromox.systems.params.BaseSystemParams --> soromox.systems.params.BaseSoftRobotParams
click soromox.systems.articulated.params.McKibbenActuatedUMArmParams href "" "soromox.systems.articulated.params.McKibbenActuatedUMArmParams"
click soromox.systems.articulated.params.ArticulatedSoftRobotParams href "" "soromox.systems.articulated.params.ArticulatedSoftRobotParams"
click soromox.systems.params.BaseArticulatedSoftRobotParams href "" "soromox.systems.params.BaseArticulatedSoftRobotParams"
click soromox.systems.params.BaseSoftRobotParams href "" "soromox.systems.params.BaseSoftRobotParams"
click soromox.systems.params.BaseSystemParams href "" "soromox.systems.params.BaseSystemParams"
Dynamic parameters for the articulated UMArm body.
These parameters contain the rigid-link dynamics, compliant-joint mechanics,
visualization radii, base pose, gravity, and per-joint rotor armature. The
McKibben attachment geometry and pneumatic constitutive parameters belong to
:class:soromox.actuation.ArticulatedMcKibbenActuatorParams, so body and
actuator parameters can be updated independently.
from_cached_npz
classmethod
¶
from_cached_npz(path: str | Path) -> McKibbenActuatedUMArmParams
Load the articulated UMArm body from the existing cache format.
validate_against_structure
¶
Validate params against static construction choices.
horizontal
classmethod
¶
horizontal(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters with the backbone pointing along world +x.
upright
classmethod
¶
upright(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world +y (planar) or +z (spatial).
hanging
classmethod
¶
hanging(*, base_position: Array | None = None, **kwargs: Any) -> BaseSoftRobotParams
Construct parameters pointing along world -y (planar) or -z (spatial).