ラジコン飛行機のGPS軌跡を表示

ge_alt.jpg

ラジコン飛行機にGPSを積んで、飛行軌跡や高度・速度をGoogle Earthで表示する方法を紹介します。(右写真)

また、GPSのログを使用して動画に軌跡や速度メータを合成する方法を紹介します。
合成動画例:http://www.youtube.com/watch?v=-PZdWhgmxO4

1.用意するもの

1) GPSロガー
軽さと安さで選べば良いでしょう。2.4GHzプロポを使われている方は、Bluetooth機能の無いGPSか無効にできるGPSが良いでしょう。ここでは、安いCanMoreのGT-730FL-Sを紹介します。電池内蔵で約34gです。
http://www.canmore.com.tw/(外部リンク)
ログ間隔の初期値が5秒なので、Phototrackrの[ロガー設定][ハードウェア]で録画モードを[時間で記録][1秒]に設定します。

2) GPSロガーのログをNMEA-0183ファイルに変換するソフト
GPSロガーに付属しています。GT-730FL-Sには、GiSTEQ Phototrackr Version 2.6.202.0Sが付属しています。本来、GPSデータと写真をリンクさせて管理するソフトですが、NMEAファイルへの変換機能を備えています。付属取説に従い、ドライバーとPhototrackrをインストールします。SportTracksは不要です。

3) カシミール3D
表示させたい軌跡の時刻を調べる為に使用します。
http://www.kashmir3d.com/(外部リンク)

4) パソコン:Windows XP SP3(これ以外の環境は未確認です。)

5) テキストエディタ
NMEAファイルから軌跡を表示する部分のみを切り出すために使用します。Windowsのメモ帳でOKです。

6) Google Earth
軌跡や高度・速度グラフを表示します。
http://www.google.co.jp/intl/ja/earth/(外部リンク)

7) GPS for VDS
GPSの記録と同時に動画を撮影した場合に、その動画にGPSの軌跡と速度を合成するためのAviUtl用フィルターです。カーレース用のようです。だから、残念ながら高度関係は表示されません。
http://park.geocities.jp/maplusconv/vsd_filter_gps.html(外部リンク)

8) AviUtl
上記VDS for GPSを使うための、動画編集ソフトです。
http://spring-fragrance.mints.ne.jp/aviutl/(外部リンク)

9) 高度補正マクロ
NMEAファイルの高度に一定のオフセット値を加えるためのEXCELマクロです。離陸点の高度を0m表示にしたい場合に使います。本ソフトはプログラミング素人の私が作ったもので、自己責任でお願いします。GT-730FL-S以外では使えない可能性があります。使い方は、ファイルに書いてあります。
nmea_alt.xls
EXCELを持っていない人向け
http://bigarrow.tea-nifty.com/blog/2011/08/gpsexcelexe-ac3.html

10) カメラ
動画の空撮に使います。画質は悪いですが、キーリモコン型カメラが安くて軽いです。私は、#7を使っています。#7は性能が悪いのですが、安いですし、コマ落ちをなくすために20fpsに変更できることと、機体の裏に付ける場合に画像を上下反転させることができることが便利です(要32bit環境)。
色々なバージョンがあるので、下記サイトから欲しいバージョンを扱っている店を見つけると良いでしょう。SD解像度では#3の評判が良いです。
http://chucklohr.com/808/(外部リンク)
HD(1280x720P 30fps)のキーリモコン型カメラでは#11の評判が良いです。取り扱っている店は下記に紹介されています。私も購入してみました。GoProなどと比べれば悪いですが、#7に比べるとかなり画質が良く、コストパフォーマンスは良いと思います。
http://www.rcgroups.com/forums/showthread.php?t=1362692(外部リンク)

11) キーリモコン型カメラ#11の.MOVファイルの取り扱い(2011/10/30)
ストリーム0、ビデオ、H264 - MPEG4 AVC (part10) (avc1)、1280x720、30fps
ストリーム1、オーディオ、PCM S16 LE (sowt)、モノラル、32000Hz、16bit/sample
このファイルはWindows 7のWindows media player 12やVLC media playerで再生できますが、AviUtlで読み込むことができません。

