Raspberry Pi上で動くLabVIEWプログラムからPythonを呼び出す

その他

スポンサーリンク

この記事では、Raspberry Pi上で動くLabVIEWプログラムからPythonを呼び出す方法を解説しています。

Raspberry Pi自体にPythonがインストールされていても、LabVIEWからPythonを呼び出すのは一筋縄ではいかず、ちょっとした準備が必要になります。

決まったコマンドを入力するだけ、ではあるのですが、LabVIEWからの呼び出し方含め実例を紹介していきます。

なお、今回の記事で紹介している方法はRaspberry Pi 4Bで確かめていますが、バージョンによってはコマンドが異なる可能性があるようです(未検証)のでご注意ください。

操作の具体的な内容やプログラム実行の手順は動画でも公開しているのでこちらもよければご覧ください。

スポンサーリンク

Raspberry PiからPythonを呼び出す

そもそもRaspberry Piを用意するときにはRaspberry Pi OSが入っている状態かと思いますが、このOSイメージにはPythonがあらかじめ含まれています。

OSイメージのバージョンによって、含まれているPythonバージョンも変わるかもしれませんが、通常/usr/bin/pythonのパスに見つかります。

Raspberry Pi上でコマンドプロンプトを操作、あるいは特定のPythonを実行できる環境から操作して、特定のスクリプトを実行することができるのであれば、LabVIEWで制御したRaspberry Piに対し、viからPythonを呼び出すことも簡単・・・と思いきや、実際はPythonに直接アクセスすることができません。

Raspberry Piへopen sshをインストールするなどの準備を行う

直接Pythonにアクセスできないのであればどうするか、その答えの一つ(他に答えがあるのかも知りませんが)が、ssh経由でアクセスするという方法です。

私自身よく背景を理解して使っているわけではないので詳細は説明しませんが、ssh経由でPythonにアクセス、実行するようにすれば、Raspberry Pi上で動作するviのシステム実行関数によってPythonスクリプトを実行することが可能です。

ただしこれには準備が必要です。

その準備は、公式のページに書いてあります。

chroot SSH Trick [LabVIEW MakerHub]

上記資料にある内容を実際に行った様子を紹介します。

コマンドの入力はRaspberry Pi上で行いますが、今回はWindowsのPCでRaspberry Piと同じネットワーク環境にあるものからPowerShellでアクセスし、ここからコマンドを順番に実行しました。

PowerShellでのアクセスには

ssh <Raspberry Piユーザ名、デフォルトなら「pi」>@<Raspberry PiのIPアドレス>

で行います。

まずはsudo schroot -r -c lvです。

opkg update

続けて

opkg install openssh-ssh

exit

続けて(以下の画面では一度PowerShellから抜けていますが、抜ける必要はないと思います)

ssh-keygen -t rsa

このコマンドを実行してもし何か聞かれても空欄のままEnterします。

いつ次のコマンドを入力するかは下の画面例を参考にしてください。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

続けて

sudo mkdir /srv/chroot/labview/root/.ssh

sudo cp ~/.ssh/id_rsa* /srv/chroot/labview/root/.ssh/.

続けて

sudo schroot -r -c lv

ssh root@localhost ls

この後に、ローカルホストのパスワード入力を求められる画面が出ました。

私の場合、Raspberry Piに設定したパスワードを入力しても弾かれ、3回間違えて強制的に退出(exit)させられてしまいましたが、その後結局Pythonの呼び出しは行えているので、この部分の操作は必要ないのかもしれません。

なお、上記の一連のコマンドを実行して、最終的にRaspberry Pi上のviからPythonスクリプトを呼び出せることは実機で確認済みですが、Raspberry Pi 5だと同じコマンドでは通用しないという情報がありました。

私自身は試していないのですが、もしRaspberry Pi5を使用していてうまくいかない場合には以下のフォーラムを参考にしてみてください。

Issue with Chroot Trick on Raspberry Pi 5
Hi  I have been working through the chroot trick described in:     step 1: I can install OpenSSH to the chroot successfu...

システム実行関数での呼び出し方

以下では、ユーザー名が「pi」であるRaspberry Pi環境にてsshでPythonにアクセスし何か特定の処理を行わせる例を紹介します。

Raspberry Pi上で動作するviでシステム実行の関数を使用し、

ssh pi@localhost “<python.exeのパス> <実行するPython スクリプトのパス> <引数(あれば)>”

といった形で標準入力を行います。

以下のプログラム例では、それぞれの入力を文字列や引数に対して数字を指定するために、文字列にフォーマット関数を使用しています。

以下は実行例です。

使用したPythonスクリプトは図に載せた通りで、これをRaspberry Pi上の特定の場所(下の例だと/home/pi/Desktop/pytest)に配置し、あとはpython.exeがあるパス(通常だと/usr/bin/pythonだと思います)の指定と引数の指定を行って実行します。

結果をシステム実行の関数で得る場合には文字列として受け取るので、Pythonスクリプト側ではprint関数を使用して結果を返すようにします。

本記事では、Raspberry pi上で動くLabVIEWプログラムからPythonを呼び出す方法を紹介しました。

Raspberry PiをPython単体で制御することももちろんできますが、LabVIEWで既に組んだプログラムに一部Pythonの機能を取り入れる場合などに役立ててもらえればと思います。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました