gohome

Dependencies:   mbed HCSR04

Files at this revision

API Documentation at this revision

Comitter:
tks1
Date:
Tue Dec 21 06:40:21 2021 +0000
Parent:
9:71b780f8d345
Commit message:
gohome

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 71b780f8d345 -r 91d4b6117470 main.cpp
--- a/main.cpp	Tue Dec 21 00:59:40 2021 +0000
+++ b/main.cpp	Tue Dec 21 06:40:21 2021 +0000
@@ -6,8 +6,8 @@
 //エンコーダ読み取りによる入力
 //加減速度調整パラメータ実装
 //PID制御による機体角度補正_
-//aoki 
- 
+//aoki
+
 #include "mbed.h"
 #include "hcsr04.h"
 
@@ -25,30 +25,32 @@
 #define WALL_MIN 25
 #define Standby_Time 10
 #define GETOFF_TIME 1
- 
+
+
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
 DigitalOut led3(LED3);
 DigitalOut led4(LED4);
- 
+
 Timer t;
-Timer Clean_right;
+Timer cr_t;
 double Time = 0;
-double Clean_right_time = 0;
+double cr_time = 0;
+int crflag=0;
 
 Serial pc(USBTX, USBRX);
 char Serialdata;
 BusOut LED(PA_4,PB_6,PB_7,PA_9);
 
- 
+
 //HCSR04 u1(p13, p14), u2(p11, p12), u3(p23, p24), u4(p25, p26); // Trigger(DO), Echo(PWMIN); LPC1768
 HCSR04 u1(PA_0, PA_1),u2(PA_5, PA_6),u3(PB_0, PA_10); // Trigger(DO), Echo(PWMIN); f303k8
- 
+
 CANMessage canmsgTx;
 CANMessage canmsgRx;
 //CAN canPort(p30, p29);  //CAN name(PinName rd, PinName td) LPC1768
 CAN canPort(PA_11, PA_12);  //CAN name(PinName rd, PinName td) F303k8
- 
+
 //プロトタイプ宣言
 //------------------send関数-------------------
 //mode Setting
@@ -90,699 +92,765 @@
 void vel_right(int);
 void vel_right_con(int);
 void vel_left(int);
+int encX = 0;
+int encY = 0;
+int posX =0;
+int posY =0;
+
+//--------//
+void  update_pos()
+{
+    readActPos(1);
+    encX=canmsgRx.data[4]+canmsgRx.data[5]*256+canmsgRx.data[6]*65536;
+    if(encX > 8388608) {
+        encX -= 0x1000000;//16進数でのマイナス処理 16^7 = 16,777,216 = 0x1000000
+    }
+    wait_ms(10);
+    readActPos(2);
+    encY=canmsgRx.data[4]+canmsgRx.data[5]*256+canmsgRx.data[6]*65536;
+    if(encY > 8388608) {
+        encY -= 0x1000000;//16進数でのマイナス処理 16^7 = 16,777,216 = 0x1000000
+    }
+    wait_ms(10);
+    posX = (encX*0.707)-(encY*0.707);
+    posY = (-encX*0.707)-(encY*0.707);
+    //printf("encX=[%4d],encY=[%4d],posX=[%4d],posY=[%d]\r\n",encX,encY,posX,posY);
+}
+void gohome()
+{
+    update_pos();
+    while(posX>0) {
+        update_pos();
+        set_ACC(1000);//加速度設定
+        set_DEC(1000);//減速度設定
+        set_MODE_V();//速度制御モード送信
+        vel_right(-300);//前進速度指令
+    }
+    vel_right(0);
+    while(posY>0) {
+        update_pos();
+        set_ACC(1000);//加速度設定
+        set_DEC(1000);//減速度設定
+        set_MODE_V();//速度制御モード送信
+        vel_forward_con(-300);//前進速度指令
+    }
+    
+}
 
 //unsigned int get_cm_n(HCSR04, unsigned int);
 //USE -> unsigned int dist_UnitA = get_cm_n(u2, 5);