(1) MP4Cam2AVIを使用して、,aviファイルに変換する方法
http://mp4cam2avi.sourceforge.net/(外部リンク)
このソフトはビデオの再エンコードを行いません。Audioも「Source audio (no recompression)」を選択することができますので、劣化無しにコンテナだけ変えることができます。これで、AviUtlで読み込みが可能になります。
但し、AviUtlで読み込んだ時、全てのフレームがキーフレームとなってしまいます。このカメラの実際のGOPは15のようです。

(2) Avidemuxを使用して、.mp4ファイルに変換する方法(2011/11/05)
http://avidemux.sourceforge.net/download.html(外部リンク)
Video copy、Audio AAC、format MP4を選択し、ファイル名の拡張子を.mp4にして変換します。Audioは再エンコードされますが、Videoは再エンコードされず、キーフレームも15毎になります。
AviUtlで読むには、MP4Pluginが必要です。検索して探してください。2011/11/04時点では、下記のところにあります。
http://www1.axfc.net/uploader/Sc/so/151805(外部リンク)
http://www1.axfc.net/uploader/Ne/so/90562(外部リンク)
展開したファイルの中にある mp4input.aui と mp4export.auf をAviutlのフォルダに入れる。

(3) CCCP(Combined Community Codec Pack)を使って直接.MOVファイルをAviUtlで読む方法(2011/11/06)
http://www.cccp-project.net/(外部リンク)
Windows Virtual PC上のWindows XPで確認したところ、直接読めるようです。Codecをたくさん入れることに抵抗が無い方は、こちらが劣化の心配が無いので、良いでしょう。


#7カメラの操作方法
HOW TO TAKE A VIDEO
1. Start with the camera off (or press the reset button to turn it off).
2. Press the power (on/off) button. This turns the LED and the camera on.
3. Press and hold the mode (video/image) button. The LED flashes 3 times then the LED goes off. The camera is recording video and audio.
4. Very quickly press the mode button to stop video recording. The video recording stops, the video is written to a AVI Flash memory file, and the LED turns on. Repeat step three to take another video.
5. Press and hold the power button. The camera and the LED turn off.
HOW TO TAKE A PHOTO
1. Start with the camera off.
2. Press the power button. This turns the LED and the camera on.
3. Very quickly press the mode button. The LED briefly goes off, then on. The camera took a photo and wrote it to a JPG Flash memory file. Repeat step three to take another photo.
4. Press and hold the power button. The camera and the LED turn off.
lights work Status indication
Charge: charging yellow light on long time, when full lights off
USB file reading and writing: yellow light slow flash
Lights in Manual mode indication:
Standby status: yellow light long time on
Card is full: yellow light on
low battery power : yellow light slow flash.

2.GPSロガーからNMEAファイルを書き出す

1) Phototrackrの[旅記録ダウンロード][GPSからデータをダウンロード][接続][データ受信]でGPS(GT-730FL-S)からログを読み込みます。

2) Phototrackrで[写真管理]をクリックし、右側の旅記録の当該ログを右クリックし、[NMEAファイルとして保存]します。


3.表示させたいログを切り出す

1) カシミール3Dで切り出す時刻を調べる。

(1) カシミール3Dで[ツール][NMEA/IPSファイルの読み込み..]でNMEAファイルを選択し、[開く][衛星の受信状況をチェックする]のチェックを外す、[開始]でファイルを読み込む。

(2) [編集][GPSデータ編集...]左側の[トラック]、右側のトラック名を右クリック、[トラックの編集]で編集画面を表示。

(3) グラフの人のマークをドラッグすると、メイン画面の軌跡上の人のマークが移動する。これにより、切り出すトラックデータの開始時刻と終了時刻を決め、手書きでメモする。

(4) [閉じる]、GPSエディタの右上[X]カシミール3Dの右上[X]、GPSデータファイル(GBD)を保存しますか?[いいえ]でカシミール3Dを終了する。
(カシミール3Dでデータを利用する場合は、GPSエディタとカシミール3Dのウィンドウでそれぞれデータを保存してください。)

