2016年5月5日木曜日

motion@Raspberry pi

Raspberry pi 3を購入した大きな理由はmotionの動作がまともになるかもという期待からでした。

どのような現象かといえば、複数のカメラを動作させていると画像が混じってしまうという現象。
実際の画像はこんな感じです。
直感ではスレッド処理で実装が失敗していると思いました。
ハードウェアであればUSBコントローラーがパニックを起こしているとも考えられます。

まぁ四六時中この状態であれば使い物にならないのですが、実際問題としては1日のうちで数分~数十分程度で気づくとこの現象が出ているかなという程度。個人レベルなら我慢できるレベルかな?わかりませんが(笑)

しかし他で話が無いということは設定かたまたま手持ちのカメラとの相性なのかもしれないと色々と考え、システムの動作クロックを変えてみたり、画像のサイズを変えてみたり、カメラの画像フォーマットを変えてみたり、カメラを変えたり色々と調整してみましたが、一向に改善されませんでした。
さらにカメラが古いので別のものを用意してみましたが、変わりませんでした。

そしてpi3の話があり、早速試してみたところ、みごとに期待を裏切り変化はありませんでした。

motionを使って複数のカメラを利用した話は、いろいろなブログでかなり古くから存在しています。Raspberry pi以外のデストリビュージョンで複数のカメラの話でもこのような現象は見かけないので、ソースから適切なコンパイルオプションでビルドすれば治ってしまいそうな話です。

と、なかばあきらめていたところにmotionのガイドのFAQに気になる記述を見つけました。
Multiple Instances for Multiple Cameras
複数のインスタンスであればスレッドの不具合は出なくなるので、デバイスレベルでパニックを起こしていなければこれで解決できるはずです。(以前はシングルインスタンスでスレッドを特定のコアに処理を割り当てる方法を探しましたがうまくゆきませんでした)

Linuxはよくわかりませんがとりあえず頑張ってみます。

やってることは複数のインスタンスとするためにinit.dやら設定ファイルを切り分けることです。説明では/usr/bin/motionのシンボリックリンクを作成することになっていますが、Raspberry pi 3ではシンボリックリンクを作成すると実行ファイルで排他制御を行っているようで見事に
Starting motion detection daemon: motion/usr/bin/motion already running.
と言われて複数のサービスが起動できませんでした。仕方がないので実行ファイルを複製しました。

なんとなく設定が完了したのでこれで様子を見てみます。

Raspberry pi 3の発熱が結構あるので動作確認ができたらRaspberry pi 2に戻そうかなと思っています。

0 件のコメント:

コメントを投稿