ラズベリーパイのカメラモジュールを複数構成にする時に使用した 「Multi Camera Adapter Module(Arducam製)」の挙動について知見を共有したいと思う。ただし結果から言うと原因特定まではいかなかった。
#自己紹介
現在、沖縄県の沖縄市にあるStartupCafe Kozaという施設でエンジニアとしてシステム開発に関わっています。
現在、開発中のシステム
簡単に言うと、3Dモデル作成システム。撮影対象者(人や物)の周りを15本の柱に取り付けた、ラズベリーパイ3 (60台)(以下ラズパイと表記)から120枚の静止画を一斉撮影し、撮影したデータをサーバーにFTPで送信する。その後は、市販の3D作成ソフトにアップロードするだけで3Dモデルが出来上がる。サーバー側を管理するコード「server.py」とラズパイ側を管理するコード「cam.py」はpythonのFlaskを使用している。
#複数カメラ構成
1柱に4台のラズパイが設置されており、下の位置の2台には、複数カメラ構成にするため、 「Multi Camera Adapter Module」を使用して3台若しくは4台カメラ構成を考えている。
上の位置の2台はカメラモジュールのみの1台構成である。
#開発中に起きた現象とそれに対する対策
Multi Camera Adapter Module単体では4台カメラ撮影ができたが、柱に設置して一斉撮影すると撮影ができないラズパイとできるラズパイがあり、また起きた現象も下記のように異なっていた。
1. ラズパイ自体にSSH接続できない
対策(1) -> SDが壊れていると仮定して再度SDにデータ上書きして再利用した。
結果(1) -> SSH接続できるようになった。(SDが壊れていた可能性が高い。)
2. Multi Camera Adapter Moduleでの撮影ができない場合がある
対策(1) -> カメラモジュールを交換したり、ケーブルの接続を再確認した。
結果(1) -> うまく撮影できるのもあれば、変化なしのもあった。
対策(2) -> 撮影する時に4台分の電流が足りなくなっていると仮定してカメラ台数を減らしてみた。
結果(2) -> 4台から3台に減らしたらうまくいのもあった。
3. FTPの送信がうまくいかない場合がある
対策(1) -> 撮影する写真データの容量を小さくした。(2592px-1944px から 259px-194px)
結果(1) -> 変化なし。
対策(2) -> ラズパイの処理(撮影やFTP送信)が集中し過ぎてシステムがダウンしていると仮定して、処理分担のために、各撮影処理やFTP送信処理の前段にSLEEP関数を設けて、ランダムな秒数(1-30s)処理を一旦ストップさせる。
結果(2) -> うまく撮影できるのもあれば、変化なしのもあった。
上記対策でもまだ、
2. Multi Camera Adapter Moduleでの撮影ができない場合がある
3. FTPの送信がうまくいかない場合がある
は発生する。
#重要な気づき
・3台、4台撮影しているカメラのうち、1個だけカメラLEDの光が小さいのに気づいた。
・2台撮影なら全台数うまく撮影できた。
#新たな仮定と対策と結果
現在の、電源アダプター(110V〜240V 2.4A)ではMulti Camera Adapter Moduleに流れる電流供給量が足りていないのではと仮定して下記の給電方法を試す。
1. 電源アダプター(5V-3A)でマイクロUSB経由の給電
2. 電源アダプター(5V-4A)でマイクロUSB経由の給電
3. 電源アダプター(5V-4A)でラズパイのピンへの直接給電
上記対策でも撮影できる場合があったり、撮影できない場合もあり、安定化しない。そもそも、当初の電源アダプターと同じ現象なので、電源供給問題ではないかもしれない。
#重要な気づき2
自分では、どうしようもなく、先輩エンジニアに細かいログ等を調査してもらうと、うまく撮影できていないラズパイでは、撮影中にEthernetの何かがうまくいかなくなっているようだ。キーボードからの入力も受け付けないので、ネット接続ができなくなっているようだ。
#結局
何が原因かはまだ判明しておらず、2台撮影までは安定するので、Multi Camera Adapter Moduleを使用する場合は2台として、ラズベリーパイの台数を増やして開発を続ける事にする。ラズベリーパイやMulti Camera Adapter Moduleの販売店にも質問してみたけど、有効なアドバイスはもらえなかった。
質問回答のやりとりはこちら参考
今後、新たな発見があれば知見を共有します。