-unsigned int get_cm_n(HCSR04 &echo_unit,int echo_n){
-    unsigned int sampled_dist=0;
-    for (int iter_n = 0; iter_n <echo_n; iter_n++){
-        echo_unit.start();
-        sampled_dist += echo_unit.get_dist_cm();
-    }
-    return  (sampled_dist / echo_n);
-} 
+        unsigned int get_cm_n(HCSR04 &echo_unit,int echo_n) {
+            unsigned int sampled_dist=0;
+            for (int iter_n = 0; iter_n <echo_n; iter_n++) {
+                echo_unit.start();
+                sampled_dist += echo_unit.get_dist_cm();
+            }
+            return  (sampled_dist / echo_n);
+        }
+
+        int nodeall=4;
+
+        int main() {
+            //Serial
+            pc.attach(SerialRX);
+            //pc.baud(115200);
+
+            //CAN
+            canPort.frequency(1000000); //Bit Rate:1MHz
+            canPort.attach(CANdataRX,CAN::RxIrq);
+            int node1 = 1;  //CAN node Setting
+            int node2 = 2;
+            int node3 = 3;
+            int node4 = 4;
+
+            //エンコーダ関係
+            int ActPos = 0;
+            int Init_Pos = 0;
+
+            //超音波センサ関係パラメータ
+            int dist1,dist2,dist3,dist4;
+
+            //PID制御関係
+            //角度調整パラメータ
+
+
+#define DELTA_T1  0.1
+#define target_val1  0
+#define Kp1  3
+#define Ki1  0
+#define Kd1  0
+
+            pc.printf("YUKA PROGRAM START\r\n");
+            wait(0.1);
+            //-------------起動時に必ず送信---------------
+            //オペレーティングモードを送信
+            sendOPModeT(node1);
+            sendOPModeT(node2);
+            sendOPModeT(node3);
+            sendOPModeT(node4);
 
-int nodeall=4;
- 
-int main(){
-    //Serial
-    pc.attach(SerialRX);
-    //pc.baud(115200);
-    
-    //CAN
-    canPort.frequency(1000000); //Bit Rate:1MHz
-    canPort.attach(CANdataRX,CAN::RxIrq);
-    int node1 = 1;  //CAN node Setting
-    int node2 = 2;
-    int node3 = 3;
-    int node4 = 4;
-    
-    //エンコーダ関係
-    int ActPos = 0;
-    int Init_Pos = 0;
-    
-    //超音波センサ関係パラメータ
-    int dist1,dist2,dist3,dist4;
-    
-    //PID制御関係
-    //角度調整パラメータ
+            //Shutdown,Enableコマンド送信|リセット
+            sendCtrlSD(node1);
+            sendCtrlSD(node2);
+            sendCtrlSD(node3);
+            sendCtrlSD(node4);
+
+            sendCtrlEN(node1);
+            sendCtrlEN(node2);
+            sendCtrlEN(node3);
+            sendCtrlEN(node4);
+
+            //初期加減速度
+            int Acc = 2000;
+            int Dec = 2000;
+
+            sendProAcc(1,Acc);
+            sendProAcc(2,Acc);
+            sendProAcc(3,Acc);
+            sendProAcc(4,Acc);
+
+            sendProDec(1,Dec);
+            sendProDec(2,Dec);
+            sendProDec(3,Dec);
+            sendProDec(4,Dec);
+
+            //トルク設定
+            int trq = 100;   //torque Setting[mA]
+
+            sendTgtTrq(1,trq);
+            sendTgtTrq(2,trq);
+            sendTgtTrq(3,trq);
+            sendTgtTrq(4,trq);
+
+            int state_1 = 0;
+            int state_2 = 0;
+            int ride_count = 0;
+
+            int X_DIST_TMP = 0;
+            int dist1_ori = 0;
+            int dist2_ori = 0;
+
+            dist1 = 0;
+            readActPos(1);
+            ActPos=canmsgRx.data[4]+canmsgRx.data[5]*256+canmsgRx.data[6]*65536;
+            if(ActPos > 8388608) {
+                ActPos -= 0x1000000;//16進数でのマイナス処理 16^7 = 16,777,216 = 0x1000000
+            }
+            Init_Pos = ActPos;//起動時の角度を保存
+            t.reset();
+            t.start();
+            cr_t.reset();
 
 
-    #define DELTA_T1  0.1
-    #define target_val1  0
-    #define Kp1  3
-    #define Ki1  0
-    #define Kd1  0
-       
-    pc.printf("YUKA PROGRAM START\r\n");
-    wait(0.1);
-    //-------------起動時に必ず送信---------------
-    //オペレーティングモードを送信
-    sendOPModeT(node1);
-    sendOPModeT(node2);
-    sendOPModeT(node3);
-    sendOPModeT(node4);
-        
-    //Shutdown,Enableコマンド送信|リセット
-    sendCtrlSD(node1);
-    sendCtrlSD(node2);
-    sendCtrlSD(node3);
-    sendCtrlSD(node4);
- 
-    sendCtrlEN(node1);
-    sendCtrlEN(node2);
-    sendCtrlEN(node3);
-    sendCtrlEN(node4);
-    
-    //初期加減速度
-    int Acc = 2000;
-    int Dec = 2000;
-    
-    sendProAcc(1,Acc);
-    sendProAcc(2,Acc);
-    sendProAcc(3,Acc);
-    sendProAcc(4,Acc);
-           
-    sendProDec(1,Dec);
-    sendProDec(2,Dec);
-    sendProDec(3,Dec);
-    sendProDec(4,Dec);  
- 
-    //トルク設定
-    int trq = 100;   //torque Setting[mA]
-  
-    sendTgtTrq(1,trq);
-    sendTgtTrq(2,trq);
-    sendTgtTrq(3,trq);
-    sendTgtTrq(4,trq);
-             
-    int state_1 = 0;
-    int state_2 = 0;    
-    int ride_count = 0;
+            //set_MODE_T();
+
+            printf("\nstart\r\n");
+            LED = 0b1111;
+
+            while(1) {
+
+                Time = t.read();
+                cr_time = cr_t.read();
+
+                //pc.printf("state_1:%d  state_2:%d\r\n",state_1,state_2);
+                pc.printf("state_1:%d state_2:%d ACT:%d TMP:%d \r\n",state_1,state_2,dist3,X_DIST_TMP);
+                readActPos(1);
+                ActPos=canmsgRx.data[4]+canmsgRx.data[5]*256+canmsgRx.data[6]*65536;
+                if(ActPos > 8388608) {
+                    ActPos -= 0x1000000;//16進数でのマイナス処理 16^7 = 16,777,216 = 0x1000000
+                    //printf("check\r\n");
+                }
+                dist3 = get_cm_n(u3, 5);
+                dist1 = get_cm_n(u1, 5);
+                dist2 = get_cm_n(u2, 5);
+
+                /*--------------------------*/
+                //
+                if(state_1 == 0) { //入力判断フェーズ
+                    state_2 = 0;
+                    if(ride_count >= 2 && Time > Standby_Time) {
+                        state_1 = 20;
+                    } else {
+                        if(ActPos < (Init_Pos - KICK)) { //前入力検出
+                            ride_count++;
+                            LED = 0b0111;
+                            state_1 = 1;
+                        } else if(ActPos > (Init_Pos + KICK)) { //右入力検出
+                            ride_count++;
+                            LED = LED = 0b1101;;
+                            state_1 = 11;
+                        } else {
+                            set_MODE_T();
+                            LED = 0b1111;
+                        }
+                    }
 
-    int X_DIST_TMP = 0;
-    int dist1_ori = 0;
-    int dist2_ori = 0;
+                } else if(state_1 == 1) { //前進→壁検出フェーズ
+                    if(dist1 < WALL && dist1 >= WALL_MIN) {
+                        vel_stop();
+                        wait(GETOFF_TIME);
+                        LED = 0b1011;
+                        state_1 = 2;
+                    } else {
+                        set_ACC(ACC_RIDE);//加速度設定
+                        set_DEC(DEC_CLEAN);//減速度設定
+                        set_MODE_V();//速度制御モード送信
+                        vel_forward_con(RPM_RIDE);//前進速度指令
+                    }
+                } else if(state_1 == 2) { //前進からの帰還フェーズ
+                    if(ActPos > -3000) {
+                        vel_stop();
+                        LED = 0b1111;
+                        t.reset();
+                        t.start();
+                        state_1 = 0;
+                        wait(1.0);
+                    } else {
+                        vel_backward_con(RPM_RIDE);
+                    }
+                } else if(state_1 == 11) { //右進→壁検出フェーズ
+                    if(dist3 < WALL && dist3 >= WALL_MIN) {
+                        vel_stop();
+                        wait(GETOFF_TIME);
+                        LED = 0b1110;
+                        state_1 = 12;
+                    } else {
+                        set_ACC(ACC_RIDE);//加速度設定
+                        set_DEC(DEC_RIDE);//減速度設定
+                        set_MODE_V();//速度制御モード送信
+                        vel_right(RPM_RIDE);//R進速度指令
+                    }
+                } else if(state_1 == 12) { //右進からの帰還フェーズ
+                    if(ActPos < 3000) {
+                        vel_stop();
+                        LED = 1111;
+                        t.reset();
+                        t.start();
+                        state_1 = 0;
+                        wait(1.0);
+                    } else {
+                        vel_left(RPM_RIDE);
+                    }
 
-    dist1 = 0;
-    readActPos(1);
-    ActPos=canmsgRx.data[4]+canmsgRx.data[5]*256+canmsgRx.data[6]*65536;
-    if(ActPos > 8388608){
-        ActPos -= 0x1000000;//16進数でのマイナス処理 16^7 = 16,777,216 = 0x1000000
-    }
-    Init_Pos = ActPos;//起動時の角度を保存
-    t.reset();
-    t.start();
-    Clean_right.reset();
-    
-
-    //set_MODE_T();
-
-    printf("\nstart\r\n");
-    LED = 0b1111;
+                    //////////////////////////////
+                } else if(state_1 == 20) { //消毒モード
 
-    while(1){
-                
-        Time = t.read();
-        Clean_right_time = Clean_right.read();
-        
-        //pc.printf("state_1:%d  state_2:%d\r\n",state_1,state_2);
-        pc.printf("state_1:%d state_2:%d ACT:%d TMP:%d \r\n",state_1,state_2,dist3,X_DIST_TMP);
-        readActPos(1);
-        ActPos=canmsgRx.data[4]+canmsgRx.data[5]*256+canmsgRx.data[6]*65536;
-        if(ActPos > 8388608){
-            ActPos -= 0x1000000;//16進数でのマイナス処理 16^7 = 16,777,216 = 0x1000000
-            //printf("check\r\n");
-        }
-        dist1 = get_cm_n(u1, 5);
-        dist2 = get_cm_n(u2, 5);
-        dist3 = get_cm_n(u3, 5);
-         
-        /*--------------------------*/
-        //
-        if(state_1 == 0){//入力判断フェーズ
-            state_2 = 0;
-            if(ride_count >= 2 && Time > Standby_Time){
-                state_1 = 20;    
-            }else{   
-                if(ActPos < (Init_Pos - KICK)){ //前入力検出
-                    ride_count++; 
-                    LED = 0b0111;
-                    state_1 = 1;
-                }else if(ActPos > (Init_Pos + KICK)){ //右入力検出
-                    ride_count++;
-                    LED = LED = 0b1101;;
-                    state_1 = 11;
-                }else{
-                    set_MODE_T();
-                    LED = 0b1111;
+                    if(state_2 == 0) {
+                        if(dist1 < WALL && dist1 >= WALL_MIN) {
+                            X_DIST_TMP = dist3;
+                            state_2 = 1;
+                        } else {
+                            set_ACC(ACC_CLEAN);//加速度設定
+                            set_DEC(DEC_CLEAN);//減速度設定
+                            set_MODE_V();//速度制御モード送信
+                            vel_forward_con(RPM_CLEAN);//前進速度指令
+                        }
+                    } else if(state_2 == 1) {
+                        int dist3_tmp = get_cm_n(u1,5);
+                        wait_ms(10);
+                        // if(dist3 < WALL && dist3 >= WALL_MIN){
+                        // if(dist3_tmp<10){
+                        update_pos();
+                        if(posX<12000) {
+                            gohome();
+                            state_2 = 4;
+                        } else {
+                            set_ACC(ACC_CLEAN);//加速度設定
+                            set_DEC(DEC_CLEAN);//減速度設定
+                            set_MODE_V();//速度制御モード送信
+                            vel_right(RPM_CLEAN);//右進速度指令
+                            wait(CLEAN_OFFSET);
+                            state_2 = 2;
+                        }
+
+                    } else if(state_2 == 2) {
+                        if(ActPos > -3000) {
+                            state_2 = 3;
+                        } else {
+                            set_ACC(ACC_CLEAN);//加速度設定
+                            set_DEC(DEC_CLEAN);//減速度設定
+                            set_MODE_V();//速度制御モード送信
+                            vel_backward_con(RPM_CLEAN);//後進速度指令
+                        }
+                    } else if(state_2 == 3) {
+                        if(dist3 < WALL && dist3 >= WALL_MIN) {
+                            state_2 = 4;
+                        } else {
+                            set_ACC(ACC_CLEAN);//加速度設定
+                            set_DEC(DEC_CLEAN);//減速度設定
+                            set_MODE_V();//速度制御モード送信
+                            vel_right(RPM_CLEAN);//右進速度指令
+                            wait(CLEAN_OFFSET);
+                            state_2 = 0;
+                        }
+                    } else if(state_2 == 4) {
+                        if(ActPos < 3000) {
+                            state_2 = 5;
+                        } else {
+                            vel_left(RPM_CLEAN);
+                        }
+                    } else if(state_2 == 5) {
+                        if(ActPos > -3000) {
+                            t.reset();
+                            t.start();
+                            state_1 = 0;
+                            state_2 = 0;
+                        } else {
+                            vel_backward_con(RPM_CLEAN);
+                        }
+                    }
                 }
             }
-            
-        }else if(state_1 == 1){//前進→壁検出フェーズ
-            if(dist1 < WALL && dist1 >= WALL_MIN){
-                vel_stop();
-                wait(GETOFF_TIME);
-                LED = 0b1011;
-                state_1 = 2;
-            }else{
-                set_ACC(ACC_RIDE);//加速度設定
-                set_DEC(DEC_CLEAN);//減速度設定
-                set_MODE_V();//速度制御モード送信
-                vel_forward_con(RPM_RIDE);//前進速度指令
+        }
+
+        void vel_right(int rpm) {
+            sendTgtVel(1,rpm);
+            sendTgtVel(2,rpm*(-1));
+            sendTgtVel(3,rpm*(-1));
+            sendTgtVel(4,rpm);
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
             }
-        }else if(state_1 == 2){//前進からの帰還フェーズ
-            if(ActPos > -3000){
-                vel_stop();
-                LED = 0b1111;
-                t.reset();
-                t.start();
-                state_1 = 0;
-                wait(1.0);
-            }else{
-                vel_backward_con(RPM_RIDE);
+        }
+        void vel_right_con(int rpmA) {
+            int dis1 = get_cm_n(u1,5);
+            int dis2 = get_cm_n(u2,5);
+
+            //速度を指定
+            int robot_angle = ((dis1 - dis2)*5);
+            sendTgtVel(1,rpmA+robot_angle);
+            sendTgtVel(2,rpmA*(-1)+robot_angle);
+            sendTgtVel(3,rpmA*(-1)+robot_angle);
+            sendTgtVel(4,rpmA+robot_angle);
+            //指令値を送信
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
             }
-        }else if(state_1 == 11){//右進→壁検出フェーズ
-            if(dist3 < WALL && dist3 >= WALL_MIN){
-                vel_stop();
-                wait(GETOFF_TIME);
-                LED = 0b1110;
-                state_1 = 12;
-            }else{
-                set_ACC(ACC_RIDE);//加速度設定
-                set_DEC(DEC_RIDE);//減速度設定
-                set_MODE_V();//速度制御モード送信
-                vel_right(RPM_RIDE);//R進速度指令
+        }
+
+
+        void vel_left(int rpm) {
+            sendTgtVel(1,rpm*(-1));
+            sendTgtVel(2,rpm);
+            sendTgtVel(3,rpm);
+            sendTgtVel(4,rpm*(-1));
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
             }
-        }else if(state_1 == 12){//右進からの帰還フェーズ
-            if(ActPos < 3000){
-                vel_stop();
-                LED = 1111;
-                t.reset();
-                t.start();
-                state_1 = 0;
-                wait(1.0);
-            }else{
-                vel_left(RPM_RIDE);
-            } 
-        }else if(state_1 == 20){//消毒モード
-            if(state_2 == 0){
-                if(dist1 < WALL && dist1 >= WALL_MIN){
-                    X_DIST_TMP = dist3;
-                    state_2 = 1;
-                }else{
-                    set_ACC(ACC_CLEAN);//加速度設定
-                    set_DEC(DEC_CLEAN);//減速度設定
-                    set_MODE_V();//速度制御モード送信
-                    vel_forward_con(RPM_CLEAN);//前進速度指令
-                }   
-            }else if(state_2 == 1){
-                if(dist3 < WALL && dist3 >= WALL_MIN){
-                    state_2 = 4;
-                }else{
-                    set_ACC(ACC_CLEAN);//加速度設定
-                    set_DEC(DEC_CLEAN);//減速度設定
-                    set_MODE_V();//速度制御モード送信
-                    vel_right(RPM_CLEAN);//右進速度指令
-                    wait(CLEAN_OFFSET);
-                    state_2 = 2;
-                }
-                
-            }else if(state_2 == 2){
-                if(ActPos > -3000){
-                    state_2 = 3;
-                }else{
-                    set_ACC(ACC_CLEAN);//加速度設定
-                    set_DEC(DEC_CLEAN);//減速度設定
-                    set_MODE_V();//速度制御モード送信
-                    vel_backward_con(RPM_CLEAN);//後進速度指令
-                }
-            }else if(state_2 == 3){
-                if(dist3 < WALL && dist3 >= WALL_MIN){
-                    state_2 = 4;
-                }else{
-                    set_ACC(ACC_CLEAN);//加速度設定
-                    set_DEC(DEC_CLEAN);//減速度設定
-                    set_MODE_V();//速度制御モード送信
-                    vel_right(RPM_CLEAN);//右進速度指令
-                    wait(CLEAN_OFFSET);
-                    state_2 = 0;
-                }
-            }else if(state_2 == 4){
-                if(ActPos < 3000){
-                    state_2 = 5;
-                }else{
-                    vel_left(RPM_CLEAN);
-                }        
-            }else if(state_2 == 5){
-                if(ActPos > -3000){
-                    t.reset();
-                    t.start();
-                    state_1 = 0;
-                    state_2 = 0;
-                }else{
-                    vel_backward_con(RPM_CLEAN);
-                }
+        }
+
+
+        void vel_left_con(int rpmA) {
+            int dis1 = get_cm_n(u1,5);
+            int dis2 = get_cm_n(u2,5);
+
+            //速度を指定
+            int robot_angle = ((dis1 - dis2)*5);
+            sendTgtVel(1,rpmA*(-1)+robot_angle);
+            sendTgtVel(2,rpmA+robot_angle);
+            sendTgtVel(3,rpmA+robot_angle);
+            sendTgtVel(4,rpmA*(-1)+robot_angle);
+            //指令値を送信
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
+            }
+        }
+
+        void vel_stop() {
+            //速度を指定
+            sendTgtVel(1,0);
+            sendTgtVel(2,0);
+            sendTgtVel(3,0);
+            sendTgtVel(4,0);
+            //指令値を送信
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
             }
-        }        
-    }
-}      
+        }
+
+        void vel_backward(int rpm) {
+            //速度を指定
+            sendTgtVel(1,rpm);
+            sendTgtVel(2,rpm);
+            sendTgtVel(3,rpm*(-1));
+            sendTgtVel(4,rpm*(-1));
+            //指令値を送信
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
+            }
+        }
 
