Pythonスクリプト機能の概要¶
Pythonスクリプト機能でできること¶
ChoreonoidのPythonスクリプト機能を用いると、以下のようなことが可能となります。
アイテムの生成・読み込み・配置といったプロジェクト構築作業の自動化
ボディモデルの関節角や位置・姿勢の設定、運動学計算などのモデルに関わる処理
シミュレーションの開始・停止の制御や、シミュレーションと連動した処理の実行
Pythonコンソール上での対話的な操作や状態の確認
Qtのクラスを用いたタイマー処理や独自GUIの構築
これらの機能を活用することで、繰り返し行う作業をスクリプト化して効率化したり、シミュレーションをバッチ的に実行したりすることができるようになります。
機能の構成¶
Pythonスクリプト機能は以下の要素で構成されます。
Pythonバインディング¶
ChoreonoidのC++ライブラリの主要なクラス・関数をPythonから利用できるようにしたPythonモジュール群です。 cnoid というパッケージとして提供され、以下のようなモジュールが含まれます。
モジュール |
内容 |
|---|---|
cnoid.Util |
Utilライブラリに対応するモジュールです。座標変換や補間、シーングラフ、タスク等の基盤となるクラスを含みます。 |
cnoid.Base |
GUIの基盤であるBaseモジュールに対応するモジュールです。アイテムやビュー、プロジェクト管理等のGUI関連のクラスを含みます。 |
cnoid.Body |
Bodyライブラリに対応するモジュールです。ボディモデルやリンク、デバイス等のロボットモデル関連のクラスを含みます。 |
cnoid.BodyPlugin |
Bodyプラグインに対応するモジュールです。ボディアイテムやシミュレータアイテム等のクラスを含みます。 |
cnoid.QtCore / cnoid.QtGui / cnoid.QtWidgets |
Qtライブラリの主要なクラスに対応するモジュールです。タイマーやウィジェット等を利用できます。 |
このほか、プラグインによっては対応するPythonモジュールが提供されるものがあります(cnoid.ODEPlugin、cnoid.MediaPlugin等)。
Pythonプラグイン¶
Choreonoid上でPythonスクリプトを実行するための機能を提供するプラグインです。このプラグインが読み込まれると、Choreonoid内部でPythonインタプリタが起動され、Choreonoidの各機能と連携して動作するようになります。具体的には以下の機能が提供されます。
Pythonコンソール … Choreonoid上で対話的にPythonを実行できるビュー
Pythonスクリプトアイテム … Pythonスクリプトファイルをプロジェクトのアイテムとして管理・実行する機能
コマンドラインからのスクリプト実行 … Choreonoid起動時にコマンドラインで指定したスクリプトを実行する機能
PythonSimScriptプラグイン¶
シミュレーションと連動してPythonスクリプトを実行するための Pythonシミュレーションスクリプト を提供するプラグインです。シミュレーションの開始や終了といったタイミングに合わせてスクリプトを実行させることができます。
Pythonスクリプト機能を利用するための準備¶
Pythonスクリプト機能はCMakeのオプション ENABLE_PYTHON に対応しており、これをONにしてChoreonoidをビルドすることで利用可能となります。UbuntuではこのオプションはデフォルトでONになっています。ビルドにはPython本体(開発用ライブラリを含む)とNumPyが必要です。ビルドオプションの詳細については オプション機能 を参照してください。
Windowsでのビルド方法については、 ソースコードからのビルドとインストール (Windows編) の オプション機能のビルド にあるPythonプラグインの節を参照してください。
なお、上記のオプションが有効な場合、Pythonバインディングに加えて、PythonプラグインとPythonSimScriptプラグインもあわせてビルドされます。
Choreonoid外部のPythonからの利用¶
Pythonバインディングのモジュールのうち、 cnoid.Util や cnoid.Body といったGUIに依存しないモジュールについては、Choreonoidを起動することなく、通常のPythonインタプリタから利用することも可能です。例えばボディモデルのファイルを読み込んで運動学計算を行うといった処理を、独立したPythonプログラムとして記述することができます。
この場合、Pythonモジュールがインストールされているディレクトリ
[Choreonoidインストール先]/lib/choreonoid-x.y/python
を環境変数 PYTHONPATH に追加しておく必要があります(x.yはChoreonoidのバージョン番号です)。インストール先が /usr や /usr/local 以外の場合は、インストール先の直下に生成される setup.bash をsourceすることでもこの設定を行うことができます。
設定ができていれば、以下のようにして通常のPythonからChoreonoidのモジュールを利用できます。
from cnoid.Body import *
loader = BodyLoader()
body = loader.load("SR1.body")
print(body.numJoints)