環境
この記事は以下の環境で動いています。
項目 | 値 |
---|---|
CPU | Core i5-8250U |
Ubuntu | 20.04 |
ROS | Noetic |
Gazebo | 11.9.0 |
インストールについてはROS講座02 インストールを参照してください。
またこの記事のプログラムはgithubにアップロードされています。ROS講座11 gitリポジトリを参照してください。
概要
ここまでGazeboシミュレーションで「自機」の設定をしてきましたが、それと同じように周りの物を置くこともシミュレーションの上では重要です。ここでは周囲の環境の設定をしてみましょう。
Gazeboモデルデータベースの利用
Gazeboにはモデルデータベースがあり、ここに便利なGazeboモデルがたくさん収録されています。
GUIから利用
これらを見るためにはGazeboの「Intsert」タブを開き、「Connection to model database」を押します。ここでサーバーに通信するので数分待ちます。
しばらくすると以下のように表示が変わるのでメニューを開きます。様々なモデルが出てきますが、ここでは「cafe」を選んで、3Dビューの上でクリックしましょう
一度このように使ったファイルは~/.gazebo/model
以下に保存されます。
worldファイルで記述
自作のモデルと同じように以下のようにincludeを書けば使用できます。また事前に上記の方法でモデルをダウンロードしていなくても、Gazebo起動時に自動的にダウンロードできます(その代わり起動までしばらく待つことになります)。
<include>
<uri>model://cafe</uri>
</include>
一定の範囲に分布させる
障害物を一定の領域に分布させたい場合は<population>
機能を使うと実現できます。
<population name="can_population1">
<model name="can1">
<include>
<uri>model://coke_can</uri>
</include>
</model>
<pose>1.5 0 0.2 0 0 0</pose>
<box>
<size>1 2 0.01</size>
</box>
<model_count>5</model_count>
<distribution>
<type>random</type>
</distribution>
</population>
-
<population>
タグの直下の<model>
タグで出現させるモデルを指定します。 - 出現範囲は矩形か円形で選べます。矩形なら
<box>
タグで範囲を指定します。 -
<model_count>
は出現させるモデルの数です。 -
<distribution/type>
では分布のタイプを指定できます。randomでは無作為に配置します。起動ごとに配置が変わります。
シミュレーションのステップの調整
デフォルトでは秒間1000ステップで物理演算を行います。高速で動くものでない限りはここを調整することでCPU負荷を抑えることが出来ます。
例えば秒間200ステップに抑えるには<world>
タグ以下に記述を追加します。
<physics type='ode'>
<max_step_size>0.05</max_step_size>
<real_time_factor>1</real_time_factor>
<real_time_update_rate>200</real_time_update_rate>
</physics>
実行
roslaunch gazebo_ros empty_world.launch world_name:=objects_from_db.world verbose:=true
cafeモデルの出現とcoke_canを無作為に5個出現します。