Skip to main content

RobotContext

Enum RobotContext 

Source
pub enum RobotContext {
    ArmCommissioning,
    ArmOperating,
    LeggedStance,
    LeggedSwing,
    Maintenance,
}
Expand description

The robot’s current operating regime.

Set by the caller from whatever state source is authoritative for the deployment (ROS 2 mode topic, OPC UA OperationalStatus node, programmable-logic flag, manual operator switch). DSFB never transitions between contexts on its own — it is an observer.

Variants§

§

ArmCommissioning

Arm is being commissioned: dynamic parameter identification in progress, friction tables being populated, excitation trajectories being executed. Residuals are expected to be large and non-stationary. Violations are suppressed.

§

ArmOperating

Arm is in normal operation: trajectory tracking, force control, teleoperation. Residuals are expected to be small and stationary within the calibrated envelope. Full violation enforcement.

§

LeggedStance

Legged platform is in a stance phase: at least one end effector in contact with the ground, contact forces actively controlled by the whole-body controller. Residuals include MPC force tracking error and centroidal-momentum estimator discrepancy. Full violation enforcement.

§

LeggedSwing

Legged platform is in a swing phase: at least one end effector off the ground, swing-foot trajectory tracking active. Contact residuals are not applicable; only joint-level kinematic residuals are enforced. Full violation enforcement with a relaxed envelope (swing-phase residuals are typically looser than stance-phase).

§

Maintenance

Planned maintenance: operator-initiated diagnostics or mechanical service. Residuals may be very large as the robot is deliberately moved through unusual configurations. Violations are suppressed.

Implementations§

Source§

impl RobotContext

Source

pub const fn is_suppressed(self) -> bool

Returns true if violations are suppressed in this context.

Commissioning and maintenance periods both produce residual patterns that look like faults to a naive observer but are expected by design. DSFB recognises these contexts and holds the grammar FSM in Admissible.

Source

pub fn admissibility_multiplier(self) -> f64

Multiplier applied to the envelope radius ρ in this context.

  • ArmOperating, LeggedStance: 1.0 (baseline envelope).
  • LeggedSwing: 1.5 (swing residuals run wider than stance).
  • ArmCommissioning, Maintenance: f64::INFINITY (no violation possible — residuals are expected to be arbitrary).

The choice of 1.5 for swing is intentionally modest; the caller may override with a custom envelope per-phase if a tighter bound is known from the controller.

Source

pub const fn label(self) -> &'static str

Short stable string label, for logging and JSON emission.

Trait Implementations§

Source§

impl Clone for RobotContext

Source§

fn clone(&self) -> RobotContext

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RobotContext

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RobotContext

Source§

fn eq(&self, other: &RobotContext) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for RobotContext

Source§

impl Eq for RobotContext

Source§

impl StructuralPartialEq for RobotContext

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.