原先是lejos.robotics.navigation.TachoPilot 但已經找不到該類別。
lejos.robotics.navigation. LegacyPilot ; //有一段說明
The LegacyPilot class is a renamed version the TachoPilot class in the 0.85 release
目前仍可使用但不建議,因為已經快停用了(如下圖提示deprecated)。
當NXT設定左右雙輪行走模式總會發現NXT走一直線時總是會越走越偏(不是偏左就是偏右),因為我們在下達指令時都只針對單一馬達,因此就算馬達電力、角度指令完全相同也會發現NXT越走越偏。
這是因為我們沒有隨時隨地收集2顆馬達供電或是轉速資料並分析後讓NXT做出供電或是轉速修正,實際上這是個大工程但也是必要的資訊分析。
Lejos 或是 NXC 都有這類已經開發好的模組類別讓我們使用,這次就是要紀錄lejos裡面的 robotics類別。
import lejos.robotics.navigation.DifferentialPilot;
1.TachoPilot(float 輪子直徑,float 兩輪距離,Motor.A 左馬達,Motor.B 右馬達);
2.TachoPilot(float , float , Motoor.A , Motor.B , true/false 是否反向);
3.TachoPilot(float 左輪直徑 , float 右輪直徑 , float 兩輪距離 , Motoor.A , Motor.B , true/false 是否反向);
Example
TachoPilot pilot=new TachoPilot(60f , 140f , Motor.A , Motor.B);
TachoPilot常用方法
forward()
backward()
stop()
setSpeed(); //同時設定移動速度與轉彎速度
setMoveSpeed(); //只設定移動時的速度
setTurnSpeend(); //只設定轉彎時的速度
以上速度單位都是(度/秒)
//------------------------
getSpeed();
getMoveSpeed();
getTurnSpeed()
//--------------------------
travel(); //直線行走到特定距離
travel(100f) ; //前進
travel(-100f); //後退
rotate(); //原地迴轉某一角度
//----------------------------------------
轉彎率:
steer(float 轉彎率); //參數: -200 ~ 200
streer(200f); //原地逆時針選轉
streer(-200f); //原地順時針選轉
streer(100f); //左輪停止,右輪前進
streer(-100f); //右輪停止,左輪前進
//----------------------------
轉彎率+角度
streer(float 轉彎率,float 角度); //轉彎到設定角度時停止
streer(0,90f); //左右兩輪等速馬達轉到特定角度,所以直線前進
streer(25f,90f); //左輪速度為外(右)輪的75%,左轉前進
streer(25f,-90f); //左輪速度為外(右)輪的75%,左轉後退
streer(100f,90f); //左輪停止,外(右)輪轉動,左轉前進
streer(-100f,90f); //左輪停止,外(右)輪轉動,右轉前進
streer(200f,90f); //車子原地逆時針旋轉
streer(-200f,90f); //車子原地順時針旋轉
//--------------------------------
streer(float 轉彎率,float 度,boolean 是否立即回傳);
//-----------------------------
isMoving(); //檢查是否正在移動
reset(); /重設左右馬達角度為 0
//---------------------------------------
forward()
backward()
stop()
isMoving(); //true/false是否在運轉
setSpeed(); //同時設定移動速度與轉彎速度
setMoveSpeed(); //只設定移動時的速度
setTurnSpeend(); //只設定轉彎時的速度
reset(); //將兩輪角度值重設為0
getSpeed()
getMoveSpeed()
getTurnSpeed()
robot.travel(100f); //直線前進或後退指定距離
robot.rotate(90f); //原地旋轉角度
robot.steer(); //轉彎率
robot.steer(0); //直線前進
robot.steer(25f); //左輪出力25%轉動、右輪出力75%轉動=向左轉
robot.steer(-25f); //右輪輪出力25%轉動、左輪出力75%轉動=向右轉
robot.steer(200f); //原地逆時針旋轉
robot.steer(-200f); //原地順時針旋轉
robot.steer(100f); //左輪停止右輪轉動=向左轉
robot.steer(-100f); //右輪停止左輪轉動=向右轉
robot.steer(25f,90f); //左輪出力25%轉動、右輪出力75%轉動=向左轉90度
robot.steer(25f,-90f); //左輪出力25%轉動、右輪出力75%轉動=向左(後)轉90度
robot.steer(100f,90f); //左輪停止轉動、右輪出力100%轉動=向左轉90度
robot.steer(-100f,90f); //右輪停止轉動、左輪出力100%轉動=向右轉90度
robot.steer(200f,90f); //原地逆時針旋轉90度
robot.steer(-200f,90f); //原地順時針旋轉90度
robot.steer(200f,90f,true); //原地逆時針旋轉90度並即刻回傳資料,如果false就是等轉完才回傳資料
沒有留言:
張貼留言