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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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>;
}