このモジュールでは、トレーニングされたモデルを TurtleBot 3 Waffle Pi にデプロイする方法を学び、トレーニングされたモデルが実際の世界で機能することを確認します。このモジュールはオプションで、以下のステップは TurtleBot 3 Waffle Pi で行われます。お持ちでない場合は、このモジュールを中止してスキップすることができます。TurtleBot 3 Waffle Pi でモデルを実行するには、必ず前のモジュールでトレーニングしたモデルを使用してください。

モジュールの所要時間: 30 分
使用するサービス: AWS RoboMaker、Amazon S3、AWS IoT Greengrass

  • ステップ 1:ロボットアプリケーションのビルドおよびバンドル

    このステップでは、TurtleBot 3 Waffle Pi ARM アーキテクチャ用のトレーニング済み RL モデルをロボットアプリケーションに組み込んでバンドルします。

    a.AWS Cloud9 IDE シェルウィンドウで、以下のコマンドを実行してクロスプラットフォームコンテナイメージをダウンロードし構築してください。このイメージは、TurtleBot ARM アーキテクチャ用のロボットアプリケーションをコンパイルおよびバンドルするために使用されます。このプロセスは約 10 分で完了します。

    cd /opt/robomaker/cross-compilation-dockerfile && sudo bin/build_image.bash
    Cloud9 IDE

    (拡大イメージを見る)

    Cloud9 IDE

    b.AWS Cloud9 IDE で ObjectTracker/robot_ws/src/object_tracker_robot/config フォルダに移動し、model_config.yaml ファイルを開いて必要事項を記入してください。このファイルによって、Amazon S3 バケットからトレーニング済みの強化モデルをダウンロードして、ロボットにデプロイするバンドルに配置するようにビルドプロセスに指示されます。


    Model config yaml

    (拡大イメージを見る)

    Model config yaml

    c.AWS Cloud9 IDE シェルウィンドウで以下のコマンドを実行し、前の手順でダウンロードしたイメージを使用して実行するコンテナを作成します。これはコンテナシェルにも入力され、ARMHF アーキテクチャ用のロボットアプリケーションのビルドおよびバンドルを可能にします。

    docker run -v $(pwd):/robot_ws -v ~/.aws:/root/.aws -it ros-cross-compile:armhf

    d.コンテナのシェルプロンプトが表示されます。次のコマンドを実行してください。

    アプリケーションをビルドおよびバンドルするときには、ROS で依存関係を管理するためのツールである rosdep を使用します。このサンプルアプリケーションには、rosdep のデフォルトソースに含まれていないライブラリが必要です。このファイルと次のステップの最初のいくつかのコマンドにより、このライブラリの rosdep にルールが追加されます。

    echo "libjpeg62:
      ubuntu:
        xenial: [libjpeg62]" > /etc/ros/rosdep/custom-rules/object-tracker-rules.yaml

    e.コンテナのシェルプロンプトで次のコマンドを実行してください。このプロセスには約 20 分かかります。

    echo "yaml file:/etc/ros/rosdep/custom-rules/object-tracker-rules.yaml" > /etc/ros/rosdep/sources.list.d/23-object-tracker-rules.list
    apt-get update
    cd robot_ws
    rosdep update
    rosdep install --from-paths src --ignore-src -r -y
    colcon build
    colcon bundle

    f.ロボットアプリケーションは、TurtleBot 3 Waffle Pi で使用されているのと同じアーキテクチャである ARMHF 用にビルドおよびバンドルされました。「ObjectTracker/robot_ws/bundle/」フォルダに output.tar.gz バンドルファイルが作成されました。このバンドルには、ロボットが現実の世界でモデルを使用するのに役立つロジックとトレーニングされた強化学習モデルが含まれています。

    output

    (拡大イメージを見る)

    output

    g.「exit」コマンドを使ってコンテナのシェルプロンプトから出ます。


  • ステップ 2:ロボットアプリケーションの更新

    a.AWS Cloud9 IDE のシェルウィンドウで、以下のコマンドを実行してコンテナによって構築された ARM バンドルを S3 バケットにアップロードします。コマンド内の S3 バケット名を自分の S3 バケットに変更するのを忘れないでください。

    aws s3 cp ObjectTracker/robot_ws/bundle/output.tar.gz s3://robomaker-objecttracker-yourinitials/ObjectTracker/output.tar.gz

    b.AWS RoboMaker コンソールの左側のパネルで [Robot applications] を選び、[Create robot application] を選択してください。

    c.アプリケーションに「RoboMakerObjectTrackerApplication」のような名前を付けて、アップロードした S3 バンドルのロケーションを [ARMHF source file] テキストボックスに忘れずに入力します。

    Create robot application

    (拡大イメージを見る)

    Create robot application

    d.ロボットアプリケーションページで作成したロボットアプリケーションを見つけ、後でデプロイするために [Create new version] を選択します。

     

    Create new version

    (拡大イメージを見る)

    Create new version
  • ステップ 3:デプロイの作成

    a.[Creating a Robot] の手順に従って、TurtleBot を AWS RoboMaker に接続するように設定します。デプロイロールを作成するときは、このチュートリアルで作成した S3 バケットを必ず置き換えてください (例: robomaker-objecttracker-yourinitials)。

    b.[Creating a Fleet] の手順に従って、ロボットを管理するためのフリートを設定します。

    c.[Registering and Deregistering Robots] の手順に従って TurtleBot 3 Waffle Pi をフリートに登録します。

    d.AWS RoboMaker コンソールの左側のナビゲーションパネルで、[Deployments]、次に [Create deployment] を選択します。

    e.[Create deployment] ページで、前の手順で作成したフリート、ロボットアプリケーション、および最新のバージョンを選択します。[Package Name] フィールドに [object_tracker_robot]、[Launch file] フィールドに [main.launch] と入力します。その他はデフォルトの設定をそのまま使用し、[Create] を選択します。

     

    Create deployment

    (拡大イメージを見る)

    Create deployment

    f.デプロイ詳細ページでデプロイを追跡できます。

    お疲れ様でした。チュートリアルはこれで終了です。