VEXcode V5 のカスタム コントローラー コード

コントローラーを使用すると、タスクを完了するためにロボットを簡単に運転および移動させることができます。 ただし、Drive プログラムの使用には制限があり、ロボットのビルドや実行中のタスクによっては、異なる制御が必要になる場合があります。 コントローラーをコーディングすると、コントローラーを最適化してロボットと当面のタスクにさらに適合させることができます。 VEXcode V5 でコントローラーをコーディングするにはいくつかの方法があります。 それぞれに利点と制限があり、望ましい結果に応じて、特定の状況により適した方法もあります。

この記事では、VEXcode V5 でコントローラーをカスタム コーディングするための 3 つの異なるオプションについて説明します。 各方法について、その利点、制限事項、および方法を選択する際の参考となる使用例とともに説明します。 この記事の目的のために、示されているすべてのコード例は Clawbot 用に作成されています。 ただし、同じ概念は、 builds.vex.comにある他の多数のビルドやカスタム ビルドにも適用できます。

オプション 1: デバイス構成でボタンを割り当てる

このオプションは、Speedbot や Clawbot などの標準ビルドを使用していて、すぐに起動して実行したい場合に最適です。

このオプションを使用すると、モーター、ドライブトレイン、またはモーター グループをデバイス構成のコントローラーのボタンに割り当てることができます。 デバイス構成でコントローラーにボタンを割り当てる方法の詳細については、 この記事を参照してください。

プログラミング用の V5 ブロックを示す図。ブロックベースのコーディング チュートリアルの理解を助けるために、さまざまなブロック タイプとその接続を視覚的な形式で示しています。

オプション 1 の概要: デバイス構成でのボタンの割り当て

利点

制限事項

状況例

  • コーディング不要の素早いセットアップ
  • 最も簡単な方法
  • 簡単に調整可能
  • 個々のモーター、標準ドライブトレイン、およびモーターグループをボタンに割り当てることができます
  • ボタンの割り当てはコントローラーのボタンの数に制限されます
  • ドライブトレインは 4 モーターを超えたり、カスタマイズしたりすることはできません (標準ドライブのみがサポートされ、H ドライブ、ホロノミック、またはその他のカスタム ドライブトレインはサポートされません)。
  • Speedbot、Clawbot などの標準ビルド、またはそれらの標準ビルドの単純な変更を操作します。 たとえば、フロントにインテークが取り付けられた Speedbot は、モーター グループによって制御されます。
  • 多くのコーディングを行わずに、どのボタンがロボットのさまざまな動作に対応するかをすばやく操作します

オプション2: 永久ループを使用する

標準ビルドの代わりにカスタム ビルドを使用している場合、またはコントローラーでさらにカスタマイズできるようにしたい場合は、このオプションが適しています。 Forever ループの使用は、コントローラーのカスタム コードを作成するための優れた入門編です。

このオプションは、コントローラーとそれに関連付けられたボタンのすべての条件を永遠ループに配置します。 これにより、特にカスタム ビルド設計の場合に柔軟性が向上しますが、ある程度のコーディング経験も必要になります。 ただし、このオプションを使用する場合の考慮事項の 1 つは、プロジェクトの長さと複雑さです。 追加する条件が増えるほど、コード スタックが長くなる可能性があります。 これは、複数のブロックを順番に実行する必要があることを意味し、ブロックが多数ある場合、プロジェクトの実行が遅くなる可能性があります。 プロジェクトの実行が遅いと、コントローラーのボタンを押してからロボットの動作が表示されるまでに遅れが生じる可能性があります。

以下に示す具体的な例は、カスタム デザイン ロボット (カスタム ドライブトレインを備えたロボットなど) でフォーエバー ループを使用してロボットを駆動し、爪とアームを操作してオブジェクトと対話する方法の 1 つです。

V5 ブロック チュートリアルを示す図。VEX ロボット プログラミングの理解を深めるために、さまざまなブロック タイプとその接続をわかりやすく整理されたレイアウトで示しています。

「オプション 2」VEXcode V5 プロジェクト ファイルをダウンロードします >

オプション 2 コードの説明。

コードピース

説明

V5 ブロック コンポーネントとその機能をチュートリアル形式で示す図。教育目的でさまざまなブロック タイプと接続を紹介しています。

このコード例では Clawbot が使用されました。 コントローラーのボタンを使用してアームを上げ下げすると、ボタンを放すとすぐに重力によりアームが下がります。 アームとクローの両方を「ホールド」に設定すると、コントローラーのボタンを放した後でもアームとクローの両方が所定の位置に残ります。

