pub struct HPChain<const N: usize> { /* private fields */ }Expand description
Precomputed Hayati-Paul chain with SoA layout.
Convention: T_i = Rz(θ) · Rx(α) · Ry(β) · Tx(a) · Tz(d)
HP adds a β rotation about Y, which makes it numerically stable for
nearly-parallel consecutive joint axes where standard DH is singular.
Implementations§
Trait Implementations§
Source§impl<const N: usize> FKChain<N> for HPChain<N>
impl<const N: usize> FKChain<N> for HPChain<N>
type Error = DekeError
fn fk(&self, q: &SRobotQ<N>) -> Result<[Affine3A; N], Self::Error>
fn fk_end(&self, q: &SRobotQ<N>) -> Result<Affine3A, Self::Error>
Source§fn joint_axes_positions(
&self,
q: &SRobotQ<N>,
) -> Result<([Vec3A; N], [Vec3A; N], Vec3A), Self::Error>
fn joint_axes_positions( &self, q: &SRobotQ<N>, ) -> Result<([Vec3A; N], [Vec3A; N], Vec3A), Self::Error>
Returns joint rotation axes and axis-origin positions in world frame at
configuration
q, plus the end-effector position.fn dof(&self) -> usize
Source§fn max_reach(&self) -> Result<f32, Self::Error>
fn max_reach(&self) -> Result<f32, Self::Error>
Theoretical maximum reach: sum of link lengths (upper bound, ignores joint limits).
Source§fn jacobian(&self, q: &SRobotQ<N>) -> Result<[[f32; N]; 6], Self::Error>
fn jacobian(&self, q: &SRobotQ<N>) -> Result<[[f32; N]; 6], Self::Error>
Geometric Jacobian (6×N) at configuration
q.
Rows 0–2: linear velocity, rows 3–5: angular velocity.Source§impl From<HPChain<1>> for DynamicHPChain
impl From<HPChain<1>> for DynamicHPChain
Source§impl From<HPChain<2>> for DynamicHPChain
impl From<HPChain<2>> for DynamicHPChain
Source§impl From<HPChain<3>> for DynamicHPChain
impl From<HPChain<3>> for DynamicHPChain
Source§impl From<HPChain<4>> for DynamicHPChain
impl From<HPChain<4>> for DynamicHPChain
Source§impl From<HPChain<5>> for DynamicHPChain
impl From<HPChain<5>> for DynamicHPChain
Source§impl From<HPChain<6>> for DynamicHPChain
impl From<HPChain<6>> for DynamicHPChain
Source§impl From<HPChain<7>> for DynamicHPChain
impl From<HPChain<7>> for DynamicHPChain
Auto Trait Implementations§
impl<const N: usize> Freeze for HPChain<N>
impl<const N: usize> RefUnwindSafe for HPChain<N>
impl<const N: usize> Send for HPChain<N>
impl<const N: usize> Sync for HPChain<N>
impl<const N: usize> Unpin for HPChain<N>
impl<const N: usize> UnsafeUnpin for HPChain<N>
impl<const N: usize> UnwindSafe for HPChain<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
Mutably borrows from an owned value. Read more