VEX IQ スマートモーターによるコーディング

VEX IQ スマート モーターには、VEXcode IQ でコーディングするときに使用する多くの機能があります。これは、アーム、爪、インテークだけでなく、VEX IQ を使用して作成されたドライブトレインやその他のメカニズムをコーディングするときに便利です。モーターのコーディング方法を理解すると、プロジェクトの停止やモーターが意図したとおりに動作しないなどの問題を軽減するのに役立ちます。

モーターエンコーダ

VEX IQ スマート モーターは、ほとんどのモーターと同様に、電気エネルギーを機械エネルギーに変換するだけでなく、ほとんどのモーターにはない「スマート」な機能も備えています。その主な機能の 1 つは直交エンコーダーです。このエンコーダは、モーターシャフトの速度や位置を追跡するためにモーターの内部に取り付けられています。

VEX IQ スマート モーターのエンコーダーからのレポートにより、次のことがわかります。

  • モーターの回転方向(正転・逆転または開閉)
  • モーターの位置とモーターの回転量と位置 (回転数または度)
  • モーターの回転速度 (経時的なエンコーダーの位置に基づく)

エンコーダはモーターの状態を報告するため、それらを舞台裏の計算に使用して、VEXcode IQ 内でモーションおよびセンシング コマンドの多くを機能させることができます。

個々のモーターのコーディング

VEXcode IQ で個々のスマート モーターのコーディングを開始する前に、モーターを構成する必要があります。個別のモーターは、インテーク、アーム、クローなどの追加機構に頻繁に使用されます。ただし、すべての情報は個々のモーターを使用する他のメカニズムにも当てはまります。

接続されているデバイスのリストが表示される VEXcode IQ デバイス メニュー。スマート モーターが強調表示され、選択後に構成できることが示されます。

この記事 の手順に従って、VEXcode IQ で個々のモーターを構成します。

単一のモーターを構成すると、そのモーターを制御するコマンドがツールボックスに表示されます。待機コマンドと非待機コマンドというさまざまな種類のコマンドがあることがわかります。

待機中のコマンドと待機していないコマンド

ここの画像はすべてブロックを示していることに注意してください。これらのプロジェクトはすべて Python または C++ で再構築でき、ブロックと同じ機能が含まれています。

待機コマンドを使用して、クローモーター、ロボット、アームモーターを順番に動かす VEXcode IQ ブロック プロジェクト。このプロジェクトでは、開始すると、ClawMotor を 90 度回転させて閉じます。次に、200 mm 後進させてから、ArmMotor を 180 度の位置まで回転させます。

コマンドを待機すると、動作が完了するまでプロジェクトの続行がブロックされます。これには、[Spin​​ for] や [Spin​​ to Position] などのコマンドが含まれます。

ここに示すプロジェクトは Clawbot (2 モーター) テンプレートを使用しており、すべてのコマンドが待機しています。したがって、直列に、クローモーターが 90 度閉じ、ロボットが逆方向に駆動し、その後アームが回転して 180 度の位置に達します。

非待機コマンドを使用して吸気モーターを正確に 2 秒間回転させる VEXcode IQ ブロック プロジェクト。このプロジェクトでは、開始時に IntakeMotor を回転させ、2 秒待ってから IntakeMotor を停止します。

対照的に、待機しないコマンドもあります。非待機コマンドは、その動作を無期限に、または別の動作に変更するよう指示されるまで実行します。[スピン]などのコマンドが含まれます。

ここに示されているプロジェクトでは、インテークが追加された BaseBot を使用しています。ここで吸気モーターが回転し始めます。 [Wait] コマンドは待機コマンドであるため、吸気口は 2 秒が経過するまで回転し続け、その後プロジェクト内の次のコマンドである [Stop] コマンドに移動します。その後、モーターの回転が停止します。

モーターのタイムアウト

モーターをアームまたは爪の一部としてコーディングする場合は、待機ブロックと非待機ブロックの違いと、それらがロボットの動きにどのような影響を与えるかを覚えておくことが重要です。モーターのタイムアウトを使用すると、モーターが目的の目標位置に到達するまでの時間制限を設定できます。時間が経過してもその位置に到達していない場合、モーターは回転を停止し、プロジェクトは次のコマンドに進みます。

VEXcode IQ ブロック プロジェクトでは、モーター タイムアウト ブロックを使用して、ロボットを移動する前にクロー モーターを 90 度回転させて閉じるか、2 秒が経過するまで回転させます。このプロジェクトでは、開始時に、ClawMotor のタイムアウトを 2 秒に設定し、ClawMotor を 90 度回転させて閉じます。最後に200 mm後進させます。

この例では、モーターのタイムアウトは 2 秒に設定されています。爪が 2 秒以内に 90 度に近づかない場合、モーターは 2 秒のマークで回転を停止し、次のコマンドに移動して前進します。

デバイス メニューからモーター センサー ダッシュボードを開くと、Brain 画面が表示されます。モーターのコマンド、速度、位置、電流、モーターのスマート ポートなどの情報が表示されます。

モーターをどのくらい移動すればよいかわからない場合は、センサー ダッシュボードを使用してください。ダッシュボードにはモーターの位置が度数と回転数で表示されるため、モーターを動かすと (爪を開いたり閉じたりするなど)、数値が変化します。このテストを使用して、爪を閉じる、腕を上げる、吸気口を回転させるなどに必要な角度または回転を決定します。

センサー ダッシュボードの使用方法については、これらの記事を参照してください。

スマートモーターをドライブトレインの一部としてコーディング

VEXcode IQ でドライブトレインのコーディングを開始する前に、使用するモーターを含むドライブトレインを構成する必要があります。モーターはドライブトレイン内で構成されており、[Drive] や [Drive for] などの同じコマンドで確実に制御されます。

待機中のコマンドと非待機中のコマンド

ドライブトレインをコーディングする場合、ロボットの動きを制御するために待機コマンドと非待機コマンドを使用できます。

待機コマンドを使用してロボットを前進させ、次に右に曲がる VEXcode IQ ブロック プロジェクト。このプロジェクトでは、開始したら 200 mm 前進し、次に 90 度右に曲がります。

コマンドを待機すると、動作が完了するまでプロジェクトの続行がブロックされます。これらには、[方向を向いて]、[方向を向いて]、[方向を向いて] などのコマンドが含まれます。

ここに示すプロジェクトは Clawbot (2 モーター) テンプレートを使用しており、すべてのコマンドが待機しています。したがって、一連の動作では、ロボットはドライブトレインを使用して 200 ミリメートル前進し、その後すべて右折します。

VEXcode IQ ブロック プロジェクトでは、待機なしのコマンドを使用して、バンパーが押されるまでロボットを前進させ、その後右に旋回させます。このプロジェクトでは、開始したら前進し、バンパー 3 が押されるまで待機してから、右に 90 度回転します。

対照的に、待機しないコマンドもあります。非待機コマンドは、その動作を無期限に、または別の動作に変更するよう指示されるまで実行します。[ドライブ]などのコマンドが含まれます。

ここに示すプロジェクトでは BaseBot を使用します。ここでは、ロボットはバンパー スイッチが押されるまで無限に前進します。その後、プロジェクトは次のコマンドに移り、ロボットは運転を停止して右に 90 度回転します。

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: