It's High Time

プログラミング,電子工作,機械設計,そして暗号通貨

ROSで用いられるXML形式ファイルの仕様

ROS-Gazeboでのシミュレーションで用いられる.world等のXML形式のファイル

これはSDFormatという,XML形式でオブジェクトや環境を定義できるフォーマットに従って記述されている.

f:id:genm:20170626220705p:plain

http://sdformat.org/

上のリンクをたどれば,各タグの要素の意味や設定方法が丸わかり(英語

indigoからROSを使っている人は多分バーション1.4とかを使用していると思う. 最新バージョンは1.6なのでそっちに合わせよう

sdformat.org

Gazebo launchファイルの詳細

launchファイルは,起動時に引数を与えることでいくつかの設定を変更する事ができる.

$ roslaunch gazebo_ros empty_world.launch paused:=true use_sim_time:=false gui:=true throttled:=false headless:=false debug:=true

これらの引数は,launchファイルに直接指定することも可能である. 多分標準で入ってるmud.worldは以下のようなlaunchファイルの構成になっている.

<launch>
  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="worlds/mud.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>
</launch>

基本的に自分でempty_world.launchから拡張する際には,world_nameパラメータ(arg name=“world_name”)以外に変更する必要はない.

その他の各パラメータの役割は以下のようになっている.

  • paused
    • 一時停止状態でスタートする.
    • デフォルトはfalse
  • use_sim_time
    • ROS側からGazeboに時間(Gazebo-published simulation time)を訪ねた際に
    • デフォルトはtrue
  • gui
    • gui(Gazeboの画面)を表示するか
    • falseにすると画面描画がされないため,実行速度が向上する
    • デフォルトはtrue
  • headless
  • debug
    • gzserver(Gazebo server)がgdb(GNU Project debugger)を利用したデバッグモードで起動する

ROS開発専用IDE「Roboware Studio」

既存の ROS 開発環境では,エディタのIntelliSense が聞かず単純なタイプミス等によってバグが混入してしまい catkin_make するまで問題に気づけ無いなんてことがしばしば...

解決策を模索していたところ,なんとROSの公式 wiki に推奨 IDE の一覧が載っていた.灯台下暗しとはこの事.

IDEs - ROS Wiki

そのリストの中でいい感じのIDEを見つけたので紹介する

Roboware Studio

f:id:genm:20170626225443p:plain
THE・ROS開発専用IDE

なんとROS開発専用に開発されたIDEで,ベースにMicrosoftVSCodeを使用している . 対応OSはUbuntu14.04とUbuntu16.04でROSバージョン indigo / jade / kineticに互換性がある.

www.roboware.me

出来ることなど

nodeの一覧表示,messageファイルの編集と同時にCMakelistを自動生成してくれるのは特に強力な機能だと思われる.

残念なのは開発の頻度がちょっと低いところか… github.com

まだちょっとしか触ってないので,どこまで実用に堪えるかわからないが ROS開発における最善の選択肢が現れた(かもしれない