AWS RoboMakerでのワールド生成

AWS RoboMakerは、ROSのロボットアプリケーションの開発をクラウド上で行うことができる、AWSのサービスです。詳しくは下記の記事をご覧ください。

ロボットの開発で良く用いられるプラットフォームとしてはROSが挙げられると思います。しかしながら、複数人で開発をする場合に環境を合わせるのが大変、ライブラリインストールを失敗してOSを初期化せざるを得なかった、マシンスペックを柔軟に変えて試したい、など様々な課題も上がってくるかと思います。 もし、上記のような課題を抱えている場合はAWS RoboMakerを使った、クラウドでのロボットアプリケーション開発をおすすめします。 本記事ではAWS RoboMakerの概要と、大まかな開発の流れを紹介し、具体的なイメージをもっていただくことを目的としています。
 

本記事では、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

Arduinoのrosserialで「Unable to sync with device」というエラーが出た場合の対処
Arduinoのrosserialで「Unable to sync with device」というエラーが出た場合の対処
概要 ArduinoでROSのトピックを受信して動作をさせたいときに、使うのがrosserialです。 rosserial_arduino このrosserial_arduinoを用いてArduinoと繋げてROSトピックを投げ...
Read More
Arduinoのコードでキュー(Queue)を使う
Arduinoのコードでキュー(Queue)を使う
概要 Arduinoのコードを書く際に、処理をキューイングして順番に処理をしていきたい時がありました。Arduinoにはarrayはありますが、FIFO(後述)型のキューはデフォルトでは無いため、外部ライブラリをインクルードする必要が...
Read More
2輪駆動 ロボット台車・カーシャーシの組み立て方
2輪駆動 ロボット台車・カーシャーシの組み立て方
RoboStationで販売しているロボット台車・「積載重量4kg/3kg 2輪駆動 ロボット台車・カーシャーシ」の組み立て方について解説をします。   貼り付けられている写真はDCモータ版での組み立てですが、ステッピングモーター版...
Read More