MATLAB Answers

特定のシェル環境内でMATLABが使いたいです。

3 views (last 30 days)
Kaito Okada
Kaito Okada on 7 Oct 2020
Commented: Kojiro Saito on 27 Oct 2020 at 23:33
私は Parrot 社の ANAFI を操作するための計算ソフトとして MATLAB&Simulink を使用しています。
MathWorks のホームページを参考に通常の状態では Python と MATLAB を連携させることができたのですが、実際に ANAFI を飛行させるためのシェルスクリプト内では作成したプログラムを実行すると「ImportError: cannot import name 'matlab'」となってしまいます。
また、動かしている Linux の使用経験は浅いため MathWorks、Parrot のホームページを見てもいまいち分かりません。
使用しているバージョンは、R2020a (MATLAB)、Ubuntu 18.04 LTS、Python3.6 です。
どのようにすればこの問題を解決できますか。ご返答の方よろしくお願いします。

  4 Comments

Show 1 older comment
Kaito Okada
Kaito Okada on 8 Oct 2020
まず、ANAFI を飛行させるために必要な Python 環境をアクティブにしてから以下のような Python スクリプトを実行しています。
import matlab.engine
print("Start MATLAB")
eng = matlab.engine.connect_matlab()
print( eng.sqrt( 4.0 ) )
上のスクリプトを実行する前に MATLAB のコマンドラインで「matlab.engine.shareEngin」と入力してから実行しています。
※ ANAFI を飛行させるために必要な Python 環境でなければ実行できています。
Kojiro Saito
Kojiro Saito on 8 Oct 2020
Python環境をアクティブにするというのは具体的にどのように行っていますでしょうか?
また、Pythonスクリプトの実行は、ANAFIのPython環境からpython xxx.py のように実行しているのでしょうか?
Kaito Okada
Kaito Okada on 8 Oct 2020
Parrot 社のホームページ ( https://developer.parrot.com/docs/olympe/installation.html ) を参考にしてもらいのですが、ANAFI を操作するには
$ source ~/code/parrot-groundsdk/./products/olympe/linux/env/shell
というコマンドを実行し
(plympe-python3) $
という環境でないといけないという条件があります。
また、Python スクリプトの実行は質問にも書いてある通り「python xxx.py」とターミナルに入力し実行しています。

Sign in to comment.

Accepted Answer

Kojiro Saito
Kojiro Saito on 19 Oct 2020
Edited: Kojiro Saito on 27 Oct 2020 at 23:32
ParrotのSDKで使用するPython Olympe環境で、標準Pythonの環境で入れたパッケージが見られていないようです。
の「Manual dependency installation」のワークアラウンドにあるように、Olympe側のsetenvにmatlabのパッケージが含むディレクトリを追加してみてはいかがでしょうか?
例えばmatlabパッケージが/usr/local/lib/python3.6/dist-packages/matlabにインストールされている場合、Ubuntuのターミナルで
export PYTHONPATH=/usr/local/lib/python3.6/dist-packages/
としてから
echo "export PYTHONPATH=\$PYTHONPATH:~/code/parrot-groundsdk/out/olympe-linux/final/usr/lib/python/site-packages/" >> ~/code/parrot-groundsdk/products/olympe/linux/env/setenv
とするとOlymeのPython環境にPYTHONPATHのディレクトリが追加されます。
UPDATE
別の方法としては、plympe-python3環境でsys.path.appendを使ってカスタムの検索パスを追加するやり方もあります。
ターミナルで(plympe-python3) $に切り替わった後、下記のコマンドを実行するか、Pythonスクリプトに追加することで/usr/local/lib/python3.6/dist-packagesにあるmatlabパッケージを呼び出せるようになります。
import sys
sys.path.append('/usr/local/lib/python3.6/dist-packages')
import matlab

  10 Comments

Show 7 older comments
Kojiro Saito
Kojiro Saito on 27 Oct 2020
無事に解決できて良かったです。
はい、上記3行を実行するPythonスクリプトに追加すれば大丈夫です。
Kaito Okada
Kaito Okada on 27 Oct 2020
分かりました。ありがとうございました。
Kojiro Saito
Kojiro Saito on 27 Oct 2020 at 23:33
回答のほうもsys.path.appendを追加する方法を追加しておきました。よろしければ採用(Accept)ください。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!