2) テキストエディタで表示するログを切り出す。

(1) テキストエディタ(メモ帳など)でNMEAファイルを開き、3.1)で調べた時刻範囲以外の行を消す。
日時の所在:hhmmss.ssddmmyy   (例は、2011年01月29日09時59分25.00秒)
$GPGGA,005925.000,3626.0794,N,14025.4177,E,1,08,0.00,24.2,M,00.0,M,,*57
$GPRMC,005925.000,A,3626.0794,N,14025.4177,E,0.00,0.00,290111,,*0E
世界協定時刻(UTC:Coordinated Universal Time)で記録されている。これに9時間加えると日本標準時になる。

(2) 名前を付けて保存する。その際、拡張子を.nmeaにする。

※ もし、日時の順に行が並んでいない場合は、日時を修正する。順に並んでいないと、VDS for GPSで速度が表示されない。


4.Google Earthで軌跡、高度、速度を表示する。

1) Google Eathで[ツール][GPS]をクリック

2) GPSインポート画面で[ファイルからインポート]、[トラック]のみインポート、[KMLトラック][KMLラインストリング]を出力、[標高を地面の高度に合わせる]のチェックを外し、[インポート]をクリック、GPSのNMEAファイルを開く。[OK]をクリック

3) サイドバーの場所で[保留][gps GPSデバイス]の[+]をクリック

4) [Tracks]の[+]をクリック

5) 一番下の[+]をクリック

6) [Path]を右クリック、[プロパティ][標高][パスを地面に延長]にチェックをいれる、[スタイル、色]範囲を[枠線]にする

7) サイドバーの[Point]のチェックを外す

8) サイドバーの[Tracks]の下の[A]に似たアイコンを右クリック、[高度プロファイルを表示]をクリック


5.AviUtlで動画をカット編集する。

GPSの軌跡、速度を表示する部分の動画を切り出します。

0) AviUtlのキーフレーム移動キーの設定
再圧縮無しのカット編集を楽にする為、以下の設定をします。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1245262547(外部リンク)

1) AviUtlのウィンドウで[ファイル]-[開く]で撮影した動画ファイルを読み込む

2) スライダをカット開始点に移動

3)[Shift]+[<-|->]でカット開始点をキーフレームに移動し、キーフレームを残す方向にカーソルで1フレーム分カット点を移動後、[<|]をクリック

4)スライダをカット終了点に移動

5)[Shift]+[<-|->]でカット終了点をキーフレームに移動し、キーフレームを残す方向にカーソルで1フレーム分カット点を移動後、[|>]をクリック

6)[編集]-[選択範囲のフレーム削除]

7)[AVI出力]-[ビデオ・オーディオ共に再圧縮無しをチェック]、フィル名を入れて[保存]


6.VDS for GPSの画像合成

1) 下記URLに従い、画面の合成設定をします。
http://park.geocities.jp/maplusconv/vsd_filter_gps.html(外部リンク)

2) [ファイル][AVI出力]で、できるだけ高画質の設定で保存します。AviUtlの拡張編集で使う場合は、同時に[音声をWAV出力]をチェックし、音声ファイルも書き出しておきます。
[ビデオ圧縮無し]、[オーディオ再圧縮無し]にした場合、キーリモコン型カメラCX311/#7/V3.01のファイル(640x480/20fps/3674kbps/24bit/XVID)でサイズが約40倍になりました。


7.AviUtlでの編集操作例

1)新規プロジェクトの作成

(1) AviUtlのウィンドウの[設定]-[拡張編集の設定]で拡張編集ウィンドウを開く。

(2) 拡張編集ウィンドウの中央を右クリックし、[新規プロジェクトの作成]をクリック。

(3) 新規プロジェクトの作成ウィンドウで、画像サイズ、フレームレート、音声レートを設定し、OKをクリック。

2)静止画の読み込み
タイトルなどに使う静止画を配置します。

(1) 拡張編集ウィンドウで静止画を読み込みたいレイヤー時刻の付近を右クリック。

(2) [メディアオブジェクトの追加]-[画像ファイル]で画像ファイルウィンドウを表示。

(3) 参照ファイルをクリックし、静止画を指定。

(4) 青いバーで示される静止画の位置や長さをマウスでドラッグして調整。

3)動画の読み込み

(1) 静止画と同様に[メディアオブジェクトの追加]で[動画ファイル]を選択して、読み込む。この状態では、音声は無しになる。

(2) 静止画と同様に[メディアオブジェクトの追加]で[音声ファイル]を選択して、6.で保存したWAVファイルを上記動画の直下のレイヤーに読み込む。

(3) 音声ファイルのウィンドウで[動画ファイルと連携]をチェックする。

4)動画のカット編集
動画の不要な部分を削除します。但し、拡張編集では映像と音声をそれぞれ操作する必要があるので、5.項の方法で予め素材をカット編集しておいた方が楽です。

(1) 拡張編集ウィンドウの上部目盛で、カットの区切り点付近を左クリック。

(2) カーソルキー、ページアップダウンキー、でカット開始点を微調。

(3) 動画タイムラインの赤い線上を右クリックし、[中間点を追加]。

(4) 音声タイムラインの赤い線上を右クリックし、[中間点を追加]。

(5) カーソルキーでカット開始点を微調。

(6) 動画と音声をそれぞれクリックし、カーソルキーを左右移動して、同じフレームで選択範囲が変わることを確認。

(7) 拡張編集画面の逆三角で表示されている中間点を右クリックし、[中間点で分割]を押す。動画と音声の両方を分割する。

(8) 削除したいタイムラインを右クリックし、[削除]を押す。動画と音声の両方を削除する。

(9) 動画と音声のタイムラインをドラッグ移動して、隙間を詰める。

※ 拡張編集では、キーフレームが探せません。

※ 拡張編集ではなく、AviUtlの[ファイル]-[開く]で、予め動画だけカット編集した方が良いかも知れません。キーフレームが探せるので、再圧縮無しで編集できます。

5)音量の調整
空撮画像は風切り音などが大きいので、音量を下げます。また、フェードイン、フェードアウトを設定します。

(1) 動画のカット編集と同じやり方でフェードイン/アウトの位置に中間点を設定する。

(2) タイムラインのフェードイン/アウトしたい部分をダブルクリックする。

(3) 音声ファイルのウィンドウで、[音量]をクリックし、[直線移動]をクリック。

(4) 左側の音量を0/15、右側の音量を15/0に設定する。

6)文字の追加

(1) 静止画と同様に[メディアオブジェクトの追加]で[テキスト]を押す。

(2) テキストウィンドウの下の空白部に、表示するテキストを入力する。

(3) 拡張編集ウィンドウでテキストがある時刻の空白を左クリックすると、AviUtl画面にテキストが表示されるので、テキストをドラッグして、位置を整える。

(4) テキストウィンドウの各種設定を好みの表示に設定する。

7)シーンチェンジ効果
静止画や動画の切り変わり目を重ねておくと、シーンチェンジに効果をつけることができます。

(1) 動画を重ねた切り変わり目で空いているレイヤーを右クリック。

(2) [フィルターオブジェクトの追加][シーンチェンジ]を選択。

(3) シーンチェンジウィンドウで[ワイプ(円)]を選択。

(4) 拡張編集のシーンチェンジを入れた時刻付近を左クリックし、カーソルキーで効果を確認する。

8)音声の追加
静止画部分にBGMを入れます。使用するBGMは使用制限に問題が無いものにします。

(1) 静止画と同様に[メディアオブジェクトの追加]-[音声ファイル]を押し、WAVファイルを読み込む。

(2) フェードアウト開始点で上部目盛を左クリック。

(3) フェードアウト開始点の音声タイムライン部分を右クリックし、[中間点を追加]する。

(4) タイムラインのフェードイン/アウトしたい部分をダブルクリック。

(5) 音声ファイルのウィンドウで、[音量]をクリックし、[直線移動]をクリック。

