ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / Soft / Lib / Maths / vision_math.h
1
2 #ifndef _STAGES_VISION_MATH_INCLUDE_
3 #define _STAGES_VISION_MATH_INCLUDE_
4
5 #include <Maths/maths.h>
6 #include <Maths/matrices.h>
7
8 /**
9  * @fn     Compute the matrix of uav pose in space
10  * @param  float32_t theta : euler angle
11  * @param  float32_t phi : euler angle
12  * @param  float32_t psi : euler angle
13  * @param  matrix *mat 
14  * @return VOID
15 */ 
16 void 
17 euler_matrix(float32_t theta, float32_t phi, float32_t psi, matrix33_t *mat);
18 void
19 horizontal_frame_euler_matrix(float32_t theta, float32_t phi, float32_t psi, matrix33_t *mat);
20 void
21 vertical_frame_euler_matrix(float32_t theta, float32_t phi, float32_t psi, matrix33_t *mat);
22 void
23 max_euler_matrix(float32_t theta, float32_t phi, float32_t psi, matrix33_t *mat);
24
25 /**
26  * @fn     Compute the matrix of uav pose in space R_euler*Rc, in camera basis
27  * @param  float32_t theta : euler angle
28  * @param  float32_t phi : euler angle
29  * @param  float32_t psi : euler angle
30  * @param  matrix *mat 
31  * @return VOID
32 */ 
33 void 
34 frame_euler_matrix(float32_t theta, float32_t phi, float32_t psi, matrix33_t *mat);
35
36 void
37 frame_euler_angles(vector31_t *angles, matrix33_t *R);
38 void
39 horizontal_frame_euler_angles(vector31_t *angles, matrix33_t *R);
40
41 /**
42  * @fn     Compute the matrix which projects points from frame (t-1) to frame (t) : tr(Rc)*Rot*Rc
43  * @param  float32_t delta_theta : integrated gyro in theta
44  * @param  float32_t delta_phi : integrated gyro in phi
45  * @param  float32_t delta_psi : integrated gyro in psi
46  * @param  matrix *matproj 
47  * @return VOID
48 */ 
49 void 
50 integrated_gyros_matrix(float32_t delta_theta, float32_t delta_phi, float32_t delta_psi, matrix33_t *matproj);
51
52 /**
53  * @fn     compute projection of a point on a plane
54  * @param  int x : first coordinate
55  * @param  int y : second coordinate
56  * @param  int centerx : first coordinate of the image center
57  * @param  int centery : second coordinate of the image center
58  * @param  matrix mat : projection matrix
59  * @param  float *u : first coordinate of result
60  * @param  float *v : second coordinate of result
61  * @return VOID
62 */ 
63 void 
64 proj_point(screen_point_t *point, screen_point_t *center, matrix33_t *mat, vector21_t *out);
65
66 void 
67 proj_pointf(vector21_t *point, screen_point_t *center, matrix33_t *mat, vector21_t *out);
68
69 void 
70 vision_direction_result(vector21_t *t, screen_point_t *v, int32_t  threshold);
71
72
73 #endif // ! _STAGES_VISION_MATH_INCLUDE_
74