pub struct MultiOtg<const N: usize> { /* private fields */ }Expand description
N Otgs with the same limits, stepped together, optionally synchronised so that all
axes arrive at their targets at the same time (the faster axes are slowed down).
Implementations§
Source§impl<const N: usize> MultiOtg<N>
impl<const N: usize> MultiOtg<N>
Sourcepub fn new(
position: [f64; N],
limits: OtgLimits,
synchronize: bool,
) -> FrankaResult<Self>
pub fn new( position: [f64; N], limits: OtgLimits, synchronize: bool, ) -> FrankaResult<Self>
A generator at rest at position, whose target is position.
§Errors
FrankaError::InvalidArgument if a coordinate is not finite or a limit is not finite
and positive.
Sourcepub fn with_limits(
position: [f64; N],
limits: [OtgLimits; N],
synchronize: bool,
) -> FrankaResult<Self>
pub fn with_limits( position: [f64; N], limits: [OtgLimits; N], synchronize: bool, ) -> FrankaResult<Self>
MultiOtg::new with limits of its own for every axis, which is what seven joints
with seven different envelopes need.
§Errors
FrankaError::InvalidArgument if a coordinate is not finite or a limit is not finite
and positive.
Sourcepub fn set_target(&mut self, target: [f64; N]) -> FrankaResult<()>
pub fn set_target(&mut self, target: [f64; N]) -> FrankaResult<()>
Sets the target position; the next step re-plans towards it.
§Errors
FrankaError::InvalidArgument, with the target unchanged, if a coordinate is not
finite.
Sourcepub fn step(&mut self, dt: f64) -> [f64; N]
pub fn step(&mut self, dt: f64) -> [f64; N]
Advances every axis by dt seconds and returns the new position. A dt that is not
positive and finite leaves the state untouched.
Sourcepub fn axes(&self) -> &[Otg; N]
pub fn axes(&self) -> &[Otg; N]
The per-axis generators, for their velocities, accelerations and targets.
Sourcepub fn set_position(&mut self, position: [f64; N]) -> FrankaResult<()>
pub fn set_position(&mut self, position: [f64; N]) -> FrankaResult<()>
Re-anchors every axis on the position actually commanded; see Otg::set_position.
§Errors
FrankaError::InvalidArgument, with the state unchanged, if a coordinate is not
finite.
Sourcepub fn set_state(
&mut self,
p: [f64; N],
v: [f64; N],
a: [f64; N],
) -> FrankaResult<()>
pub fn set_state( &mut self, p: [f64; N], v: [f64; N], a: [f64; N], ) -> FrankaResult<()>
Sets every axis’s state; see Otg::set_state for what the velocity and
acceleration must be.
§Errors
FrankaError::InvalidArgument, with the state unchanged, if a value is not finite.
Trait Implementations§
Auto Trait Implementations§
impl<const N: usize> Freeze for MultiOtg<N>
impl<const N: usize> RefUnwindSafe for MultiOtg<N>
impl<const N: usize> Send for MultiOtg<N>
impl<const N: usize> Sync for MultiOtg<N>
impl<const N: usize> Unpin for MultiOtg<N>
impl<const N: usize> UnsafeUnpin for MultiOtg<N>
impl<const N: usize> UnwindSafe for MultiOtg<N>
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.