(4) 左側の音量を100、右側の音量を0に設定する。

9)後の余白のカット
動画をカットして詰めると、後にできた余白が黒画面になります。
拡張編集画面で右クリック、[範囲設定]-[最後のオブジェクト位置を最終フレーム]
別の方法:AviUtlの方のウィンドウで範囲選択して削除します。

※ 以下のCODECを用いた出力に関する記述は古いので、ネットで最新情報を検索してください。例:AviUtlの易しい使い方(外部リンク)[2016/10/10]

10−1)MP4出力(拡張x264出力、1Passの例)

(1) [ファイル]-[プラグイン出力]で[拡張 x264 出力(GUI)Ex]をクリック、ファイル名を入力。

(2) [ビデオ圧縮]をクリック。

(3) X264の所在を設定。音声エンコーダで [NeroAacEnc]を選択し、NeroAacEnc.exeの所在を設定。mp4box.exe、tc2mp4mod.exeの所在を設定。

(4) [シングルパス - 品質基準VBR(可変レート)]、品質[23]、[AAC-LCビットレート指定]、[128]kbps

(5) [拡張 x264 出力(GUI)Exのダイアログ]で[OK]をクリックする。

(6) 拡張 x264 出力(GUI)Exのファイル選択ダイアログ]で[保存]をクリック。

※ x264guiEx : http://rigaya34589.blog135.fc2.com/(外部リンク)から左下のカテゴリーの[x264guiEx][ダウンロード]。x264guiEx.auo、x264guiEx.ini、x264guiEx_stgフォルをAviUtl.exeのフォルダに入れる。

※ x264 : http://x264.nl/(外部リンク)で[encoder (x264.exe):]の[32bit 8bit-depth]か[64bit 8bit-depth]をダウンロード、x264.exeをAviUtl.exeのフォルダに入れる。

※ neroaacenc : http://www.nero.com/jpn/technologies-aac-codec.html(外部リンク)のダウンロードをクリック。書庫のwin32内のファイルをAviUtl.exeのフォルダに入れる。

※ mp4box : http://www.videohelp.com/tools/mp4box(外部リンク)で[Download (direct link)]をダウンロード・展開し、*.dllとMP4Box.exeをAviUtl.exeのフォルダに入れる。

※ tc2mp4mod : http://vfrmaniac.fushizen.eu/OtherStuff/(外部リンク)で[tc2mp4Mod20080617.7z]をダウンロード・展開し、tc2mp4Mod.exeをAviUtl.exeのフォルダに入れる。

※ lameを使う場合 : http://www.rarewares.org/mp3-lame-bundle.php(外部リンク)からダウンロード・展開し、lame.exeをAviUtl.exeのフォルダに入れる。

10−2)AVI出力(Xvid、1Passの例)

(1) [ファイル]-[AVI出力]でファイル名を入力。

(2) [ビデオ圧縮]で[Xvid MPEG-4 Codec]を選択し、[設定]をクリック。

(3) [Load defaults][OK]をクリック。([Profile@Level]=[(unrestricted)]、[Encoding type]=[Single pass]、[Target quantizer:]=[4.00]、[Quality preset]=[Gneral purpose])

(4) [ビデオの圧縮]ダイアログで[OK]クリックする。

(5) [AVI出力ダイアログ]で[オーディオ圧縮][MPEG Layer-3][44.100kHz,ステレオ 15 KB/秒]、[OK]をクリックする。

(6) [AVI出力ダイアログ]で[保存]をクリック。

※ Xvid video codec : http://www.xvid.org/(外部リンク)から左上の[get the latest version for the Xvid...][Xvid for Windows][Download]

※ MPEG Layer-3 codec : http://www.rarewares.org/mp3-lame-dshow-acm.php(外部リンク)で[LAME 3.98.4 ACM codec]をダウンロード、.infファイルを右クリックし、[インストール]

10−3)AVI出力(DivX、2Passの例)

(1) [ファイル]-[AVI出力]で1パス目のファイル名を入力。

(2) [ビデオ圧縮]でDivXを選択し、[設定]をクリック。