VEX ナレッジ ベースのブロック チュートリアル セクションで使用されている V5 ブロック コンポーネントとその機能を示す図。教育目的でさまざまなブロック タイプとその接続を紹介しています。 VEX ロボティクスのブロック プログラミングを理解するためのチュートリアルで使用される、ラベル付きのコンポーネントと接続を持つ V5 ブロックを示す図。

このコード例では Clawbot が使用されました。 コントローラーのボタンを使用してアームを上げ下げすると、ボタンを放すとすぐに重力によりアームが下がります。 アームとクローの両方を「ホールド」に設定すると、コントローラーのボタンを放した後でもアームとクローの両方が所定の位置に残ります。

コントローラーのどのボタンが押されているかを継続的に確認するために、Forever ループが使用されます。

[モーター速度の設定] ブロックは、モーター速度を 2 軸および 3 軸に沿った現在のコントローラーの位置に設定するために使用されます。 これは、車をドライブに設定するのと同じです。 それは必ずしも車を動かすわけではなく、ただ設定するだけです。

ジョイスティックの各軸は -100 ~ +100 の値を返し、中心にある場合は値 0 を返します。 これは、ジョイスティックの軸を押すと、-100% ~ 100% に相当することを意味します。 軸が 100 または -100 に近づくほど、モーターの回転が速くなります。

次に[Spin​​]ブロックを使って実際にモーターを動かします。 これは、方向が決まったら車のアクセルを踏み込むのと同じです。 これにより、各モーターを 4 つのコントローラー軸のいずれかで制御できるようになります。

プログラミング チュートリアル用の V5 ブロックを示す図。さまざまなブロック タイプとその接続を示しており、教育の場でコーディングの概念の理解を深めるように設計されています。

このコード例では Clawbot が使用されました。 コントローラーのボタンを使用してアームを上げ下げすると、ボタンを放すとすぐに重力によりアームが下がります。 アームとクローの両方を「ホールド」に設定すると、コントローラーのボタンを放した後でもアームとクローの両方が所定の位置に残ります。

[If then else if then else] ブロックは、コントローラーで押されるか放されるボタンに特定の動作をマッピングするために使用されます。 コードのこのセクションでは、上ボタンまたは下ボタンが押されたかどうかが条件として設定されます。 その場合、腕の上げ下げなどの特定の動作が発生します。 条件のelse部分もあります。どちらのボタンも押されていない場合、アームは動きを停止するように設定されます。

Claw のプロジェクトのコードの次のセクションも同じ説明に従っていることに注意してください。

オプション 2 の要約: 永久ループの使用

利点

制限事項

状況例

  • カスタムビルド、特に 4 つ以上のモーターを備えたドライブトレインに対応可能
  • 1 つのボタンに複数の動作を割り当てることができます
  • コントローラーの異なる軸に動作を割り当てることができます (デバイス構成の左アーケード、右アーケード、分割アーケード、タンク ドライブのオプションとは対照的に)
  • ある程度のコーディングの知識が必要です (条件文、ループ、コントローラーのボタン/ジョイスティックの知識)
  • プロジェクトの実行が遅くなったり、ボタンの応答時間に遅れが生じたりする可能性があります。 すべてのコマンドは 1 つの Forever ループ内に含まれるため、設定された条件とコードの長さによっては、コードの実行が遅くなる可能性があります。
  • カスタム構築ロボット、特に非標準ドライブトレインでのコントローラーの使用
  • 1つのボタンに複数の動作を割り当てたい場合。 たとえば、上ボタンを押すと、クローが開いて前進し、オブジェクトの周囲で閉じることができます。

オプション3: イベントの使用

コントローラーを大幅にカスタマイズしたい場合は、イベントの使用が最適なオプションです。 ボタンを 1 回押すだけで、ボタンを押して爪を開いたり、アームを上げたり、設定された距離だけ前進したりするなど、複数のロボットの動作をトリガーできます。 Forever ループ内でボタンごとに複数の動作をコード化しようとすると、プロジェクトの実行が大幅に遅くなります。イベントを使用すると、これをより効果的に行うことができます。

