pub struct Otg { /* private fields */ }Expand description
A single-axis online trajectory generator; see the module documentation.
Implementations§
Source§impl Otg
impl Otg
Sourcepub fn new(position: f64, limits: OtgLimits) -> FrankaResult<Self>
pub fn new(position: f64, limits: OtgLimits) -> FrankaResult<Self>
A generator at rest at position, whose target is position.
§Errors
FrankaError::InvalidArgument if position is not finite or a limit is not finite
and positive.
Sourcepub fn set_target(&mut self, target: f64) -> FrankaResult<()>
pub fn set_target(&mut self, target: f64) -> FrankaResult<()>
Sets the target position; the next step re-plans towards it.
§Errors
FrankaError::InvalidArgument, with the target unchanged, if target is not finite.
Sourcepub fn set_position(&mut self, position: f64) -> FrankaResult<()>
pub fn set_position(&mut self, position: f64) -> FrankaResult<()>
Re-anchors the generator on the position actually commanded – the robot’s echo of the last command – keeping its own velocity, acceleration and target, so that whatever runs behind it can shape one command but never build up a lag it plans against.
§Errors
FrankaError::InvalidArgument, with the state unchanged, if position is not finite.
Sourcepub fn set_state(
&mut self,
position: f64,
velocity: f64,
acceleration: f64,
) -> FrankaResult<()>
pub fn set_state( &mut self, position: f64, velocity: f64, acceleration: f64, ) -> FrankaResult<()>
Sets the whole state; the target is kept. The velocity and acceleration are clamped
into the limits. They must be the state at the end of the last cycle, as this
generator’s are: a finite difference such as the robot’s O_dP_EE_c is the mean over
the cycle, half an acceleration step behind, and re-anchoring on that every cycle
throttles the plan to a crawl – use set_position with an echo.
§Errors
FrankaError::InvalidArgument, with the state unchanged, if a value is not finite.
Sourcepub fn reset(&mut self, position: f64)
pub fn reset(&mut self, position: f64)
Puts the generator at rest at position, with the target there too.
Sourcepub fn step(&mut self, dt: f64) -> f64
pub fn step(&mut self, dt: f64) -> f64
Advances the state by dt seconds along the re-planned profile and returns the new
position. A dt that is not positive and finite leaves the state untouched.
Sourcepub fn acceleration(&self) -> f64
pub fn acceleration(&self) -> f64
The current acceleration.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Otg
impl RefUnwindSafe for Otg
impl Send for Otg
impl Sync for Otg
impl Unpin for Otg
impl UnsafeUnpin for Otg
impl UnwindSafe for Otg
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.