PR

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プログラムがそのまま終了してしまいますので、ご注意ください。

Think IT会員限定特典
  • 「ODEセンサー活用術と動画の作成」サンプルプログラム

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

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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