Skip to main content

ContinuousFKChain

Trait ContinuousFKChain 

Source
pub trait ContinuousFKChain<const N: usize, F: KinScalar = f32>: FKChain<N, F, Error = DekeError> {
    // Required method
    fn structure(&self) -> KinSpec<F, N>;

    // Provided methods
    fn max_reach(&self) -> Result<F, Self::Error> { ... }
    fn jacobian(&self, q: &SRobotQ<N, F>) -> Result<[[F; N]; 6], Self::Error> { ... }
    fn manipulability(&self, q: &SRobotQ<N, F>) -> Result<F, Self::Error> { ... }
    fn jacobian_dot(
        &self,
        q: &SRobotQ<N, F>,
        qdot: &SRobotQ<N, F>,
    ) -> Result<[[F; N]; 6], Self::Error> { ... }
    fn jacobian_ddot(
        &self,
        q: &SRobotQ<N, F>,
        qdot: &SRobotQ<N, F>,
        qddot: &SRobotQ<N, F>,
    ) -> Result<[[F; N]; 6], Self::Error> { ... }
}
Expand description

Extension trait over FKChain for chains that can describe their kinematic structure as a KinSpec. From the structure plus a joint configuration the trait derives geometric Jacobian computations (jacobian, jacobian_dot, jacobian_ddot) and the link-length-sum max_reach estimate, all provided as defaults that respect each joint’s JointSpec (so prismatic and revolute columns are formed correctly).

Required Methods§

Source

fn structure(&self) -> KinSpec<F, N>

Provided Methods§

Source

fn max_reach(&self) -> Result<F, Self::Error>

Theoretical maximum reach: sum of link lengths at q = 0 (upper bound, ignores joint limits).

Source

fn jacobian(&self, q: &SRobotQ<N, F>) -> Result<[[F; N]; 6], Self::Error>

Geometric Jacobian (6×N) at configuration q. Rows 0–2: linear velocity, rows 3–5: angular velocity.

Source

fn manipulability(&self, q: &SRobotQ<N, F>) -> Result<F, Self::Error>

Yoshikawa manipulability w = sqrt(det(J Jᵀ)) at configuration q — the volume of the velocity ellipsoid, a scalar dexterity measure that falls to zero at a singularity.

For an under-actuated chain (N < 6) the velocity ellipsoid lives in an N-dimensional subspace, so the full 6×6 J Jᵀ is rank-deficient and its determinant is identically zero; the equivalent sqrt(det(Jᵀ J)) over the N×N Gram matrix is used instead. Both forms equal the product of the Jacobian’s singular values.

Source

fn jacobian_dot( &self, q: &SRobotQ<N, F>, qdot: &SRobotQ<N, F>, ) -> Result<[[F; N]; 6], Self::Error>

First time-derivative of the geometric Jacobian.

Source

fn jacobian_ddot( &self, q: &SRobotQ<N, F>, qdot: &SRobotQ<N, F>, qddot: &SRobotQ<N, F>, ) -> Result<[[F; N]; 6], Self::Error>

Second time-derivative of the geometric Jacobian.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§