1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use errors::*; use joints::*; use na::{Isometry3, Real}; pub trait JointContainer<T> where T: Real, { fn set_joint_angles(&mut self, angles: &[T]) -> Result<(), JointError>; fn get_joint_angles(&self) -> Vec<T>; fn get_joint_limits(&self) -> Vec<Option<Range<T>>>; fn get_joint_names(&self) -> Vec<String>; } pub trait LinkContainer<T> where T: Real, { fn calc_link_transforms(&self) -> Vec<Isometry3<T>>; fn get_link_names(&self) -> Vec<String>; } pub trait KinematicChain<T>: JointContainer<T> where T: Real, { fn calc_end_transform(&self) -> Isometry3<T>; }