odometry.h
Go to the documentation of this file.
00001 // Copyright (c) 2010-2016 The YP-Spur Authors, except where otherwise indicated.
00002 //
00003 // Permission is hereby granted, free of charge, to any person obtaining a copy
00004 // of this software and associated documentation files (the "Software"), to
00005 // deal in the Software without restriction, including without limitation the
00006 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
00007 // sell copies of the Software, and to permit persons to whom the Software is
00008 // furnished to do so, subject to the following conditions:
00009 //
00010 // The above copyright notice and this permission notice shall be included in
00011 // all copies or substantial portions of the Software.
00012 //
00013 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00014 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00015 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00016 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00017 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00018 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
00019 // SOFTWARE.
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


yp-spur
Author(s):
autogenerated on Fri May 10 2019 02:52:19