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

rosserialを使ってArduinoで/cmd_velトピックを受信してロボット台車を動かす
rosserialを使ってArduinoで/cmd_velトピックを受信してロボット台車を動かす
概要 ROSを使って実機でロボット台車を動作させたい時に、Arduinoでシリアル通信経由でROSトピックを受信して、ロボット台車を動作させる方法を説明します。 /cmd_velは、平行移動の速度と回転速度が定義されたgeometry...
Read More
ArduinoとCAN-BUSシールドでCAN通信
ArduinoとCAN-BUSシールドでCAN通信
概要 CAN(Controller Area Network) はドイツのBOSCH社が開発したシリアル通信プロトコルです。信頼性が高く、主に自動車の制御システムに用いられていましたが、最近はIoT、ロボット台車などでもCAN通信を使...
Read More
ROSパッケージ紹介 | depthimage_to_laserscanでデプスカメラ情報からscanトピックを発行
ROSパッケージ紹介 | depthimage_to_laserscanでデプスカメラ情報からscanトピックを発行
概要 gmappingなどの多くのマップ生成パッケージでは、sensor_msgs/LaserScanの型のトピックを受信することが多いと思います。そのような時に、scanを発行できるデバイスはLidarなどがありますが、Lidarを...
Read More

サイトについて

RoboStationは誰でも手軽にロボットを製作できるようにすることを目的としたEC・ハウツーサイトです。