13.1.4. スクリプトの実行¶
スタートボタン(接続ボタンの下にある緑色の矢印、または Ctrl+R)は、現在のエディタタブにあるスクリプトを接続中のカメラに送信して実行します。スクリプトの実行中、スタートボタンは実行を停止するストップボタンに変わります。この2つのボタンが、カメラ上でのあらゆる開発の中心となるループです。編集し、実行し、観察し、停止し、また編集する。
このループには重要な点が2つあります。第一に、スクリプトはカメラのRAMに送信されてそこで実行されます。スクリプトを起動してもカメラのストレージには何も書き込まれず、リセットするとスクリプトは消えます。第二に、実行されるのは保存の有無にかかわらず、表示されているそのままの 現在のエディタタブ です。別途アップロードする手順は存在せず、エディタとずれてしまう古いコピーがカメラ上に残ることもありません。
スクリプトの実行中、その print() 出力はシリアルターミナルにストリーム表示され、キャプチャされたフレームはすべてフレームバッファビューアに表示されます。スクリプトが処理されない例外を発生させると、トレースバックがシリアルターミナルに出力され、IDEはエディタを問題の行へジャンプさせます。複数ファイルで構成されるアプリケーションの場合は、まずカメラのドライブから該当するファイルを開きます。
13.1.4.1. スクリプトを永続化する¶
IDEなしで、つまり電源投入時に単独で、現場でカメラにスクリプトを実行させるには、スクリプトを main.py としてカメラに保存します。Tools → Save open script to OpenMV Cam (as main.py) は、現在のエディタタブをその名前でカメラのドライブに書き込みます。その際にコメントを除去して空白を圧縮するかどうかを尋ねます(ファイルは小さくなりますが、読めないコピーが書き込まれます)。そして Tools → Reset OpenMV Cam がカメラを再起動し、保存されたスクリプトで起動させます。この2つを合わせたものがデプロイ手順です。これ以降、カメラはIDEの有無にかかわらず、電源が入っているときは常にあなたのスクリプトを実行します。
リセットされたカメラが保存済みの main.py を実行している間でも、IDEはそれに接続できます。Stop Script on Connect/Disconnect が有効(デフォルト)であれば、接続すると保存済みスクリプトが停止し、制御がエディタに戻ります。
参考
カメラの起動シーケンスにおける main.py の意味、および完成したアプリケーションを編集可能なストレージから完全に移動する方法については スクリプトをファームウェアにフリーズする を参照してください。
13.1.4.2. カメラのドライブ¶
カメラのフラッシュファイルシステム(およびSDカードが挿入されている場合はそのカード)は、ホスト上にUSBフラッシュドライブとしてマウントされます。Tools → Open OpenMV Cam Drive folder でファイルマネージャ内に開けます。ここはスクリプトがインポートまたはロードするライブラリモジュール、モデルファイル、アセットをコピーする場所であり、スクリプトが保存した画像やログを取り出す場所でもあります。ドライブのパスはステータスバーにも表示されます。
スクリプトが作成したファイルは、ホスト上にすぐには表示されません。ホストはドライブをマウントした時点でファイルシステムをキャッシュするため、実行中のスクリプトが保存したスナップショットは、ドライブが再マウントされるまで見えないままです。Tools → Reset OpenMV Cam はドライブを再マウントします。スクリプトが書き込んだばかりのものにアクセスするための手早い方法です。
注意が1つあります。カメラとホストはそのファイルシステムを共有しており、両方から同時に書き込むと破損する可能性があります。ストレージに書き込んでいるスクリプトがない状態でファイルをコピーし、カードを抜く前にはきちんとイジェクトしてください。