GravityBiasedJointStopScenario
Robotics scenarios · Implementation: mlsysim/engine/scenario_definitions/robotics/control.py.
Construct this scenario with keyword inputs. The fields below show the types and defaults declared by this class.
One loaded arm joint at joint_speed braking with machine’s peak torque while gravity holds bias_fraction of that peak along (descending) or against (ascending) the motion.
Braking deceleration is net torque over inertia; the joint stops in w^2 / (2 alpha) and the tool at lever travels that angle times the lever. The kinetic barrier h = theta - w^2 / (2 alpha_net) (descending) bounds the next torque by tau <= -tau_bias + I alpha_net (gamma h / w - 1); its negative is the braking torque the barrier demands at a tool clearance. With site, the protective separation distance prices a person at the site’s approach speed over the site’s pre-brake delay plus the descending joint stop, the tool’s reaction travel, and the tool’s stop.
Notes
Equation: tool_stop_descending is the worked quantity; each property below states its equation and units.
Assumptions: Single-joint inertia, lever arm, gravity bias, and available braking torque stay constant.
Excludes: Multibody dynamics, torque slew, brake onset variation, and safety certification.
References
Derivation: The equations below follow the stated counts, geometric relations, or accounting definitions; scenario inputs are supplied assumptions or observations, not fitted predictions.
Examples
Execute the registered worked inputs; this is a modeled calculation.
>>> from mlsysim import Scenarios
>>> case = Scenarios.LoadedArmJointGravityStop
>>> value = case.tool_stop_descending
>>> print(f"{value:.3f~P}")
79.448 mmAttributes
| Name | Description |
|---|---|
| alpha_ascending | Ascending constant angular deceleration in inverse seconds squared. |
| alpha_descending | Descending constant angular deceleration in inverse seconds squared. |
| alpha_free | Unbiased constant angular deceleration in inverse seconds squared. |
| barrier_clearances | |
| barrier_demands | Required braking torques in N m for every listed clearance. |
| barrier_gain | |
| bias | Constant gravitational bias torque in N m, specified fraction of peak torque. |
| bias_fraction | |
| inertia | |
| joint_speed | |
| lever | |
| machine | |
| overrun | Extra descending stop travel in mm compared with the unbiased stop. |
| separation_person | Human approach travel in mm during reaction and descending joint stopping. |
| separation_person_share | Dimensionless human-travel share of the separation total. |
| separation_reaction | Tool reaction travel in mm before braking begins. |
| separation_total | Total human, reaction, and stopping travel in mm before additional margins. |
| site | |
| stop_time_descending | Descending joint stopping duration in ms. |
| tcp_speed | Tool tangential speed in m/s at the specified lever arm. |
| tool_stop_ascending | Tool stopping arc length in mm when gravity assists braking. |
| tool_stop_descending | Tool stopping arc length in mm when gravity opposes braking. |
| tool_stop_free | Tool stopping arc length in mm without gravity bias. |
| torque_ascending | Net ascending braking torque in N m after adding gravity assistance. |
| torque_descending | Net descending braking torque in N m after subtracting gravity bias. |
| torque_limit | Configured joint peak torque in N m. |
Methods
| Name | Description |
|---|---|
| barrier_margin | Kinetic barrier margin in radians at the supplied tool clearance. |
| barrier_torque_demand | Required braking torque in N m from the stated kinetic-barrier inequality. |
| stop_angle | Joint stopping angle in radians at supplied positive angular deceleration. |
| tool_stop | Tool stopping arc length in mm at supplied angular deceleration. |
barrier_margin
engine.scenario_types.GravityBiasedJointStopScenario.barrier_margin(clearance)Kinetic barrier margin in radians at the supplied tool clearance.
Kinetic barrier h = theta - w^2 / (2 alpha_net) at a tool clearance (radians).
Equation: return (clearance / self.lever).to(’’).magnitude - self.stop_angle(self.alpha_descending)
barrier_torque_demand
engine.scenario_types.GravityBiasedJointStopScenario.barrier_torque_demand(
clearance,
)Required braking torque in N m from the stated kinetic-barrier inequality.
Braking torque the barrier demands at a tool clearance (the bound’s negative).
Equation: h = self.barrier_margin(clearance) bound = (-self.bias + self.inertia * self.alpha_descending * (self.barrier_gain * h / self.joint_speed - 1)).to(‘N*m’) return (-bound).to(‘N*m’)
stop_angle
engine.scenario_types.GravityBiasedJointStopScenario.stop_angle(alpha)Joint stopping angle in radians at supplied positive angular deceleration.
Joint stop angle in radians at deceleration alpha.
Equation: return (self.joint_speed ** 2 / (2 * alpha)).to(’’).magnitude
tool_stop
engine.scenario_types.GravityBiasedJointStopScenario.tool_stop(alpha)Tool stopping arc length in mm at supplied angular deceleration.
Equation: return (self.lever * self.stop_angle(alpha)).to(‘mm’)
machine
Type: Any.
Declared default: required.
inertia
Type: Quantity.
Declared default: required.
lever
Type: Quantity.
Declared default: required.
joint_speed
Type: Quantity.
Declared default: required.
bias_fraction
Type: float.
Declared default: required.
barrier_gain
Type: Optional[Quantity].
Declared default: None.
barrier_clearances
Type: List[Quantity].
Declared default: [].
site
Type: Optional[Any].
Declared default: None.
torque_limit
engine.scenario_types.GravityBiasedJointStopScenario.torque_limit
Configured joint peak torque in N m.
Equation: return self.machine.arm.max_torque.to(‘N*m’)
bias
engine.scenario_types.GravityBiasedJointStopScenario.bias
Constant gravitational bias torque in N m, specified fraction of peak torque.
Equation: return (self.torque_limit * self.bias_fraction).to(‘N*m’)
torque_descending
engine.scenario_types.GravityBiasedJointStopScenario.torque_descending
Net descending braking torque in N m after subtracting gravity bias.
Torque left for braking when gravity acts along the motion.
Equation: return (self.torque_limit - self.bias).to(‘N*m’)
torque_ascending
engine.scenario_types.GravityBiasedJointStopScenario.torque_ascending
Net ascending braking torque in N m after adding gravity assistance.
Torque available for braking when gravity helps.
Equation: return (self.torque_limit + self.bias).to(‘N*m’)
alpha_free
engine.scenario_types.GravityBiasedJointStopScenario.alpha_free
Unbiased constant angular deceleration in inverse seconds squared.
Equation: return self._alpha(self.torque_limit)
alpha_descending
engine.scenario_types.GravityBiasedJointStopScenario.alpha_descending
Descending constant angular deceleration in inverse seconds squared.
Equation: return self._alpha(self.torque_descending)
alpha_ascending
engine.scenario_types.GravityBiasedJointStopScenario.alpha_ascending
Ascending constant angular deceleration in inverse seconds squared.
Equation: return self._alpha(self.torque_ascending)
tool_stop_free
engine.scenario_types.GravityBiasedJointStopScenario.tool_stop_free
Tool stopping arc length in mm without gravity bias.
Equation: return self.tool_stop(self.alpha_free)
tool_stop_descending
engine.scenario_types.GravityBiasedJointStopScenario.tool_stop_descending
Tool stopping arc length in mm when gravity opposes braking.
Equation: return self.tool_stop(self.alpha_descending)
tool_stop_ascending
engine.scenario_types.GravityBiasedJointStopScenario.tool_stop_ascending
Tool stopping arc length in mm when gravity assists braking.
Equation: return self.tool_stop(self.alpha_ascending)
overrun
engine.scenario_types.GravityBiasedJointStopScenario.overrun
Extra descending stop travel in mm compared with the unbiased stop.
Tool travel the descending stop adds over the unbiased one.
Equation: return (self.tool_stop_descending - self.tool_stop_free).to(‘mm’)
stop_time_descending
engine.scenario_types.GravityBiasedJointStopScenario.stop_time_descending
Descending joint stopping duration in ms.
Equation: return (self.joint_speed / self.alpha_descending).to(‘ms’)
tcp_speed
engine.scenario_types.GravityBiasedJointStopScenario.tcp_speed
Tool tangential speed in m/s at the specified lever arm.
Equation: return (self.lever * self.joint_speed).to(‘m/s’)
barrier_demands
engine.scenario_types.GravityBiasedJointStopScenario.barrier_demands
Required braking torques in N m for every listed clearance.
Equation: return [self.barrier_torque_demand(c) for c in self.barrier_clearances]
separation_person
engine.scenario_types.GravityBiasedJointStopScenario.separation_person
Human approach travel in mm during reaction and descending joint stopping.
Person’s travel over the reaction (pre-brake delay) and the descending joint stop.
Equation: return (self.site.v_human_approach * (self.site.tau_delay + self.stop_time_descending)).to(‘mm’)
separation_reaction
engine.scenario_types.GravityBiasedJointStopScenario.separation_reaction
Tool reaction travel in mm before braking begins.
Tool travel during the reaction time.
Equation: return (self.tcp_speed * self.site.tau_delay).to(‘mm’)
separation_total
engine.scenario_types.GravityBiasedJointStopScenario.separation_total
Total human, reaction, and stopping travel in mm before additional margins.
Protective separation before intrusion and position margins.
Equation: return (self.separation_person + self.separation_reaction + self.tool_stop_descending).to(‘mm’)