ODEセンサー活用術と動画の作成

2009年6月22日(月)
松下 光次郎

素材・構造を利用してセンサーを作ろう!

 重心センサーや接触センサーは計算処理のみで構築しているものですが、ロボット自体に素材・構造を追加して、物理状態を計測する方法もあります。

 例えば、伸縮バネはフックの法則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センサー活用術と動画の作成」サンプルプログラム

電気通信大学
電気通信大学 電気通信学部 知能機械工学科特任助教。脚移動ロボットや電動装具の研究開発の経験を生かし、近年、ロボット教育に力を入れている。特に中学生・高校生に科学技術への興味をもってもらうため、安価なロボット開発法をWebサイト(http://www.koj-m.sakura.ne.jp)にて紹介することや、ものづくり体験型の講演活動を積極的に行っている。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています