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

VMWare FusionでUbuntu 18.04のディスク容量を上げる方法
VMWare FusionでUbuntu 18.04のディスク容量を上げる方法
概要 VMWare FusionでUbuntu 18.04の仮想ディスクを起動する際に、ハードディスクの容量を上げる方法について解説します。 手順 1. 仮想ディスクの電源をOFFにする 2. 設定ボタンを押して設定画面を開いた後に、...
Read More
rospyでImageデータを取得してOpenCVの配列として扱う
rospyでImageデータを取得してOpenCVの配列として扱う
概要 PythonでROS開発をする際、sensor_msgs/Image型のトピックを受信して色々な処理をかけたいときには、OpenCVの配列に変換した上で処理を行うと便利です。CvBridgeというsensor_msgs/Imag...
Read More
ネイティブアプリでROS通信をする際はFlutterとroslibがおすすめ
ネイティブアプリでROS通信をする際はFlutterとroslibがおすすめ
概要 ROSを起動させているロボットに対して、スマートデバイスからROSで通信を行いたい時があるときは、Flutterを用いたネイティブアプリで実装するのがおすすめです。 https://rb-station.com/blogs/ar...
Read More