[leJOS] 讓機器人前進指定距離(公分) – 多執行緒

在程式中以一個變數 walk 來指定機器人行走距離, 單位為公分. 程式環境使用 leJOS

本範例重點在於將移動距離根據輪徑(5.6 cm) 轉換為馬達轉動角度, 使用 Motor.B.rotate(角度) 指令. 由於該指令屬於閉區間指令, 所以

Motor.B.rotate(180);
Motor.C.rotate(180);

會讓B馬達轉完180度之後再換C馬達旋轉180度, 機器人無法直走. 所以本範例透過兩個執行緒t1, t2分別執行 Motor.X.rotate指令, 這樣就可以讓機器人順利移動指定角度了

CAVE的 leJOS實驗室: http://lab.cavedu.com/lejos

淡江機器人Java教學網: lejosrobot2012.cavedu.com

===========================================

import lejos.nxt.*;

import lejos.util.Delay;

 

class walk

{

        public static void main(String arg[])

        {

               final double angle;

               double walk=10;

               int speed=360;

               Thread t1,t2;

               Runnable runR,runL;

 

        Button.ESCAPE.addButtonListener(new ButtonListener()

        {

        public void buttonPressed(Button b){System.exit(0);}

        public void buttonReleased(Button b){}

        });

 

        angle=(walk/(5.6d*Math.PI))*360d;

        runR=new Runnable() {

 

        public void run() {

               Motor.B.rotate((int)angle);

               }

        };

        runL=new Runnable() {

 

        public void run() {

               Motor.C.rotate((int)angle);

                }

        };

        t1=new Thread(runR);

        t2=new Thread(runL);

        t1.start();

        t2.start();

   }//main

}//class

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *