ODEセンサー活用術と動画の作成
素材・構造を利用してセンサーを作ろう!
重心センサーや接触センサーは計算処理のみで構築しているものですが、ロボット自体に素材・構造を追加して、物理状態を計測する方法もあります。
例えば、伸縮バネはフックの法則F=KXにより「力」と「伸縮バネの変化量」が比例関係にあるため、図2-1に示すように、バネ定数と変化量さえわかれば、物理量である力が計測できることがわかります。
この力センサーの設定コードはダウンロードファイル「spring2sensor.cpp」を参考にしてください。
この考えを発展させて、伸縮バネによる力センサーの応用で「加速度センサー」を作ることもできます。「spring2sensor.cpp」と下記の手順を参考にして作ってみてください。
1)ロボットの特定部位に90度方向のずれたスライダー関節を2個配置する。
2)両方の関節状態を高弾性(弾性係数Kを高く)・低粘性(粘性係数Cを低く)とする。
3)シミュレーション中、「dJointGetSliderPosition」によりスライダーの距離変化(≒伸縮バネの変化量)を計測。
4)弾性係数Kと計測された変化量により、加速度を算出する。
また、このスライダーをロボットと地面の接触部に設定すれば、踏圧センサーを構築することも可能です。物体構造・関節状態を工夫すれば、まだまだ多くのセンサーを作ることができるので、いろいろ作ってみると良いでしょう。
Gnuplotでセンサーデータをグラフ化する!
ロボットシミュレーションで得られたセンサーデータからグラフを作成する手順は、一般的には以下のとおりです。
1)ロボットシミュレーション中のセンサーデータをテキストファイルに保存する
2)シミュレーション終了後にエクセルなどの表計算ソフトウエアでデータを保存したテキストファイルを開く
3)その描画機能でグラフを作成する
しかし、この方法だと大量のセンサーデータを扱う場合には、エクセルが止まってしまうなど、困難な状況も生じます。そこで、グラフ描画ソフトウエアである「Gnuplot」を使って、数値データを簡単、迅速にグラフ化する方法を紹介します。
まず描画環境であるGnuplotのインストール方法から説明します。GNUPLOTの公式ホームページ(http://www.gnuplot.info/)から、「Download > Primary download site on SourceForge」に進み、最新版の「gp425win32.zip」をダウンロードしてください。そして、解凍したZIPファイルの中にある「gnuplot」フォルダを「c:\」に置いてください。
次にODEにおけるGnuplotグラフの表示方法を説明します。
1)ヘッダーファイルの追加
「system()」を利用するために、「#include
2)「SimLoop」ルーチンにおけるセンサーデータのテキスト出力
センサーデータはC言語のコマンドを利用して、刻み時間ごとにテキストファイルへ保存されています。つまり、図2-3に示すとおり、「SimLoop」内において「fopen」でdata.txtファイルへの上書きを許可し、「fprint」で時間データとセンサーデータを記録、最後に「fclose」で上書きを終了します。ここで重要なポイントは、1刻み時間の数値データ群を1行にまとめていることです(数値データ間はタブ間隔、最後の数値データの後には改行)。
3)「main」ルーチンにおけるGnuplotの呼び出し
外部プログラムであるGnuplotは、「main」ルーチンの「dsSimulationLoop」が終了した直後にC言語のコマンド「system("c:/gnuplot/bin/pgnuplot.exe-persist sample.plt");」で起動します。この時、PLTファイル「sample.plt」に記述されているGnuplotのコマンドが順々に実行され、保存されているセンサーデータを一括してグラフ表示することとなります。なお、Gnuplotのコマンドの詳細は多くのウェブサイトで紹介されているので、調べてみてください。
ダウンロードファイルには、デモバギープログラムにグラフ表示機能を付加した「demo_buggy_gnuplot.cpp」「demo_buggy_gnuplot1.plt」demo_buggy_gnuplot2.plt」と、力センサープログラムにグラフ表示機能を付加した「spring2sensor_gnuplot.cpp」「spring2sensor_gnuplot.cpp」がありますので、参考にしてください。
補足として、PLTファイルに記述されるコマンドが間違っていると、グラフ描画されず、ODEプログラムがそのまま終了してしまいますので、ご注意ください。
「ODEセンサー活用術と動画の作成」サンプルプログラム