パワートレイン#
導入#
drivetrain クラスは、ロボットの走行と旋回を制御します。ドライブトレインは、ロボットを動かすために連携して動作するモーターと車輪で構成されています。
drivetrain 、方位ベースまたは回転ベースの旋回に 慣性センサ、ジャイロセンサ、または GPS センサ を使用しません。前進または後退、左または右への旋回は可能ですが、特定の方位または回転方向への旋回はできません。方位ベースおよび回転ベースの旋回には、smartdrive クラスを使用します。
派生クラス#
drivetrain クラスは、以下の派生クラスの基底クラスとして機能します。
smartdrive- このクラスは、慣性センサー、GPSセンサー、またはジャイロセンサーのサポートを追加し、方位ベースおよび回転ベースの旋回を可能にします。
クラスコンストラクタ#
1 - 左側 (
&l) と右側 (&r) の既存のmotor_groupオブジェクトを使用してドライブトレインを作成します。drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - 左側 (
&l) と右側 (&r) の既存のmotorオブジェクトを使用してドライブトレインを作成します。drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
クラスデストラクタ#
drivetrain オブジェクトを破棄し、関連するリソースを解放します。
virtual ~drivetrain();
パラメータ#
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
左右のモーターまたはモーターグループ。両方のパラメータは同じタイプを使用する必要があります。つまり、2つの |
|
|
駆動輪の円周。デフォルト値は |
|
|
左右の車輪間の距離。デフォルト値は |
|
|
前輪と後輪の間の距離。デフォルト値は |
|
|
The unit for |
|
|
ギアを使用する場合に、駆動距離を調整するために使用されるギア比。デフォルト値は |
例#
// Create the left and right motor objects
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor object
rightMotor, // right motor object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
メンバーの機能#
drivetrain クラスには、以下のメンバ関数が含まれます。
操作 - ロボットを移動および旋回させる。
drive- ロボットを永久に前進または後退させます。driveFor- ロボットを特定の距離だけ前進または後退させます。turn- ロボットを永久に左または右に回転させます。turnFor- ロボットを特定の角度だけ左または右に回転させます。stop- ロボットの動きを停止します。
設定 - 駆動系設定を調整します。
setDriveVelocity- ロボットに走行速度を指示します。setTurnVelocity- ロボットに旋回速度を指示します。setStopping- ロボットがどのように停止するかを指定します: ブレーキ、惰性走行、または保持。setTimeout- ロボットが動作を完了しようとする秒数を設定します。
値 - 移動状況を確認してください。
isDone- ロボットの移動が完了したかどうかをブール値として返します。isMoving- ロボットが移動しているかどうかをブール値として返します。velocity- ロボットの走行速度を返します。current- ドライブトレインが使用している電流の量を返します。power- ドライブトレインがエネルギーをどれだけ速く消費しているかを返します。torque- ドライブトレインが使用しているトルクの量を返します。efficiency- ドライブトレインがどれだけ効率的に電力を使用しているかを返します。temperature- ドライブトレインの温度を返します。voltage- ドライブトレインに供給される電気電圧を返します。
ドライブトレイン drivetrain メンバ関数を呼び出す前に、以下に示すように drivetrain オブジェクトを作成する必要があります。
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor objects
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor object
rightMotor, // right motor object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
行動#
ドライブ#
ドライブdrive ロボットを永久に前進または後退させます。ロボットは、旋回や停止などの別の動作が与えられるまで動き続けます。RPMまたはDPSの場合、制限は駆動系のギア比によって変わります。
1 - Drives using the currently configured drive velocity.
void drive( directionType dir );
Parameters2 - 指定された速度で走行します。
void drive( directionType dir, double velocity, velocityUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
ロボットの移動方向: |
|
|
速度は、velocityUnits::pct が |
|
|
速度の単位: |
この関数は値を返しません。
Notesdriveは待機しません。プロジェクトは呼び出し後すぐに次のコード行の実行を続行します。駆動系は、
stopが呼び出されるか、別の駆動系移動関数 (driveForやturnなど) が実行されるまで動き続けます。isDoneやisMovingなどの関数は、driveには適用できません。なぜなら、6 drive 7はターゲットベースの移動を使用しないからです(distanceパラメータがありません)。
// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
ドライブフォー#
driveFor 、ロボットを特定の距離だけ前進または後退させます。デフォルトでは、ロボットの移動が完了するまでプロジェクトは待機し、その後次のコードが実行されます。RPMまたはDPSの場合、制限値は駆動系のギア比によって変更されます。
1 - Drives in the specified direction for a distance using the currently configured drive velocity.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Drives in a direction dependent on the distance using the currently configured drive velocity.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - 指定された速度で距離に応じて方向に移動します。
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - 指定された方向に指定された距離を、指定された速度で走行します。
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
ロボットの移動方向: |
|
|
ロボットが走行する距離。 |
|
|
距離の単位: |
|
|
速度は、velocityUnits::pct が |
|
|
速度の単位: |
|
|
|
ロボットが目標距離に到達したかどうかをブール値で返します。
true- ロボットが目標距離に到達しました。false- ロボットが動作を完了しなかったか、falsewaitForCompletionに設定されているため、動作が完了する前に関数が戻りました。
driveForが進行中に別の駆動系動作機能 (driveやturnForなど) を実行すると、現在の動作が中断されます。driveForはターゲットベース (distanceを使用) であるため、isDoneやisMovingなどの関数はdriveForで動作します。
// Drive 200 mm, then back 200 mm
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
振り向く#
turn ロボットを左右に永久に回転させます。ロボットは、走行や停止などの別の動作が与えられるまで回転し続けます。RPMまたはDPSの場合、制限は駆動系のギア比によって変わります。
1 - Turns using the currently configured turn velocity.
void turn( turnType dir );
Parameters2 - 指定された速度で旋回します。
void turn( turnType dir, double velocity, velocityUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
ロボットが回転する方向: |
|
|
The velocity to turn with from 0% to 100% when using |
|
|
速度の単位: |
turnは待機なしです。プロジェクトは呼び出し後すぐに次のコード行の実行を続行します。駆動系は、
stopが呼び出されるか、別の駆動系移動関数 (turnForやdriveなど) が実行されるまで回転し続けます。isDoneやisMovingなどの関数は、turnには適用できません。なぜなら、6 turn 7はターゲットベースの移動を使用しないからです(angleパラメータがありません)。
// Turn right, then left, then stop
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
ターンフォー#
turnFor の場合、ロボットは指定された角度だけ左右に回転します。回転角度はロボットの現在位置を基準としています。デフォルトでは、ロボットの回転が完了するまで次のコード行は実行されません。RPM または DPS の場合、制限値は駆動系のギア比によって変更されます。
1 - Turns for the specified angle using the currently configured turn velocity.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Turns in the specified direction for an angle using the currently configured turn velocity.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - 指定された角度で指定された速度で旋回します。
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - 指定された速度で指定された方向に角度だけ回転します。
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
ロボットが回転する方向: |
|
|
ロボットが回転する角度。 |
|
|
回転単位: |
|
|
The velocity to turn with from 0% to 100% when using |
|
|
速度の単位: |
|
|
|
ロボットが目標角度に到達したかどうかをブール値で返します。
true- ロボットが目標角度に到達しました。false- ロボットが旋回を完了しなかったか、falsewaitForCompletionに設定されたため、旋回が完了する前に関数が戻りました。
turnForが進行中に別の駆動系動作機能 (turnやdriveなど) を実行すると、現在の動作が中断されます。turnForはターゲットベース (angleパラメータを使用) なので、isDoneやisMovingなどの関数はturnForで動作します。
// Turn right then left
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
停止#
stop ロボットの動作を停止します。停止モードが指定されている場合、この関数呼び出しにおけるロボットの停止方法を制御します。
1 - 現在設定されている 停止モード を使用してドライブトレインを停止します。
void stop();
Parameters2 - 指定されたブレーキモードを使用して駆動系を停止します。
void stop( brakeType mode );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
ロボットの停止方法:
|
この関数は値を返しません。
Examples// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
変異誘発者#
setDriveVelocity#
setDriveVelocity ロボットの走行速度を指定します。パーセンテージが高いほどロボットは速く走行し、低いほど遅く走行します。RPM の制限値は、駆動系のギア比によって変化します。
すべてのプロジェクトは、ロボットがデフォルトで50%の速度で走行するところから始まります。
注: 速度を速くするとロボットの走行速度は速くなりますが、精度が低下する可能性があります。速度を遅くするとロボットの走行速度は遅くなりますが、精度は向上する可能性があります。
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
|
|
|
速度の単位: |
この関数は値を返しません。
Notes Examples// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
旋回速度を設定#
setTurnVelocity は、ロボットの旋回速度を指定します。パーセンテージが高いほどロボットは速く旋回し、低いほど遅く旋回します。
すべてのプロジェクトは、ロボットがデフォルトで50%の速度で旋回するところから始まります。
注: 速度が速いほどロボットの旋回速度は速くなりますが、精度が低下する可能性があります。速度が遅いほどロボットの旋回速度は遅くなりますが、精度は向上する可能性があります。
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
回転速度は、 |
|
|
速度の単位: |
この関数は値を返しません。
Notes Examples// Try default, slow, then fast
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(20, percent);
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(100, percent);
myDrivetrain.turnFor(right, 360, degrees);
停止設定#
setStopping は、ロボットがどのように停止するかを設定します。ブレーキ、惰性走行、または停止のいずれかです。
void setStopping(
brakeType mode );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
ロボットの停止方法:
|
この関数は値を返しません。
Notes停止モードは、関数呼び出しで特定の停止モードが指定されていない限り、後続のすべての
stop呼び出しに適用されます。
setTimeout#
setTimeout は、ロボットが動作を完了するまでの試行時間を秒単位で設定します。ロボットがこの時間内に動作を完了できない場合、試行を停止して次のコード行に進みます。これにより、ロボットが動作中に停止してしまうのを防ぎます。
void setTimeout(
int32_t time,
timeUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
ロボットが動作を完了しようと試みる時間。正の整数で指定してください。 |
|
|
時間の単位: |
この関数は値を返しません。
Notes Examples// Start turning if driving takes too long
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
ゲッター#
完了しました#
isDoneがisDone は、ロボットの移動が完了したかどうかをブール値で返します。1の場合は、ロボットの移動に基づいて他の動作のタイミングを制御するために使用できます。
bool isDone( void );
この関数は引数を受け付けません。
Return Valuestrue- ロボットの移動が完了しました。false- ロボットはまだ動いています。
移動中#
isMoving は、ロボットが移動中かどうかをブール値で返します。これは、ロボットの動きに基づいて他の動作のタイミングを制御するために使用できます。
virtual bool isMoving( void );
この関数は引数を受け付けません。
Return Valuestrue- ロボットが動いています。false- ロボットが動いていません。
速度#
velocity ロボットの走行速度を返します。
正の値はロボットが前進していることを意味します。負の値はロボットが後退していることを意味します。
Available Functionsdouble velocity(
velocityUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
速度の単位: |
選択された単位で、駆動系の速度を double 倍精度浮動小数点数として返します。
// Show velocity before and during motion
Brain.Screen.print("Resting: %f", myDrivetrain.velocity(percent));
myDrivetrain.drive(forward, 100, velocityUnits::pct);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("Moving: %f", myDrivetrain.velocity(percent));
myDrivetrain.stop();
現在#
current 駆動系が使用している電流の量を返します。電流とは、駆動系を流れる電気の量です。単位によっては、アンペア (A) またはパーセントで返されます。
電流値が高いということは、駆動系がより多くの電流を使用していることを意味します。これは、ロボットが物体に押し付けられているときや、動けなくなったときに動かそうとしているときに発生する可能性があります。
これは、動作中に駆動系に負荷がかかっていないかを確認するために使用できます。電流値が高い状態が続くと、駆動系が過熱したり、電力効率が低下したりする可能性があります。
Available Functions1 - ドライブトレインの電流値をアンペア単位で返します。
double current( currentUnits units = currentUnits::amp );
Parameters2 - ドライブトレインの電流を最大値に対する割合として返します。
double current( percentUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
入力電流の単位: |
|
|
電流を返す単位: |
選択された単位で、駆動系電流を double 倍数として返します。
力#
power ドライブトレインが使用している電力をワット単位で返します。パワーは、ドライブトレインがエネルギーを消費する速度を示します。
出力値が高いほど、駆動系がエネルギーをより速く消費していることを意味します。これは、ロボットが物体に押し付けられているときや、動けなくなったときに動こうとしているときに起こり得ます。
これは、動作を比較したり、駆動系に負荷がかかっていないかを確認したりするために使用できます。出力が高い状態が続くと、駆動系が過熱したり、エネルギー効率が低下したりする可能性があります。
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
電力単位: |
駆動系出力をワット単位で double 倍数として返します。
トルク#
トルクとは、車輪が回転している間に、駆動系がどれだけの力で押したり引いたりできるかを示す指標です。
torque 、駆動系が使用しているトルクの値をニュートンメートル (Nm) またはインチポンド (InLb) 単位で返します。
トルク値が高いということは、駆動系がより強く押したり引いたりしていることを意味します。これは、ロボットが物体に押し付けられているときや、動けなくなったときに動かそうとしているときに起こります。
これは、駆動系に負荷がかかっているかどうかを確認したり、さまざまな動作に必要な推力を比較したりするために使用できます。
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
トルクを返す単位: |
選択された単位で、駆動系のトルクを double 倍数として返します。
効率#
効率efficiency 、駆動系がどれだけ効率的に電力を使用しているかを、0%から100%までのパーセンテージで返します。
効率とは、駆動系の動力のうち、どれだけが動作に使われているかを示す指標です。効率の値が高いほど、駆動系の動力の多くが動作に使われていることを意味します。効率の値が低いのは、ロボットが動けなくなったり、物体に押し付けられたりして、駆動系が負荷がかかっているにもかかわらず、あまり動いていない場合です。
これは、動作を比較したり、駆動系が動力を動作に使う代わりに無駄に消費していないかを確認したりするために使用できます。
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
効率を返す単位: |
選択された単位で、駆動系の効率を double 倍数として返します。
温度#
temperature 、駆動系の平均温度を 0% から 100% までのパーセンテージで返します。
温度は、駆動系モーターの温度を示します。温度が高いほど、モーターは動作中に温度が上昇していることを意味します。モーターは、最高の性能を維持するために、55℃以下に保つ必要があります。
モーターが過熱すると、保護のために最大電流を下げます。70℃に達すると、モーターは冷却されるまで動作を停止します。
これは、繰り返し動作時、長時間の走行時、または物体に押し付けられている時などに、駆動系が過熱していないかどうかを確認するために使用できます。
Available Functionsdouble temperature(
percentUnits units );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
戻り温度の単位: |
選択された単位で、ドライブトレインの平均温度を double 倍精度浮動小数点数として返します。
戻り値が
50%の場合、平均モーター温度は約45°C(113°F) であることを示します。駆動系の一般的な動作温度範囲は、約
20°C(68°F) から70°C(158°F) です。
電圧#
voltage 、駆動系に供給される電気電圧を戻します。
電圧とは、駆動系モーターに供給される電気的な圧力のことです。この電圧は、電流値や電力値と併せて用いることで、駆動系がどのように電気エネルギーを使用しているかを把握することができます。
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
パラメータ |
タイプ |
説明 |
|---|---|---|
|
|
電圧を返す単位: |
選択された単位で、駆動系電圧を double 倍数として返します。