.. include:: /index.rst
:start-after: start_hello_message
:end-before: end_hello_message
.. _rvr_move:
レッスン3:GalaxyRVRを遠隔操作しよう
============================================
コントロールを握る準備はできましたか?このレッスンでは、あなた自身のGalaxyRVRマーズローバーのミッションコマンダーになります。
コーディングの知識を実際の動作に変え、シミュレートされた火星の地形をローバーにナビゲートさせるプログラムを作成します。あなたのコマンドがローバーを動かし、教室で思い通りに操縦する様子を見守りましょう。
ここからあなたの火星ミッションが真に始まります。さあ、運転を始めましょう!
.. raw:: html
学習目標
-----------------------
* 必要なArduinoコードをアップロードして、Mammoth CodingアプリとGalaxyRVRの間の通信をセットアップする
* アプリの矢印キーインターフェースを使用してローバーの動きをマスターする
* 前進、後退、左折、右折の4つの基本動作をプログラムして実行する
.. _app_connect:
アプリをGalaxyRVRに接続する
-------------------------------------------
.. note::
* ファームウェアを上書きしてしまい、通信を復元する必要がある場合は、:ref:`update_r3_firmware` に従ってください。
.. raw:: html
#. GalaxyRVRを初めて使用する前に、付属のType-C USBケーブルでバッテリーを完全に充電してください。充電後、電源を入れます。
.. raw:: html
#. ESP32 CAMを起動するには、モードを **Run** に切り替え、R3ボードの **Reset** ボタンを押します。下部のライトストリップが点滅し始め、起動が成功したことを示します。
.. note::
* 下部のライトストリップが **緑色以外の色で点滅している** 場合、GalaxyRVRのファームウェアを更新する必要があります。:ref:`update_firmware` を参照してください。
.. raw:: html
#. モバイルデバイスをGalaxyRVRのWi-Fiネットワークに接続します。
* ネットワーク名(SSID)は ``GalaxyRVR``、パスワードは ``12345678`` です。
* **「インターネットなし」** の警告が表示された場合は、** 「接続したままにする」** を選択してください。
.. image:: ../img/camera_lan.png
:width: 500
#. モバイルデバイスでアプリケーションを開き、接続プロセスを開始します。
.. image:: img/connet_app_04.png
#. アプリ内でGalaxyRVR拡張機能を選択してロードします。
.. image:: img/connet_app_05.png
#. アプリが自動的に利用可能なGalaxyRVRデバイスをスキャンして検索します。
.. image:: img/connet_app_06.png
#. リストからGalaxyRVRを選択して接続します。
.. image:: img/reconnect_2.png
.. note::
接続状態はGalaxyRVRのLEDライトで示されます:
- **紫色の点滅** :接続を検索中
- **消灯** :接続成功、準備完了
アプリの再接続
-------------------------------------
デバイスがGalaxyRVRから切断されると、インターフェースにこのポップアップウィンドウが表示されます。再接続をクリックします。
.. image:: img/reconnect_0.png
ポップアップウィンドウを閉じた場合は、GalaxyRVRカテゴリのこのボタンをクリックして再接続することもできます。
.. image:: img/reconnect_1.png
GalaxyRVRを見つけて、接続をクリックします。
.. image:: img/reconnect_2.png
アプリでGalaxyRVRを制御する
-----------------------------------------
1. コーディングインターフェースで、ローバー制御ブロック専用のGalaxyRVRカテゴリを見つけます。
.. image:: img/3_rvr_catego.png
2. 通常は緑色の旗を使用してプログラムを開始しますが、アクションをトリガーする他の方法もあります。イベントカテゴリにある ``上向き矢印キーが押されたとき`` ブロックを見つけます。これは特定のキーを押したときにコードを実行します。
.. image:: img/3_rvr_when_arrow.png
3. 矢印の方向(上、下、左、右)ごとに1つずつ、4つのイベントブロックを作成します。これがローバーの制御システムの基礎となります。
.. image:: img/3_rvr_4_arrow.png
:width: 800
:align: center
.. note:: もっとコーディングスペースが必要ですか?緑色の旗の下にある目のアイコンをクリックすると、ステージエリアを一時的に非表示にできます。
4. 次に、各イベントブロックに対応する移動コマンドを追加します。
- 上矢印 → 前進
- 下矢印 → 後退
- 左矢印 → 左折
- 右矢印 → 右折
.. image:: img/3_rvr_4_dir.png
:width: 800
:align: center
5. ステージ拡張ボタンをクリックして、フルコントロールモードに入ります。
.. image:: img/3_rvr_stage.png
6. 拡大されたステージと仮想方向キーが表示されます。これらのキーを押して、GalaxyRVRの動きをリアルタイムで直接制御しましょう!
.. image:: img/3_rvr_stage2.png
移動制御ブロック
-----------------------------
* **基本方向制御**
GalaxyRVRの移動方向を制御します。ドロップダウンメニューから前進、後退、左折、右折を選択します。
.. image:: img/block/move_forward.png
* **速度設定**
GalaxyRVRの移動速度を設定します。注意:このブロックは速度を設定するだけで、それ自体では移動を開始しません。
.. image:: img/block/move_set_speed.png
* **時間指定移動**
選択した方向に指定した時間だけGalaxyRVRを移動させます。以下のことができます:
* ドロップダウンから方向(前進/後退/左/右)を選択
* 時間の値を変更して移動時間を設定
.. image:: img/block/move_forward_1s.png
* **速度制御移動**
特定の速度パーセントでGalaxyRVRを移動させます。以下のことができます:
* ドロップダウンから移動方向を選択
* 速度パーセント(0~100%)を調整
.. image:: img/block/move_forward_80.png
* **精密移動制御**
速度と時間の制御を組み合わせて正確な移動を実現します。以下のことができます:
* 移動方向を設定
* 速度パーセントを調整
* 移動時間を設定
.. image:: img/block/move_forward_80_1s.png
* **高度なホイール制御**
各ホイールを個別に制御して複雑な操作を実現します。以下のことができます:
* 左ホイールの速度を個別に設定
* 右ホイールの速度を個別に設定
* 移動時間を制御
.. image:: img/block/move_lr_sp_1s.png
* **緊急停止**
GalaxyRVRのすべての動きを即座に停止します。
.. image:: img/block/move_stop.png