九州工業大学 CIR-KIT Blog

九工大自律移動ロボット製作プロジェクトCIR-KITの技術系ブログ

No.4-1:ツールとユーティリティ (ログフィルタリング 編)

gazebo_logo

検証日時

02/13/2015 (Fri)

概要

Gazeboのチュートリアル第四弾「Tools and utilities」。
Gazeboには多くのツールとユーティリティがあります。
このチュートリアルでは、利用可能なツールとその使い方を説明します。
今回はその「Log Filtering」編です。
公式サイトを適当に翻訳しただけですので、あしからず。

レベル

BEGINNER

環境
PC : Lenovo ThinkPad X240
Prosessor : Intel Core i7-4600U (2.10GHz, 4MB, 1600MHz)
RAM : PC3-12800 DDR3L (8GB)
OS : Ubuntu 14.04 LTS 64bit
Kernel : 3.13.0-44-generic
Gazebo : Version 5.0.1
参考

GAZEBO Tutorial-Tools and Utilities

はじめに

状態のログとは、Gazeboからの環境情報の記録です。状態とは、姿勢、速度、加速度、そしてすべてのモデルのすべてのリンクに適用された力のことを指します。Gazeboでは、時間経過と共に変化するモデルの状態情報だけを記録します。状態ログのファイルには、ヘッダ、初期環境記録、状態の時系列情報で構成されています。

Gazeboログコマンドのラインツール

Gazeboでは、gz logコマンドでアクセスするロギングユーティリティ(記録ユーティリティ)を提供しています。
ヘルプ情報を以下のコマンドで確認してみましょう。

1
gz help log

もしくは、

1
gz log -h

使い方の例

ステップ 1:状態ログファイルを作る

古いログファイルを消去することから初めましょう。

1
rm -rf ~/.gazebo/log/*

今回は、ログファイルを生成するのに、PR2ワールドを使用します。
Gazeboサーバを-rコマンドラインオプションをつけて実行しましょう。

1
gzserver -r worlds/pr2.world

数秒後に、サーバをCtrl-cで停止しましょう。
新しいタイムスタンプのあるディレクトリが~/.gazebo/log/の中に、一つのサブディレクトリとstate.logファイルがあるはずです。例えば以下のような感じです。

1
~/.gazebo/log/2015-02-13T21:18:11.849250/gzserverstate.log

Gazeboでこれをリプレイすることにより、このログファイルを確認することができます。

1
gazebo -p ~/.gazebo/log/*/gzserver/state.lgo

ステップ 2:ログファイルをフィルタリングする

gz logコマンドラインツールでは、ログファイルを通じたステッピングとログファイル表示のコンテンツのエコーのためのメカニズムを提供しています。表示エコーの特徴は、モデルやリンクの姿勢などの情報を定義するようなログファイルを生成するフィルタと結合したものとなります。
記録した状態ログファイルをスクリーンにエコーしてみましょう。

1
gz log -e -f ~/.gazebo/log/*/gzserver/state.log

すると、スクロールできるほどたくさんの情報を確認することができるでしょう。
では、ログファイルにあるすべての速度、加速度、力の情報を消してみましょう。つまり、姿勢の情報だけを残します。

1
gz log -e -f ~/.gazebo/log/*/gzserver/state.log --filter *.pose/*.pose

--filterオプションは、ログファイルの情報を間引くには、柔軟で便利なコマンドライン引数です。
Hzフィルタを使えば、シミュレーション時間についてもフィルタリングをオコナウことができます。例えば、30 [Hz]で状態情報を出力したいとすると、以下のようにコマンド入力を行います。:

1
gz log -e -f ~/.gazebo/log/*/gzserver/state.log -z 30

これらのフィルタはプレイバックのためのファイルに結合することができます。このことはstate.logファイルの大きさに依存することもあります。

1
gz log -e -f ~/.gazebo/log/*/gzserver/state.log -z 30 --filter *.pose/*.pose > /tmp/filtered_state.log

このログファイルは、以下のようにしてGazeboでリプレイすることができます。

1
gazebo -p /tmp/filtered_state.log