下半身制御用ライブラリ Odometry...自己位置推定 Mecanum...メカナムホイール用 Bezier...ベジエ曲線 RoboClaw...MD用

Dependents:   TOUTEKI_all_mbed mbed_test_program

Mecanum.cpp

Committer:
yuki17100
Date:
2018-09-04
Revision:
3:9c3f2662974e
Parent:
2:f1085de93385

File content as of revision 3:9c3f2662974e:

#include "Mecanum.h"

Mecanum::Mecanum() : MD(115200, PIN_MD, NC){
}


void Mecanum::command(double (&duty)[4]){
    MD.SpeedM1(ADR_MD1, (int)(duty[0]*CMD));
    MD.SpeedM2(ADR_MD1, (int)(duty[2]*CMD));
    MD.SpeedM1(ADR_MD2, (int)(duty[3]*CMD));
    MD.SpeedM2(ADR_MD2, (int)(duty[1]*CMD));
}

void Mecanum::move(double direction, double speed, double revolution){
    double duty[4];
    
    duty[0] = (cos(direction) - sin(direction))*speed - revolution;//右前
    duty[1] = (cos(direction) + sin(direction))*speed + revolution;//左前
    duty[2] = (cos(direction) + sin(direction))*speed - revolution;//右後
    duty[3] = (cos(direction) - sin(direction))*speed + revolution;//左後
    
    command(duty);
    
}

void Mecanum::rectang(double x,double y,double rotation){
    double duty[4];
    
    duty[0] = y - x - rotation;
    duty[1] = y + x + rotation;
    duty[2] = y + x - rotation;
    duty[3] = y - x + rotation;
    
    command(duty);
}