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

Dependents:   TOUTEKI_all_mbed mbed_test_program

Revision:
3:9c3f2662974e
Parent:
2:f1085de93385
--- a/Mecanum.cpp	Sun Sep 02 11:36:38 2018 +0000
+++ b/Mecanum.cpp	Tue Sep 04 14:22:13 2018 +0000
@@ -4,17 +4,32 @@
 }
 
 
+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;//左後
+    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);
     
-    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::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);
 }
\ No newline at end of file