このオプションでは、イベントを使用してプロジェクト フローを分割します。 これは Forever ループの使用に似ていますが、コードをより整理できるため、ボタンの実行の応答時間が短縮されます。 応答時間が速いということは、コントローラーのボタンを押してからロボットの動作が表示されるまでに遅れがなくなることを意味します。 この例は、前のプロジェクトと同じ動作を示していますが、フォーエバー ループの代わりにイベントを使用して実行されます。

チュートリアルで使用される V5 ブロックのイラスト。さまざまなブロック タイプとその接続を示し、VEX V5 ロボットを使用して構築およびプログラミングする方法を示します。

「オプション 3」VEXcode V5 プロジェクト ファイルをダウンロードします >

オプション 3 コードの説明。

コードピース

説明

ロボット工学チュートリアルで使用されるさまざまな V5 ブロックを示す図。教育目的でその機能と接続を示しています。

このコード例では Clawbot が使用されました。 コントローラーのボタンを使用してアームを上げ下げすると、ボタンを放すとすぐに重力によりアームが下がります。 アームとクローの両方を「ホールド」に設定すると、コントローラーのボタンを放した後でもアームとクローの両方が所定の位置に残ります。

ロボット工学チュートリアルの V5 ブロックを示す図。プログラミング タスク用のさまざまなブロック タイプとそれらの接続を示しています。 VEX ロボティクスのブロック プログラミングを理解するためのチュートリアルで使用される、ラベル付きのコンポーネントと接続を持つ V5 ブロックを示す図。

このコード例では Clawbot が使用されました。 コントローラーのボタンを使用してアームを上げ下げすると、ボタンを放すとすぐに重力によりアームが下がります。 アームとクローの両方を「ホールド」に設定すると、コントローラーのボタンを放した後でもアームとクローの両方が所定の位置に残ります。

{When controller axis} イベント ブロックは、コントローラーの 4 つの軸の 1 つがジョイスティックを使用して変更されたときに特定の動作をトリガーするために使用されます。

[モーター速度の設定] ブロックは、A 軸および D 軸に沿った現在のコントローラーの位置にモーター速度を設定するために使用されます。 これは、車をドライブに設定するのと同じです。 それは必ずしも車を動かすわけではなく、ただ設定するだけです。

ジョイスティックの各軸は -100 ~ +100 の値を返し、中心にある場合は値 0 を返します。 これは、ジョイスティックの軸を押すと、-100% ~ 100% に相当することを意味します。 軸が 100 または -100 に近づくほど、モーターの回転が速くなります。

次に[Spin​​]ブロックを使って実際にモーターを動かします。 これは、方向が決まったら車のアクセルを踏み込むのと同じです。 これにより、各モーターを 4 つのコントローラー軸のいずれかで制御できるようになります。

プログラミング チュートリアルで使用される V5 ブロックを示す図。VEX Robotics システム内のさまざまなブロック タイプとその機能を紹介します。

このコード例では Clawbot が使用されました。 コントローラーのボタンを使用してアームを上げ下げすると、ボタンを放すとすぐに重力によりアームが下がります。 アームとクローの両方を「ホールド」に設定すると、コントローラーのボタンを放した後でもアームとクローの両方が所定の位置に残ります。

{When controller axis} イベント ブロックは、コントローラー上で押されるか放されるボタンに特定の動作をマッピングするために使用されます。 コードのこのセクションでは、上ボタンまたは下ボタンが押されたかどうかが条件として設定されます。 その場合、腕を上げる、下げる、停止するなどの特定の動作が発生します。

Claw のプロジェクトのコードの最後のセクションも同じ説明に従っていることに注意してください。

オプション 3 の概要: イベントの使用

利点

制限事項

状況例

  • カスタムビルド、特に 4 つ以上のモーターを備えたドライブトレインに対応可能
  • 1 つのボタンに複数の動作を割り当てることができます
  • コントローラーの異なる軸に動作を割り当てることができます (デバイス構成の左アーケード、右アーケード、分割アーケード、タンク ドライブのオプションとは対照的に)
  • コードの実行が高速になり、ボタンの応答性が向上します (各条件が個別に呼び出され、単一のコード スタックに埋め込まれないため)
  • オプション (条件、ループ、イベント、およびコントローラーのボタン/ジョイスティックの知識) に関するコーディングの知識が最も必要です。
  • カスタム構築ロボット、特に非標準ドライブトレインでのコントローラーの使用
  • 複数の動作を遅延なく 1 つのボタンに割り当てたい場合。 たとえば、上ボタンを押すと、クローが開いて前進し、オブジェクトの周囲で閉じることができます。

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

Last Updated: