3輪オムニホイール制御 GNCT, B team
Dependencies: nucleo_rotary_encoder
omuni.hpp@0:3bd8aecadafc, 2017-09-28 (annotated)
- Committer:
- sawai
- Date:
- Thu Sep 28 10:50:37 2017 +0000
- Revision:
- 0:3bd8aecadafc
?????????xy?????; ???????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sawai | 0:3bd8aecadafc | 1 | #ifndef _omuni_ |
sawai | 0:3bd8aecadafc | 2 | #define _omuni_ |
sawai | 0:3bd8aecadafc | 3 | |
sawai | 0:3bd8aecadafc | 4 | #include "speed_control.hpp" |
sawai | 0:3bd8aecadafc | 5 | #include "L3GD20_i2c.hpp" |
sawai | 0:3bd8aecadafc | 6 | |
sawai | 0:3bd8aecadafc | 7 | #define THETA_ADDJUST 0.69f |
sawai | 0:3bd8aecadafc | 8 | |
sawai | 0:3bd8aecadafc | 9 | class Omuni |
sawai | 0:3bd8aecadafc | 10 | { |
sawai | 0:3bd8aecadafc | 11 | private: |
sawai | 0:3bd8aecadafc | 12 | I2C *i2c; |
sawai | 0:3bd8aecadafc | 13 | l3gd20 *gyro; |
sawai | 0:3bd8aecadafc | 14 | speed_control *o[3]; |
sawai | 0:3bd8aecadafc | 15 | Timer time, t; |
sawai | 0:3bd8aecadafc | 16 | double tvx, tvy, tomega; |
sawai | 0:3bd8aecadafc | 17 | double vx, vy, omega, theta; |
sawai | 0:3bd8aecadafc | 18 | double R, d; |
sawai | 0:3bd8aecadafc | 19 | int addr[3]; |
sawai | 0:3bd8aecadafc | 20 | double v[3]; |
sawai | 0:3bd8aecadafc | 21 | bool f; |
sawai | 0:3bd8aecadafc | 22 | bool crevx, crevy; |
sawai | 0:3bd8aecadafc | 23 | public: |
sawai | 0:3bd8aecadafc | 24 | Omuni(I2C *i, TIM_TypeDef *timer_type0, TIM_TypeDef *timer_type1, TIM_TypeDef *timer_type2, size_t pulse_per_revol, double _cy_ms, const int a[3], double _R, double _d); |
sawai | 0:3bd8aecadafc | 25 | void set_pid(int n, double _kp, double _ki, double _kd); |
sawai | 0:3bd8aecadafc | 26 | void change_motor_direction(int n, bool _rev); |
sawai | 0:3bd8aecadafc | 27 | void change_coordinates_direction(bool _crevx, bool _crevy); |
sawai | 0:3bd8aecadafc | 28 | void set_speed(double vx, double vy); |
sawai | 0:3bd8aecadafc | 29 | void set_speed(double vx, double vy, double omega); |
sawai | 0:3bd8aecadafc | 30 | void set_speed(double _vx, double _vy, double _omega, bool _f); |
sawai | 0:3bd8aecadafc | 31 | void renew_theta(); |
sawai | 0:3bd8aecadafc | 32 | bool renew_speed(); |
sawai | 0:3bd8aecadafc | 33 | void _set_speed(); |
sawai | 0:3bd8aecadafc | 34 | void drive(); |
sawai | 0:3bd8aecadafc | 35 | void reset_theta(); |
sawai | 0:3bd8aecadafc | 36 | double get_theta(); |
sawai | 0:3bd8aecadafc | 37 | double get_vx(); |
sawai | 0:3bd8aecadafc | 38 | double get_vy(); |
sawai | 0:3bd8aecadafc | 39 | }; |
sawai | 0:3bd8aecadafc | 40 | |
sawai | 0:3bd8aecadafc | 41 | #endif |