はじめに
現在、Raspberry Piをベースとした、AI CAPTUREという監視カメラシステムを公開中ですが、そこで利用している様々な技術的なトピックをメモ代わりにまとめていきたいと思います。
今回はラズパイ上で動くPythonプログラムを、リモートPC上のVSCodeで開発&デバッグする方法です。
ラズパイ上で動くプログラムを開発する際、Pythonを使用することが多いと思います。
ハードウェアなどの環境に依存しないプログラムであれば、PC上で開発&デバッグしてから、ラズパイ上に載せて動作確認を行う、という流れでも問題ありませんが、ラズパイの環境に依存するプログラムを開発&デバッグするには、PC上での開発はなかなか難しくなります。
このような場合には、開発用PC上のVSCodeからリモートでラズパイに接続して開発&デバッグする環境を作ると大変便利です。
構成
構成は以下のような感じです。
SSH経由で、開発PC上のVSCodeから、ラズパイ上のPythonコードを開いて、開発&デバッグができます。
当然、実行環境はラズパイ上になるので、インストールされているffmpegなどのモジュールへのアクセスや、AI HAT+などのハードウェアへのアクセスを行うプログラムをそのまま開発できるようになります。
環境構築
ラズパイ側
まず、SSHを有効にしていない場合は、SSHを有効にしてください。
ラズパイでは、raspi-configを使うと、SSHの有効/無効を簡単に切り変えられます。
sudo raspi-config
「Interface Options」⇒ 「SSH」と進んで、Enable を選択してください。
SSHを有効にしたら、Pythonをデバッグするために、debugpy をインストールします。
pip install debugpy
当然、Pythonやpipも必要ですが、Raspberry Pi OSにはデフォルトでインストールされています。
これでラズパイ側の準備は完了です!
開発PC側
開発PCには、Visual Studio Codeをインストールしてから、「Remote - SSH」 拡張機能をインストールします。
インストールしたら、Ctrl + Shift + Pでコマンドパレットを開き、Remote-SSH: Connect to Hostを選択します。
~/.ssh/config に記載されたホストの一覧が表示されますので、すでにラズパイを追記済みであれば、そこから選択します。
未設定の場合は、Add New SSH Host... を選択すると、接続先の入力になります。
入力の形式は以下です
ssh [ユーザー名]@[ホスト名またはIPアドレス]
ユーザ/パスワードで接続する場合は、正しくSSH接続ができると、コマンドパレットでパスワード入力待ちになりますので、パスワードを入力してください。
接続が成功すると、VSCodeのFileメニューのOpen Folderを選択すると、ラズパイ上のパス入力になりますので、プログラムを置くワークスペース用フォルダを指定してください。
これで開発環境は構築完了です!
デバッグ時のlaunch.jsonもローカル開発と同じようにdebugpyを指定しておけば、普通にF5を押すだけで、ラズパイ上で実行したPythonプログラムのリモートデバッグができます。
{
"name": "Python: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
}
当然Terminalもラズパイ側のターミナルになりますし、ワークスペース内に作成された出力ファイルなども、わざわざSCPコマンドを打たなくても、VSCoded上で右クリック-> Downloadで取得できます。
