3輪オムニホイール制御 GNCT, B team

Dependencies:   nucleo_rotary_encoder

omuni.hpp

Committer:
sawai
Date:
2017-09-28
Revision:
0:3bd8aecadafc

File content as of revision 0:3bd8aecadafc:

#ifndef _omuni_
#define _omuni_

#include "speed_control.hpp"
#include "L3GD20_i2c.hpp"

#define THETA_ADDJUST   0.69f

class Omuni
{
private:
    I2C *i2c;
    l3gd20 *gyro;
    speed_control *o[3];
    Timer time, t;
    double tvx, tvy, tomega; 
    double vx, vy, omega, theta;
    double R, d;
    int addr[3];
    double v[3];
    bool f;
    bool crevx, crevy;
public:
    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);
    void set_pid(int n, double _kp, double _ki, double _kd);
    void change_motor_direction(int n, bool _rev);
    void change_coordinates_direction(bool _crevx, bool _crevy);
    void set_speed(double vx, double vy);
    void set_speed(double vx, double vy, double omega);
    void set_speed(double _vx, double _vy, double _omega, bool _f);
    void renew_theta();
    bool renew_speed();
    void _set_speed();
    void drive();
    void reset_theta();
    double get_theta();
    double get_vx();
    double get_vy();
};

#endif