-void vel_right(int rpm){
-    sendTgtVel(1,rpm);
-    sendTgtVel(2,rpm*(-1));
-    sendTgtVel(3,rpm*(-1));
-    sendTgtVel(4,rpm);
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
-void vel_right_con(int rpmA){
-    int dis1 = get_cm_n(u1,5);
-    int dis2 = get_cm_n(u2,5);
-    
-    //速度を指定
-    int robot_angle = ((dis1 - dis2)*5);
-    sendTgtVel(1,rpmA+robot_angle);
-    sendTgtVel(2,rpmA*(-1)+robot_angle);
-    sendTgtVel(3,rpmA*(-1)+robot_angle);
-    sendTgtVel(4,rpmA+robot_angle);
-    //指令値を送信
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
- 
+        void vel_backward_con(int rpmA) {
+            int dis1 = get_cm_n(u1,5);
+            int dis2 = get_cm_n(u2,5);
 
-void vel_left(int rpm){
-    sendTgtVel(1,rpm*(-1));
-    sendTgtVel(2,rpm);
-    sendTgtVel(3,rpm);
-    sendTgtVel(4,rpm*(-1));
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
+            //速度を指定
+            int robot_angle = ((dis1 - dis2)*10);
+            sendTgtVel(1,rpmA+robot_angle);
+            sendTgtVel(2,rpmA+robot_angle);
+            sendTgtVel(3,rpmA*(-1)+robot_angle);
+            sendTgtVel(4,rpmA*(-1)+robot_angle);
+            //指令値を送信
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
+            }
+        }
 
 
-void vel_left_con(int rpmA){
-    int dis1 = get_cm_n(u1,5);
-    int dis2 = get_cm_n(u2,5);
-    
-    //速度を指定
-    int robot_angle = ((dis1 - dis2)*5);
-    sendTgtVel(1,rpmA*(-1)+robot_angle);
-    sendTgtVel(2,rpmA+robot_angle);
-    sendTgtVel(3,rpmA+robot_angle);
-    sendTgtVel(4,rpmA*(-1)+robot_angle);
-    //指令値を送信
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
+        void vel_forward(int rpmA) {
 
-void vel_stop(){
-    //速度を指定
-    sendTgtVel(1,0);
-    sendTgtVel(2,0);
-    sendTgtVel(3,0);
-    sendTgtVel(4,0);
-    //指令値を送信
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
+            //速度を指定
+            sendTgtVel(1,rpmA*(-1));
+            sendTgtVel(2,rpmA*(-1));
+            sendTgtVel(3,rpmA);
+            sendTgtVel(4,rpmA);
+            //指令値を送信
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
+            }
+        }
 
-void vel_backward(int rpm){
-    //速度を指定
-    sendTgtVel(1,rpm);
-    sendTgtVel(2,rpm);
-    sendTgtVel(3,rpm*(-1));
-    sendTgtVel(4,rpm*(-1));
-    //指令値を送信
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
+        void vel_forward_con(int rpmA) {
+            int dis1 = get_cm_n(u1,5);
+            int dis2 = get_cm_n(u2,5);
 
-void vel_backward_con(int rpmA){
-    int dis1 = get_cm_n(u1,5);
-    int dis2 = get_cm_n(u2,5);
-    
-    //速度を指定
-    int robot_angle = ((dis1 - dis2)*10);
-    sendTgtVel(1,rpmA+robot_angle);
-    sendTgtVel(2,rpmA+robot_angle);
-    sendTgtVel(3,rpmA*(-1)+robot_angle);
-    sendTgtVel(4,rpmA*(-1)+robot_angle);
-    //指令値を送信
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
+            //速度を指定
+            int robot_angle = ((dis1 - dis2)*10);
+            sendTgtVel(1,rpmA*(-1)+robot_angle);
+            sendTgtVel(2,rpmA*(-1)+robot_angle);
+            sendTgtVel(3,rpmA+robot_angle);
+            sendTgtVel(4,rpmA+robot_angle);
+            //指令値を送信
+            for(int i=1; i<= 4; i++) {
+                sendCtrlEN(i);
+            }
+        }
 
+        void set_ACC(int setACC_val) {
+            sendProAcc(1,setACC_val);
+            sendProAcc(2,setACC_val);
+            sendProAcc(3,setACC_val);
+            sendProAcc(4,setACC_val);
+        }
 
-void vel_forward_con(int rpmA){
-    int dis1 = get_cm_n(u1,5);
-    int dis2 = get_cm_n(u2,5);
-    
-    //速度を指定
-    int robot_angle = ((dis1 - dis2)*10);
-    sendTgtVel(1,rpmA*(-1)+robot_angle);
-    sendTgtVel(2,rpmA*(-1)+robot_angle);
-    sendTgtVel(3,rpmA+robot_angle);
-    sendTgtVel(4,rpmA+robot_angle);
-    //指令値を送信
-    for(int i=1;i<= 4;i++){
-        sendCtrlEN(i);
-    }
-}
- 
-void set_ACC(int setACC_val){
-    sendProAcc(1,setACC_val);
-    sendProAcc(2,setACC_val);
-    sendProAcc(3,setACC_val);
-    sendProAcc(4,setACC_val);
-}
+        void set_DEC(int setDEC_val) {
+            sendProDec(1,setDEC_val);
+            sendProDec(2,setDEC_val);
+            sendProDec(3,setDEC_val);
+            sendProDec(4,setDEC_val);
+        }
 
-void set_DEC(int setDEC_val){
-    sendProDec(1,setDEC_val);
-    sendProDec(2,setDEC_val);
-    sendProDec(3,setDEC_val);
-    sendProDec(4,setDEC_val); 
-}
+        void set_MODE_V() {
+            sendOPModeV(1);
+            sendOPModeV(2);
+            sendOPModeV(3);
+            sendOPModeV(4);
+        }
 
-void set_MODE_V(){
-    sendOPModeV(1);
-    sendOPModeV(2);
-    sendOPModeV(3);
-    sendOPModeV(4);
-}
-
-void set_MODE_T(){
-    sendOPModeT(1);
-    sendOPModeT(2);
-    sendOPModeT(3);
-    sendOPModeT(4);
-}
+        void set_MODE_T() {
+            sendOPModeT(1);
+            sendOPModeT(2);
+            sendOPModeT(3);
+            sendOPModeT(4);
+        }
 
 //0x2F-6060-00-fd-//-//-//
-void sendOPModeT(int nodeID){
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 5;       //Data Length
-    canmsgTx.data[0] = 0x2F;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x60;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canmsgTx.data[4] = 0xFD;//data:fd = "current Mode"
-    /*
-    canmsgTx.data[5] = 0x00;//data:(user value)
-    canmsgTx.data[6] = 0x00;//data:(user value)
-    canmsgTx.data[7] = 0x00;//data:(user value)
-    */
-    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-}
- 
- 
+        void sendOPModeT(int nodeID) {
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 5;       //Data Length
+            canmsgTx.data[0] = 0x2F;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x60;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canmsgTx.data[4] = 0xFD;//data:fd = "current Mode"
+            /*
+            canmsgTx.data[5] = 0x00;//data:(user value)
+            canmsgTx.data[6] = 0x00;//data:(user value)
+            canmsgTx.data[7] = 0x00;//data:(user value)
+            */
+            printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+        }
+
+
 //0x2F-6060-00-03-//-//-//
-void sendOPModeV(int nodeID){
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 5;       //Data Length
-    canmsgTx.data[0] = 0x2F;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x60;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canmsgTx.data[4] = 0x03;//data:0x03 = "Profile Velocity Mode"
-    /*
-    canmsgTx.data[5] = 0x00;//data:(user value)
-    canmsgTx.data[6] = 0x00;//data:(user value)
-    canmsgTx.data[7] = 0x00;//data:(user value)
-    */
-    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-}
- 
+        void sendOPModeV(int nodeID) {
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 5;       //Data Length
+            canmsgTx.data[0] = 0x2F;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x60;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canmsgTx.data[4] = 0x03;//data:0x03 = "Profile Velocity Mode"
+            /*
+            canmsgTx.data[5] = 0x00;//data:(user value)
+            canmsgTx.data[6] = 0x00;//data:(user value)
+            canmsgTx.data[7] = 0x00;//data:(user value)
+            */
+            printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+        }
+
 //0x2B-6040-00-0000-//-//
-void sendCtrlRS(int nodeID){
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 6;       //Data Length
-    canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x40;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canmsgTx.data[4] = 0x80;//data:0x00"80" = "Controlword(Shutdown)"
-    canmsgTx.data[5] = 0x00;//data:0x"00"80
-    /*
-    canmsgTx.data[6] = 0x00;//data:(user value)
-    canmsgTx.data[7] = 0x00;//data:(user value)
-    */
-    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-}
- 
- 
+        void sendCtrlRS(int nodeID) {
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 6;       //Data Length
+            canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x40;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canmsgTx.data[4] = 0x80;//data:0x00"80" = "Controlword(Shutdown)"
+            canmsgTx.data[5] = 0x00;//data:0x"00"80
+            /*
+            canmsgTx.data[6] = 0x00;//data:(user value)
+            canmsgTx.data[7] = 0x00;//data:(user value)
+            */
+            printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+        }
+
+
 //0x2B-6040-00-0006-//-//
-void sendCtrlSD(int nodeID){
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 6;       //Data Length
-    canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x40;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canmsgTx.data[4] = 0x06;//data:0x00"06" = "Controlword(Shutdown)"
-    canmsgTx.data[5] = 0x00;//data:0x"00"06
-    /*
-    canmsgTx.data[6] = 0x00;//data:(user value)
-    canmsgTx.data[7] = 0x00;//data:(user value)
-    */
-    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-}
- 
+        void sendCtrlSD(int nodeID) {
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 6;       //Data Length
+            canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x40;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canmsgTx.data[4] = 0x06;//data:0x00"06" = "Controlword(Shutdown)"
+            canmsgTx.data[5] = 0x00;//data:0x"00"06
+            /*
+            canmsgTx.data[6] = 0x00;//data:(user value)
+            canmsgTx.data[7] = 0x00;//data:(user value)
+            */
+            printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+        }
+
 //0x2B-6040-00-000F-//-//
-void sendCtrlEN(int nodeID){
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 6;       //Data Length
-    canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x40;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canmsgTx.data[4] = 0x0F;//data:0x00"0F" = "Controlword(Enable)"
-    canmsgTx.data[5] = 0x00;//data:0x"00"0F
-    /*
-    canmsgTx.data[6] = 0x00;//data:(user value)
-    canmsgTx.data[7] = 0x00;//data:(user value)
-    */
-    //printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-}
- 
+        void sendCtrlEN(int nodeID) {
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 6;       //Data Length
+            canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x40;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canmsgTx.data[4] = 0x0F;//data:0x00"0F" = "Controlword(Enable)"
+            canmsgTx.data[5] = 0x00;//data:0x"00"0F
+            /*
+            canmsgTx.data[6] = 0x00;//data:(user value)
+            canmsgTx.data[7] = 0x00;//data:(user value)
+            */
+            //printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+        }
+
 //0x2B-6040-00-000B-//-//
-void sendCtrlQS(int nodeID){
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 6;       //Data Length
-    canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x40;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canmsgTx.data[4] = 0x0B;//data:0x00"0B" = "Quick Stop"
-    canmsgTx.data[5] = 0x00;//data:0x"00"0B
-    /*
-    canmsgTx.data[6] = 0x00;//data:(user value)
-    canmsgTx.data[7] = 0x00;//data:(user value)
-    */
-    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-}
- 
+        void sendCtrlQS(int nodeID) {
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 6;       //Data Length
+            canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x40;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canmsgTx.data[4] = 0x0B;//data:0x00"0B" = "Quick Stop"
+            canmsgTx.data[5] = 0x00;//data:0x"00"0B
+            /*
+            canmsgTx.data[6] = 0x00;//data:(user value)
+            canmsgTx.data[7] = 0x00;//data:(user value)
+            */
+            printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+        }
+
 //0x2B-6040-00-010F-//-//
-void sendCtrlHL(int nodeID){
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 6;       //Data Length
-    canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x40;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canmsgTx.data[4] = 0x0F;//data:0x01"0F" = "Halt"
-    canmsgTx.data[5] = 0x01;//data:0x"01"0F
-    /*
-    canmsgTx.data[6] = 0x00;//data:(user value)
-    canmsgTx.data[7] = 0x00;//data:(user value)
-    */
-    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-}
- 
+        void sendCtrlHL(int nodeID) {
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 6;       //Data Length
+            canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x40;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canmsgTx.data[4] = 0x0F;//data:0x01"0F" = "Halt"
+            canmsgTx.data[5] = 0x01;//data:0x"01"0F
+            /*
+            canmsgTx.data[6] = 0x00;//data:(user value)
+            canmsgTx.data[7] = 0x00;//data:(user value)
+            */
+            printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+        }
+
 //0x2B-60FF-00-[user data(4Byte)]
-void sendTgtTrq(int nodeID,int trq){
-    //pc.printf("%dmA0x%08x\r\n",trq,trq);  //回転数送信データの表示
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 6;       //Data Length
-    canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x30;//Index LowByte 71
-    canmsgTx.data[2] = 0x20;//Index HighByte 60
-    canmsgTx.data[3] = 0x00;//sub-Index
-    //下位から1Byteずつdataに格納
-    if(trq<0){
-    trq=0xFFFF+trq+1;
-    }
-    
-    //pc.printf("iii%d\r\n",trq);
-    //canmsgTx.data[7]=((trq>>24)&0xFF);
-    //canmsgTx.data[6]=((trq>>16)&0xFF);
-    
-    canmsgTx.data[5]=((trq>>8)&0xFF);
-    canmsgTx.data[4]=((trq>>0)&0xFF);
-    //printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(2);
-    //send Enable
-    //pc.printf("Send Enable Command\r\n");
-    //sendCtrlEN(nodeID);
-    //wait(0.5);
-}
- 
- 
- 
- 
+        void sendTgtTrq(int nodeID,int trq) {
+            //pc.printf("%dmA0x%08x\r\n",trq,trq);  //回転数送信データの表示
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 6;       //Data Length
+            canmsgTx.data[0] = 0x2B;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x30;//Index LowByte 71
+            canmsgTx.data[2] = 0x20;//Index HighByte 60
+            canmsgTx.data[3] = 0x00;//sub-Index
+            //下位から1Byteずつdataに格納
+            if(trq<0) {
+                trq=0xFFFF+trq+1;
+            }
+
+            //pc.printf("iii%d\r\n",trq);
+            //canmsgTx.data[7]=((trq>>24)&0xFF);
+            //canmsgTx.data[6]=((trq>>16)&0xFF);
+
+            canmsgTx.data[5]=((trq>>8)&0xFF);
+            canmsgTx.data[4]=((trq>>0)&0xFF);
+            //printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(2);
+            //send Enable
+            //pc.printf("Send Enable Command\r\n");
+            //sendCtrlEN(nodeID);
+            //wait(0.5);
+        }
+
+
+
+
 //0x2B-60FF-00-[user data(4Byte)]
-void sendTgtVel(int nodeID,int rpm){
-    //pc.printf("%drpm|0x%08x\r\n",rpm,rpm);  //回転数送信データの表示
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 8;       //Data Length
-    canmsgTx.data[0] = 0x23;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0xFF;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    //下位から1Byteずつdataに格納
-    
-    //pc.printf("%d\r\n",rpm);
-    if(rpm<0){
-    rpm=0xFFFFFFFF+rpm+1;
-    } 
-    canmsgTx.data[7]=((rpm>>24)&0xFF);
-    canmsgTx.data[6]=((rpm>>16)&0xFF);
-    canmsgTx.data[5]=((rpm>>8)&0xFF);
-    canmsgTx.data[4]=((rpm>>0)&0xFF);
-    
-    //printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait_ms(1);
-    
-}
- 
-void readActVel(int nodeID){
-    //値が欲しいobjectのアドレスを送る
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 4;       //Data Length
-    canmsgTx.data[0] = 0x40;//|0Byte:40|
-    canmsgTx.data[1] = 0x6C;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canPort.write(canmsgTx);
-    wait_ms(1);
-}
- 
-void readActPos(int nodeID){
-    //値が欲しいobjectのアドレスを送る
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 4;       //Data Length
-    canmsgTx.data[0] = 0x40;//|0Byte:40|
-    canmsgTx.data[1] = 0x64;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    canPort.write(canmsgTx);
-    wait_ms(1);
-}
- 
+        void sendTgtVel(int nodeID,int rpm) {
+            //pc.printf("%drpm|0x%08x\r\n",rpm,rpm);  //回転数送信データの表示
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 8;       //Data Length
+            canmsgTx.data[0] = 0x23;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0xFF;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            //下位から1Byteずつdataに格納
+
+            //pc.printf("%d\r\n",rpm);
+            if(rpm<0) {
+                rpm=0xFFFFFFFF+rpm+1;
+            }
+            canmsgTx.data[7]=((rpm>>24)&0xFF);
+            canmsgTx.data[6]=((rpm>>16)&0xFF);
+            canmsgTx.data[5]=((rpm>>8)&0xFF);
+            canmsgTx.data[4]=((rpm>>0)&0xFF);
+
+            //printCANTX();          //CAN送信データをPCに表示
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait_ms(1);
+
+        }
+
+        void readActVel(int nodeID) {
+            //値が欲しいobjectのアドレスを送る
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 4;       //Data Length
+            canmsgTx.data[0] = 0x40;//|0Byte:40|
+            canmsgTx.data[1] = 0x6C;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canPort.write(canmsgTx);
+            wait_ms(1);
+        }
+
+        void readActPos(int nodeID) {
+            //値が欲しいobjectのアドレスを送る
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 4;       //Data Length
+            canmsgTx.data[0] = 0x40;//|0Byte:40|
+            canmsgTx.data[1] = 0x64;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            canPort.write(canmsgTx);
+            wait_ms(1);
+        }
+
 //加速度指定
-void sendProAcc(int nodeID,int rpm){
-    if(rpm < 0){
-        rpm += 0xFFFFFFFF;
-        }
+        void sendProAcc(int nodeID,int rpm) {
+            if(rpm < 0) {
+                rpm += 0xFFFFFFFF;
+            }
 //    pc.printf("%drpm|0x%08x\r\n",rpm,rpm);  //回転数送信データの表示
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 8;       //Data Length
-    canmsgTx.data[0] = 0x23;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x83;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    //下位から1Byteずつdataに格納
-    canmsgTx.data[4] = (rpm >> 0) & 0xFF;
-    canmsgTx.data[5] = (rpm >> 8) & 0xFF;
-    canmsgTx.data[6] = (rpm >> 16) & 0xFF;
-    canmsgTx.data[7] = (rpm >> 24) & 0xFF;
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 8;       //Data Length
+            canmsgTx.data[0] = 0x23;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x83;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            //下位から1Byteずつdataに格納
+            canmsgTx.data[4] = (rpm >> 0) & 0xFF;
+            canmsgTx.data[5] = (rpm >> 8) & 0xFF;
+            canmsgTx.data[6] = (rpm >> 16) & 0xFF;
+            canmsgTx.data[7] = (rpm >> 24) & 0xFF;
 //    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait(0.01);
-    //send Enable
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait(0.01);
+            //send Enable
 //    pc.printf("Send Enable Command\r\n");
-    sendCtrlEN(nodeID);
-    wait(0.01);
-}
- 
+            sendCtrlEN(nodeID);
+            wait(0.01);
+        }
+
 //減速度指定
-void sendProDec(int nodeID,int rpm){
-    if(rpm < 0){
-        rpm += 0xFFFFFFFF;
-        }
+        void sendProDec(int nodeID,int rpm) {
+            if(rpm < 0) {
+                rpm += 0xFFFFFFFF;
+            }
 //    pc.printf("%drpm|0x%08x\r\n",rpm,rpm);  //回転数送信データの表示
-    canmsgTx.id = 0x600+nodeID;
-    canmsgTx.len = 8;       //Data Length
-    canmsgTx.data[0] = 0x23;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
-    canmsgTx.data[1] = 0x84;//Index LowByte
-    canmsgTx.data[2] = 0x60;//Index HighByte
-    canmsgTx.data[3] = 0x00;//sub-Index
-    //下位から1Byteずつdataに格納
-    canmsgTx.data[4] = (rpm >> 0) & 0xFF;
-    canmsgTx.data[5] = (rpm >> 8) & 0xFF;
-    canmsgTx.data[6] = (rpm >> 16) & 0xFF;
-    canmsgTx.data[7] = (rpm >> 24) & 0xFF;
+            canmsgTx.id = 0x600+nodeID;
+            canmsgTx.len = 8;       //Data Length
+            canmsgTx.data[0] = 0x23;//|0Byte:40|1Byte:2F|2Byte:2B|4Byte:23|other:22|
+            canmsgTx.data[1] = 0x84;//Index LowByte
+            canmsgTx.data[2] = 0x60;//Index HighByte
+            canmsgTx.data[3] = 0x00;//sub-Index
+            //下位から1Byteずつdataに格納
+            canmsgTx.data[4] = (rpm >> 0) & 0xFF;
+            canmsgTx.data[5] = (rpm >> 8) & 0xFF;
+            canmsgTx.data[6] = (rpm >> 16) & 0xFF;
+            canmsgTx.data[7] = (rpm >> 24) & 0xFF;
 //    printCANTX();          //CAN送信データをPCに表示
-    canPort.write(canmsgTx);//CANでデータ送信
-    wait(0.01);
-    //send Enable
+            canPort.write(canmsgTx);//CANでデータ送信
+            wait(0.01);
+            //send Enable
 //    pc.printf("Send Enable Command\r\n");
-    sendCtrlEN(nodeID);
-    wait(0.01);
-}
- 
- 
+            sendCtrlEN(nodeID);
+            wait(0.01);
+        }
+
+
 //送信データの表示
-void printCANTX(void){
-  //0x canID|Byte0|Byte1|Byte2|Byte3|Byte4|Byte5|Byte6|Byte7|
-    //pc.printf("0x%3x|",canmsgTx.id);
-    for(char i=0;i < canmsgTx.len;i++){
-       //pc.printf("%02x|",canmsgTx.data[i]);
-    }
-    //pc.printf("\r\n");
-}
- 
+        void printCANTX(void) {
+            //0x canID|Byte0|Byte1|Byte2|Byte3|Byte4|Byte5|Byte6|Byte7|
+            //pc.printf("0x%3x|",canmsgTx.id);
+            for(char i=0; i < canmsgTx.len; i++) {
+                //pc.printf("%02x|",canmsgTx.data[i]);
+            }
+            //pc.printf("\r\n");
+        }
+
 //受信データの表示
- 
-void printCANRX(void){
-  //0x canID|Byte0|Byte1|Byte2|Byte3|Byte4|Byte5|Byte6|Byte7|
-    //pc.printf("0x%3x|",canmsgRx.id);
-    for(char i=0;i < canmsgRx.len;i++){
-      //pc.printf("%02x|",canmsgRx.data[i]);
-    }
-    //pc.printf("\r\n");
-}
- 
-void CANdataRX(void){
-    canPort.read(canmsgRx);
-    printCANRX();
-}
- 
-void SerialRX(void){
-    Serialdata = pc.getc();
-    //pc.printf("%c\r\n",Serialdata);
-}
\ No newline at end of file
+
+        void printCANRX(void) {
+            //0x canID|Byte0|Byte1|Byte2|Byte3|Byte4|Byte5|Byte6|Byte7|
+            //pc.printf("0x%3x|",canmsgRx.id);
+            for(char i=0; i < canmsgRx.len; i++) {
+                //pc.printf("%02x|",canmsgRx.data[i]);
+            }
+            //pc.printf("\r\n");
+        }
+
+        void CANdataRX(void) {
+            canPort.read(canmsgRx);
+            printCANRX();
+        }
+
+        void SerialRX(void) {
+            Serialdata = pc.getc();
+            //pc.printf("%c\r\n",Serialdata);
+        }
\ No newline at end of file