Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef ODOMETRY_H
00022 #define ODOMETRY_H
00023
00024 #include <shvel-param.h>
00025
00026 #include <cartesian2d.h>
00027 #include <ypparam.h>
00028 #include <ypspur.h>
00029
00030 typedef struct _odometry *OdometryPtr;
00031 typedef struct _odometry
00032 {
00033 double x;
00034 double y;
00035 double theta;
00036 double v;
00037 double w;
00038 double time;
00039 double wvel[YP_PARAM_MAX_MOTOR_NUM];
00040 double wang[YP_PARAM_MAX_MOTOR_NUM];
00041 short enc[YP_PARAM_MAX_MOTOR_NUM];
00042 int enc_init[YP_PARAM_MAX_MOTOR_NUM];
00043 double wtorque[YP_PARAM_MAX_MOTOR_NUM];
00044 double torque_trans;
00045 double torque_angular;
00046 } Odometry;
00047
00048 typedef struct _error_state *ErrorStatePtr;
00049 typedef struct _error_state
00050 {
00051 YPSpur_shvel_error_state state[YP_PARAM_MAX_MOTOR_NUM];
00052 double time[YP_PARAM_MAX_MOTOR_NUM];
00053 } ErrorState;
00054
00055 double time_estimate(int readnum);
00056 void cstrans_odometry(YPSpur_cs cs, OdometryPtr dst_odm);
00057 void cstrans_xy(YPSpur_cs src, YPSpur_cs dest, double *x, double *y, double *theta);
00058 void odometry(OdometryPtr xp, short *cnt, short *pwm, double dt, double time);
00059 void process_int(
00060 OdometryPtr xp, ErrorStatePtr err, int param_id, int id, int value, double receive_time);
00061 void odm_logging(OdometryPtr, double, double);
00062 int odm_read(OdometryPtr odm, double *v, double *w);
00063 void cs_odometry(YPSpur_cs cs, OdometryPtr dst_odm);
00064 void init_odometry(void);
00065 void init_coordinate_systems(void);
00066 int odometry_receive_loop(void);
00067 OdometryPtr get_odometry_ptr();
00068 ErrorStatePtr get_error_state_ptr();
00069 CSptr get_cs_pointer(YPSpur_cs cs);
00070 void set_cs(YPSpur_cs cs, double x, double y, double theta);
00071
00072 #endif // ODOMETRY_H