(3) [Home Theaterプロフィール]、[エンコーディングプリセット]8、[ビットレート]3000kbpsに設定。

(4) マルチパス、初回のみ、[OK]-[OK]-[バッチ登録]をクリックする。

(5) 同様に、2パス目を違うファイル名で設定し、[マルチパス、二回以上]を選んで、[バッチ登録]する。

(6) [ファイル]-[バッチ出力]-[開始]をクリック。

※ DivX video codec : http://www.divx.com/ja(外部リンク)から[DIVXソフトウェアをダウンロード]コーデックのみインストール

11)プロジェクトの保存
[ファイル][編集プロジェクトの保存]でプロジェクトを保存しておくと、後で[ファイル][編集プロジェクトを開く]で、AviUtlの編集状態を呼び出すことができます。

■ アナログビデオカメラのVGA化
まだFPVではアナログ方式が主流ですが、レコーダの記録はデジタルです。私が所有しているFPV用のカメラは、NTSCとPAL方式の2種類です。この画像をPCで一般的な640x480に変換する方法を試行錯誤しています。

◆ NTSC
NTSCの画素数は720x480です。ちなみにフレームレートは30fpsです。
画素のアスペクト比は11:10です。
縦は480ですので変更不要です。
横については、AviUtlの拡張編集のフィルタの基本効果の拡大率を使用して、Xを10/11=90.91%にします。
720*10/11=654.5なので、654.5-640=14.5ピクセル横が余ります。この部分ははみ出ますが、AviUtlでははみ出た部分はカットされるので、そのまま放置でOKです。

◆ PAL
NTSCの画素数は720x576です。ちなみにフレームレートは25fpsです。
画素のアスペクト比は11:12です。
縦については、AviUtlの拡張編集のフィルタの基本効果の拡大率を使用して、Yを480/576=83.33%にします。
正方画素にするためには横を12/11倍する必要がありますので、Xを83.33%*12/11=(480/576)*12/11=90.91%にします。

720*((480/576)*12/11)=654.5なので、654.5-640=14.5ピクセル横が余ります。この部分ははみ出ますが、AviUtlでははみ出た部分はカットされるので、そのまま放置でOKです。

◆ 無効画素
ところで、FPV用のアナログカメラをレコーダで記録した画像には、全画素映像が映っているわけではなく、周囲に映像が無い黒い部分があります。よって、上記設定をしても若干上部に黒い部分が残ります。
これを消すには、画像全体を若干拡大して、Y方向にシフトすればOKです。

無効画素の概略の数値です。(有効な画素でも周辺は圧縮ブロックの関係で劣化しているので、これを無効とするなら、これよりさらに無効ピクセル数が5ピクセル程度多くなります。)
NTSC:上7、下2、左7、右5
PAL:上14、下2、左10、右6

これを640*480の枠外に出すためには、以下のように拡大移動すればよいと思われます。
NTSC:480/(480-(7+2))倍、Xoffset=(5-7)/2=-1、Yoffset=(2-7)/2=-2.5
PAL : 480/(480-(14+2))倍、Xoffset=(6-10)/2=-2、Yoffset=(2-14)/2=-6

◆ まとめ
整理すると以下のようになります。

NTSC
- Xmag=480/(480-(7+2))*10/11=92.65%
- Ymag=480/(480-(7+2))=101.91%
- Xoffset=(5-7)/2=-1
- Yoffset=(2-7)/2=-2.5

PAL
- Xmag=480/(480-(14+2))*(480/576)*12/11=94.04%
- Ymag=480/(480-(14+2))*480/576=86.21%
- Xoffset=(6-10)/2=-2
- Yoffset=(2-14)/2=-6

AviUtlの拡張編集では、動画ファイルの設定で、オフセットを設定します。動画ファイルの設定の右上の[+]から[基本効果]-[拡大率]を追加して、拡大率を変更します。恐らく拡大率が先に適用されると思うので、オフセットは拡大率分の補正が必要ですが、誤差範囲でしょう。


戻る

2011/11/06 - 2011/02/19