pub struct PrismaticFK<const M: usize, const N: usize, FK: FKChain<N>> { /* private fields */ }Expand description
Wraps an FKChain<N> and prepends a prismatic (linear) joint, producing
an FKChain<M> where M = N + 1.
The prismatic joint always acts first in the kinematic chain — it
translates the entire arm along axis (world frame). The
q_index_first flag only controls where the prismatic value is read
from in SRobotQ<M>: when true it is q[0], when false it is
q[M-1].
Jacobian columns for the prismatic joint are [axis; 0] (pure linear,
no angular contribution). Because the prismatic uniformly shifts all
positions, the revolute Jacobian columns are identical to the inner
chain’s.
Implementations§
Trait Implementations§
Source§impl<const M: usize, const N: usize, FK: Clone + FKChain<N>> Clone for PrismaticFK<M, N, FK>
impl<const M: usize, const N: usize, FK: Clone + FKChain<N>> Clone for PrismaticFK<M, N, FK>
Source§fn clone(&self) -> PrismaticFK<M, N, FK>
fn clone(&self) -> PrismaticFK<M, N, FK>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const M: usize, const N: usize, FK: FKChain<N>> FKChain<M> for PrismaticFK<M, N, FK>
impl<const M: usize, const N: usize, FK: FKChain<N>> FKChain<M> for PrismaticFK<M, N, FK>
type Error = <FK as FKChain<N>>::Error
Source§fn base_tf(&self) -> Affine3A
fn base_tf(&self) -> Affine3A
Configuration-independent transform from the robot’s base frame to the
world frame. Defaults to identity; wrappers that install a static
prefix (e.g.
TransformedFK with a prefix set, or URDFChain
with fixed leading joints baked in) override this so downstream
consumers (collision validators, visualizers) can place the static
base body at the correct pose.fn fk(&self, q: &SRobotQ<M>) -> Result<[Affine3A; M], Self::Error>
fn fk_end(&self, q: &SRobotQ<M>) -> Result<Affine3A, Self::Error>
Source§fn joint_axes_positions(
&self,
q: &SRobotQ<M>,
) -> Result<([Vec3A; M], [Vec3A; M], Vec3A), Self::Error>
fn joint_axes_positions( &self, q: &SRobotQ<M>, ) -> Result<([Vec3A; M], [Vec3A; M], Vec3A), Self::Error>
Returns joint rotation axes and axis-origin positions in world frame at
configuration
q, plus the end-effector position.Source§fn jacobian(&self, q: &SRobotQ<M>) -> Result<[[f32; M]; 6], Self::Error>
fn jacobian(&self, q: &SRobotQ<M>) -> Result<[[f32; M]; 6], Self::Error>
Geometric Jacobian (6×N) at configuration
q.
Rows 0–2: linear velocity, rows 3–5: angular velocity.Source§fn jacobian_dot(
&self,
q: &SRobotQ<M>,
qdot: &SRobotQ<M>,
) -> Result<[[f32; M]; 6], Self::Error>
fn jacobian_dot( &self, q: &SRobotQ<M>, qdot: &SRobotQ<M>, ) -> Result<[[f32; M]; 6], Self::Error>
First time-derivative of the geometric Jacobian.
Source§fn jacobian_ddot(
&self,
q: &SRobotQ<M>,
qdot: &SRobotQ<M>,
qddot: &SRobotQ<M>,
) -> Result<[[f32; M]; 6], Self::Error>
fn jacobian_ddot( &self, q: &SRobotQ<M>, qdot: &SRobotQ<M>, qddot: &SRobotQ<M>, ) -> Result<[[f32; M]; 6], Self::Error>
Second time-derivative of the geometric Jacobian.
fn dof(&self) -> usize
Auto Trait Implementations§
impl<const M: usize, const N: usize, FK> Freeze for PrismaticFK<M, N, FK>where
FK: Freeze,
impl<const M: usize, const N: usize, FK> RefUnwindSafe for PrismaticFK<M, N, FK>where
FK: RefUnwindSafe,
impl<const M: usize, const N: usize, FK> Send for PrismaticFK<M, N, FK>
impl<const M: usize, const N: usize, FK> Sync for PrismaticFK<M, N, FK>
impl<const M: usize, const N: usize, FK> Unpin for PrismaticFK<M, N, FK>where
FK: Unpin,
impl<const M: usize, const N: usize, FK> UnsafeUnpin for PrismaticFK<M, N, FK>where
FK: UnsafeUnpin,
impl<const M: usize, const N: usize, FK> UnwindSafe for PrismaticFK<M, N, FK>where
FK: UnwindSafe,
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
Mutably borrows from an owned value. Read more