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

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

ロボットの動画を作る(1)~画像出力~

 三次元シミュレーションを作成すると、やはり自分が構築したロボットの連続写真や動画を作りたくなると思います。ここでは、ビットマップ画像を連続出力する方法と、フリーソフトを利用して連続写真や動画を作成する方法を解説します。

 シミュレーションの画像(BMP)ファイルを出力するには、まず、ダウンロードファイル内の「BMP.h」と「BMP.cpp」をプロジェクトに追加する必要があります。連載第1回(http://thinkit.co.jp/article/958/1/)で説明した手順で、図3-1のわかりやすくマークした2か所のようにプロジェクトへ追加できていれば問題ありません。

 さらに、ODEプログラムの宣言部と描画部にBMPファイル出力設定コードを追加する必要があります。詳細は、ダウンロードファイル内のプログラム「demo_buggy_bmp.cpp」を参考にしてください。なお、「demo_buggy_bmp.cpp」はオリジナルのODEデモプログラム「demo_buggy.cpp」にBMP連続出力プログラムを追加したものです。

 BMPファイル出力を扱う上で気をつけるところは、ファイルサイズが大きい点です。刻み時間ごとにすべて出力してしまうと膨大なファイルサイズとなってしまうため、「bmp_time」でカウントし、シミュレーション時間で0.1秒ごとの出力とすると良いでしょう。

 また、ディスプレイに描画されるサイズとBMPファイルに保存されるサイズが異なると不便ですので、「BMP.cpp」内の「WriteBMP(filename,640,480);」とメインルーチン内の「dsSimulationLoop (argc,argv,640,480,&fn);」は共通の値に設定してください(640x480を推奨)。それでは「demo_buggy_bmp.cpp」で、連続画像の出力を試してください。

ロボットの動画を作る(2)~連続写真&動画作成~

 少々手間がかかりますが、私は複数のフリーソフト「縮小専用。」「一発!切り抜き」「Jointogether」を組み合わせて、ロボットシミュレーションを1枚の連続写真にまとめています(図3-2)。以下に簡単に手順を説明します。

1)「縮小専用。」(http://i-section.net/)で、指定したBMPファイルを一括して「一発!切り抜き」が対応しているJPG形式に変換します。

2)「一発!切り抜き」(http://www.seasidesoft.net/)を使って、図3-3左上に示されるように、同じサイズの画像ファイル群から指定した画像領域を一括で切り抜きます。これは余分な部分を削除し、被写体のみを強調させるために重要です。

3)「Jointogether」(http://homepage3.nifty.com/hirapro/)を使って、連番の画像を1枚の連続写真ファイルにします。そのためには、まず縦横に並ぶ枚数を決定し、連続写真1枚のサイズを算出する必要があります(図3-3右上)。ただし、このソフトは基本的に画像を横並びに配置するため、縦並びの連続写真を作成したい場合は、まず1列なら縦並びの画像を作成して、列ごとの画像を再度横に並べるという手の込んだ処理が必要です(図3-3下)。

 以上で連続写真が完成します。連続写真にタイムスタンプを入れたい場合は、市販の画像加工用ソフトなどを利用して、直接画像に時間を入れてください。

 最後に動画の作成です。デスクトップキャプチャなど描画ウィンドウを動画として直接保存するソフトもありますが、パソコン性能によって不規則な時間間隔の動画として保存されてしまう問題点(画像が飛んでしまう)があります。

 そのため確実な手段として、一定の時間間隔で画像ファイルを連続出力した後、画像ファイル群を結合して動画ファイルを作成する方法を紹介します。

1)ODEシミュレーションのBMP画像ファイルを、一定のシミュレーション時間間隔で連続出力します。

2)フリーソフト「AVIMaker」(http://yamatabi.que.ne.jp/)を利用して、連続出力されたBMP画像ファイル群から動画ファイル(無圧縮AVI)作成します。なおこの時、1秒間あたりに表示する画像の枚数を示すFPS(Frame Per Sec)単位に気をつけてください。私は前述したように0.1秒ごと(10FPS)の設定としています。

3)無圧縮のAVIは重いため、フリーソフト「TMPGEnc」(http://www.tmpgenc.net/)によって、MPG形式に変換します。

 以上で、ロボットシミュレーションにおけるセンサーデータの取得方法とその表現方法のポイントをお伝えしました。これで、ロボットシミュレーションの全般はお伝えできたと思います。

 連載の最後は、私自身の研究活動を踏まえ、いくつかのロボットを紹介させていただきます。

  • 「ODEセンサー活用術と動画の作成」サンプルプログラム

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

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

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

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

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