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つ作成する

部屋同士の接続を作る

作成した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 からワールドをインポート 」セクションにて、先ほど生成したワールドを選択します。

ワールドを選択

シミュレーションジョブを起動すると、先ほど作成したワールドが正常に読み込まれているのがわかります。

gazebo 

 

Aws robomaker

Related Posts

ROSのmove_baseで、Pythonからコストマップをクリアする方法
ROSのmove_baseで、Pythonからコストマップをクリアする方法
move_baseを使っていると、障害物が無いのにコストマップで障害物判定されてしまうことがあります。そのようなときは、コストマップを一度クリアしましょう。 コマンドから   move_baseノードには、コストマップをクリアする方法...
Read More
roslaunchでrospy.loginfoでの出力が表示されない場合の対応策
roslaunchでrospy.loginfoでの出力が表示されない場合の対応策
roslaunchで起動したときに、rospy.loginfoで出力しても表示されない場合は下記のように--screenオプションをつけましょう。 コマンドラインで実行する場合 roslaunch your_package your_...
Read More
ArduinoのpulseInで割り込み処理ができるようにする
ArduinoのpulseInで割り込み処理ができるようにする
概要 超音波センサーHC-SR04等を用いてArduinoで距離計測を行いたいときに、Trigピンで超音波を発生させた後にEchoピンで、超音波が反射されてくるまでの時間を計測することで距離を計測できます。その際、pulseInという...
Read More