00001 00002 // @{ 00003 00011 #ifndef MOVEMENT_H 00012 #define MOVEMENT_H 00013 00014 #ifdef __cplusplus 00015 extern "C" { 00016 #endif 00017 00018 #include <carmen/carmen.h> 00019 00021 typedef struct { 00022 double r1; 00023 double d; 00024 double r2; 00025 } carmen_movement_rtr_t; 00026 00028 typedef struct { 00029 double f; 00030 double s; 00031 double r; 00032 } carmen_movement_fsr_t; 00033 00034 /* ** Rotation-Translation-Rotation Transformations *********** */ 00035 00036 carmen_movement_rtr_t 00037 carmen_movement_rtr_from_point(carmen_point_t pt); 00038 00039 carmen_point_t 00040 carmen_movement_point_from_rtr(carmen_movement_rtr_t move); 00041 00042 carmen_movement_rtr_t 00043 carmen_movement_invert_rtr(carmen_movement_rtr_t r); 00044 00045 carmen_point_t 00046 carmen_movement_rtr_move_point(carmen_point_t t, 00047 carmen_movement_rtr_t r); 00048 00049 carmen_movement_rtr_t 00050 carmen_movement_compose_rtr(carmen_movement_rtr_t r, 00051 carmen_movement_rtr_t add) ; 00052 00053 carmen_movement_rtr_t 00054 carmen_movement_rtr_between_points(carmen_point_t t1, 00055 carmen_point_t t2); 00056 00057 /* ** Forward-Sideward-Rotation Transformations *********** */ 00058 00059 carmen_movement_fsr_t 00060 carmen_movement_fsr_from_point(carmen_point_t pt); 00061 00062 carmen_point_t 00063 carmen_movement_point_from_fsr(carmen_movement_fsr_t move); 00064 00065 carmen_movement_fsr_t 00066 carmen_movement_invert_fsr(carmen_movement_fsr_t r); 00067 00068 carmen_point_t 00069 carmen_movement_fsr_move_point(carmen_point_t t, 00070 carmen_movement_fsr_t r); 00071 00072 carmen_movement_fsr_t 00073 carmen_movement_compose_fsr(carmen_movement_fsr_t r, 00074 carmen_movement_fsr_t add) ; 00075 00076 00077 carmen_movement_fsr_t 00078 carmen_movement_fsr_between_points(carmen_point_t t1, 00079 carmen_point_t t2); 00080 00081 00082 /* ** Coversion between FSR and RTR Transformations *********** */ 00083 00084 carmen_movement_rtr_t 00085 carmen_movement_fsr_to_rtr(carmen_movement_fsr_t move); 00086 00087 carmen_movement_fsr_t 00088 carmen_movement_rtr_to_fsr(carmen_movement_rtr_t move); 00089 00090 /* ** Transformation between coordinate frames ************ */ 00091 00092 00093 /* returns pt_frame1 in the coordinate frame2 */ 00094 carmen_point_t 00095 carmen_movement_transformation_between_frames(carmen_point_t reference_pt_frame1, 00096 carmen_point_t reference_pt_frame2, 00097 carmen_point_t pt_frame1); 00098 00099 00100 #ifdef __cplusplus 00101 } 00102 #endif 00103 00104 00105 #endif 00106 00107 // @}