デバグ情報表示用に gnuplot を活用
ロボットは ROS(Robot Operating System) を利用して制御されています。 ROS には RViz という視覚化ツールが用意されておりまして、ロボット本体や付近の壁や物体など 3D の形状を表示することができます。 シミュレーション動作時に、ソフトウェアが把握している情報を図示化してくれるため大変便利なツールです。 ですが、デバグ用途でサブモジュールの内部情報をちょこっと見たい・・・ なんて用途に使うにはちょっと大げさすぎる準備や後片付けが要るように感じています。 そこで今回は、数式などをグラフ化するツールの gnuplot を利用することにしました。 ・ロボット各部の位置情報 ・ロボット各部の未来位置 ・避ける必要のある付近の障害物 ・関連するパラメータなどの値 をまとめてドン!と表示します。 gnuplot が一度の plot で表示できる情報としては ・3次元の線分のセット ・任意数の矢印 ・任意数の文字(ラベル) などが利用できるので、以下の作戦を立てました。 1. 障害物はポリゴンとして、空間内の三角形の集合として表示する 2. ロボット各部の位置などは、線分の集合として、矢印を利用して表示する 3. ロボット各部の過去位置→未来位置の移動経路は一連の矢印で表示する 4. その他パラメータなどは、ラベル文字列として表示する 表示手続きは以下になります。 1. 各種矢印とラベルを設定する(set コマンド) 2. 今回表示しない矢印とラベルは設定解除する(unset コマンド) 3. 障害物を表示する(splot コマンド) 共通で使う表示書式は style コマンドで設定しておくことができるので、比較的シンプルなコマンド編集で、3D図形と位置、及び注釈などを独立した画面に固めて表示することができるようになりました。