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§
Provided Methods§
Sourcefn max_reach(&self) -> Result<F, Self::Error>
fn max_reach(&self) -> Result<F, Self::Error>
Theoretical maximum reach: sum of link lengths at q = 0 (upper bound,
ignores joint limits).
Sourcefn jacobian(&self, q: &SRobotQ<N, F>) -> Result<[[F; N]; 6], Self::Error>
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.
Sourcefn manipulability(&self, q: &SRobotQ<N, F>) -> Result<F, Self::Error>
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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".