AWS RoboMakerでのワールド生成
AWS RoboMakerは、ROSのロボットアプリケーションの開発をクラウド上で行うことができる、AWSのサービスです。詳しくは下記の記事をご覧ください。
https://rb-station.com/blogs/article/aws-robomaker-cloud-robot
本記事では、AWS RoboMakerにおいて、ワールドを生成し、シミュレーションジョブで使用するまでの流れを解説します。
ワールドテンプレートの作成
まず、ワールドを生成するための設定が入ったテンプレートを精製する必要があります。AWS RoboMakerのコンソール画面のサイドバーにて「ワールドテンプレート」を選択後、「テンプレートを作成」ボタンを押してワールドテンプレートを作成します。
「テンプレートを作成」ボタンを押下すると、テンプレート作成画面が表示されます。初めは、AWS側で用意されているサンプルテンプレートを使って生成する形が良いかと思います。サンプルテンプレートの「参照して選択」を選択しましょう。
AWSが用意しているサンプルテンプレートがいくつか表示されますので、今回はベッドルームを選択します。
部屋を作成
「部屋」を選んで、新しい部屋を作りましょう。1つの部屋、1つの廊下、1つのバスルームの3つを作っていきます。サイドバーの「部屋」から「部屋を追加」ボタンを押して、新しく部屋を作っていきます。
まず、部屋を繋ぐ廊下を作りたいので、ルームタイプを「廊下」として、サイズを3x1としました。
お風呂も作りましょう。ルームタイプをバスルームにします。
これで部屋が3つできました。
部屋同士の接続を作る
作成した3つの部屋を繋ぐ設定を作っていきます。「接続を追加」ボタンで部屋同士を繋ぐことができます。今回は寝室⇆廊下⇆バスルームと接続をしたかったので、それぞれの2つの接続を追加しました。
接続タイプの「玄関口」はいわゆる玄関というよりはドアが設置されるようなつなぎ口になるイメージです。
家具の設定
サイドバーの「家具」から、部屋に設置する家具の設定を行うことができます。バスルームだけ設置する家具を変えたかったので設定をしてみます。「追加 カスタム家具」ボタンで家具の設定をしていきます。
フィルタータイプで「ルーム名別」を選択した上で、先程作成した部屋のBath Roomを選択し、家具タイプにバスとシャワーを追加しました。これにより、風呂桶とシャワーのみが家具として設置される形となります。
ワールドの生成
ワールドテンプレートが作成できたらそのテンプレートを元にワールドを生成します。「ワールドを生成」ボタンを押した後、フロアプラン(部屋の配置パターン)と内部バリエーション(部屋内に設置されるオブジェクトのパターン)について設定をします。
その後、「ワールドを生成」ボタンを押すと、生成ジョブが起動するのでしばらくすると、ワールドが生成されます。生成ジョブの一覧で、ステータスが実行中から完了済みになるとワールドが生成されています。
サイドバーでワールドを選択すると、生成したワールドの一覧を見ることができます。
これが今回生成されたワールドです。寝室、廊下、バスルームが接続されていることがわかると思います。
寝室のベッドが邪魔で部屋の中に入れなそうですが・・
シミュレーションジョブで生成したワールドを使用
AWS RoboMakerが提供しているサンプルプロジェクトのHelloWorldアプリケーションを用いている場合は、シミュレーションジョブを起動する際に「シミュレーションアプリケーション設定」の起動ファイルをworldforge_world.launchにしましょう。
このlaunchファイルの中身としては、launch_world.launchを起動しており、これがシミュレーションアプリケーションで設定したワールドを呼び出す設定となっています。
<include file="$(find aws_robomaker_worldforge_worlds)/launch/launch_world.launch"> <arg name="gui" default="$(arg gui)"/> </include>
その後、シミュレーションジョブの「WorldForge からワールドをインポート 」セクションにて、先ほど生成したワールドを選択します。
シミュレーションジョブを起動すると、先ほど作成したワールドが正常に読み込まれているのがわかります。