PackagingCellScenario
Robotics scenarios · Implementation: mlsysim/engine/scenario_definitions/robotics/site_limits.py.
Construct this scenario with keyword inputs. The fields below show the types and defaults declared by this class.
A packaging cell’s carriage that must stop before a fixed stop line.
The pre-brake delay is a chain of four allocations (event to usable frame, transfer through admission, command delivery, brake onset); the stop is the elementary constant-deceleration budget (StoppingBudgetModel) with the allocated reserve held back from the clearance, so the speed ceiling is the positive root of v tau + v^2/(2a) = clearance - reserve. The supervisory settings (force limiter, thermistor trip, stall timeout, bus overvoltage trip, kinematic-check rate) are selected thresholds, not measured limits.
Notes
Equation: Stopping uses v*delay+v**2/(2*deceleration) with reserved clearance; energy uses mass*speed**2/2.
Assumptions: Delay components add serially and braking deceleration is constant and positive.
Excludes: Measured actuator dynamics, traction variation, threshold validation, and a safety certification.
References
Derivation: the scenario composes mlsysim.physics.robotics.actuation.calc_kinetic_energy, mlsysim.solvers.StoppingBudgetModel. Their contracts supply the underlying equations; property equations show the remaining unit conversions and accounting.
Examples
>>> from mlsysim import Scenarios
>>> scenario = Scenarios.PackagingCellTransit
>>> value = scenario.delay
>>> str(value.units)
'ms'Attributes
| Name | Description |
|---|---|
| bus | |
| bus_trip | |
| check_rate | |
| clearance | |
| deceleration | |
| deficit | Modeled stopping distance minus clearance in millimeters; negative values mean spare |
| delay | Total allocated pre-brake latency in milliseconds, summing exposure, processing, bus, |
| exposure | |
| force_limit | |
| kinetic_energy | Carriage kinetic energy in joules via the shared mass-and-speed equation. |
| mass | |
| onset | |
| processing | |
| remaining | Millimeters between the modeled stopping position and stop line, including the reserved |
| reserve | |
| result | Return the typed accounting result from StoppingBudgetModel using this scenario’s |
| root_terms | Speed-root operands a*tau, 2*a*d, and their combined square root in consistent |
| speed | |
| stall_timeout | |
| stop_budget | Usable stopping clearance after physical reserve, in millimeters. |
| temperature_trip |
mass
Type: Quantity.
Declared default: required.
speed
Type: Quantity.
Declared default: required.
clearance
Type: Quantity.
Declared default: required.
reserve
Type: Quantity.
Declared default: required.
deceleration
Type: Quantity.
Declared default: required.
exposure
Type: Quantity.
Declared default: required.
processing
Type: Quantity.
Declared default: required.
bus
Type: Quantity.
Declared default: required.
onset
Type: Quantity.
Declared default: required.
check_rate
Type: Optional[Quantity].
Declared default: None.
force_limit
Type: Optional[Quantity].
Declared default: None.
temperature_trip
Type: Optional[Quantity].
Declared default: None.
stall_timeout
Type: Optional[Quantity].
Declared default: None.
bus_trip
Type: Optional[Quantity].
Declared default: None.
delay
engine.scenario_types.PackagingCellScenario.delay
Total allocated pre-brake latency in milliseconds, summing exposure, processing, bus, and onset.
Equation: (exposure + processing + bus + onset).to('ms').
stop_budget
engine.scenario_types.PackagingCellScenario.stop_budget
Usable stopping clearance after physical reserve, in millimeters.
Equation: (clearance - reserve).to('mm').
result
engine.scenario_types.PackagingCellScenario.result
Return the typed accounting result from StoppingBudgetModel using this scenario’s declared inputs; units and exclusions follow that solver contract.
Equation: StoppingBudgetModel().solve(speed, delay, deceleration, clearance, physical_margin=reserve).
remaining
engine.scenario_types.PackagingCellScenario.remaining
Millimeters between the modeled stopping position and stop line, including the reserved margin.
Equation: (clearance - result.stop_distance).to('mm').
deficit
engine.scenario_types.PackagingCellScenario.deficit
Modeled stopping distance minus clearance in millimeters; negative values mean spare clearance.
Equation: (result.stop_distance - clearance).to('mm').
kinetic_energy
engine.scenario_types.PackagingCellScenario.kinetic_energy
Carriage kinetic energy in joules via the shared mass-and-speed equation.
Equation: calc_kinetic_energy(mass, speed).to('J').
root_terms
engine.scenario_types.PackagingCellScenario.root_terms
Speed-root operands a*tau, 2*a*d, and their combined square root in consistent SI units.
Equation: (a_tau, two_a_d, ((a_tau ** 2 + two_a_d) ** 0.5).to('m/s')).