コマンドラインからのスクリプト実行¶
起動時のスクリプト実行¶
Choreonoidの起動時に、コマンドラインで指定したPythonスクリプトを実行させることができます。拡張子が .py のファイルをコマンドラインで指定すると、そのスクリプトが起動時に実行されます。
choreonoid sample/python/SR1Walk.py
上記の例では、起動したChoreonoid上でSR1Walk.pyが実行され、スクリプトによって構築されたプロジェクトのシミュレーションが開始されます。
--python (短縮形 -p )オプションで明示的にスクリプトファイルを指定することもできます。
choreonoid --python script.py
プロジェクトファイルとの併用¶
プロジェクトファイルと同時に指定することも可能です。
choreonoid project.cnoid script.py
この場合、プロジェクトの読み込み後にスクリプトが実行されるため、プロジェクトに含まれるアイテムを操作するスクリプトを実行できます。
これを利用すると、例えば Pythonスクリプトの記述 で紹介したサンプル StartSimulationAndQuitWhenFinished.py を用いて、以下のようにシミュレーションをバッチ的に実行することができます。
choreonoid project.cnoid sample/python/StartSimulationAndQuitWhenFinished.py
このコマンドは、プロジェクトのシミュレーションを開始し、シミュレーションが終了したらChoreonoidも終了します。
ウィンドウを表示しないヘッドレス実行¶
--no-window オプションを使用すると、Choreonoidはメインウィンドウを表示せずに起動します(このモードの基本については ウィンドウを表示しない起動モード を参照してください)。このモードではメッセージビューへの出力が標準出力に出力されるため、スクリプトによる出力やエラーメッセージ等の実行状況は端末上で確認できます。スクリプトの実行と組み合わせることで、Choreonoidをコマンドラインツールのように利用することが可能となります。
choreonoid --no-window project.cnoid script.py
このようなヘッドレス実行は、例えば以下のような用途で活用できます。
シミュレーションのバッチ実行
プロジェクトを読み込んでシミュレーションを実行し、結果をログや動作データのファイルとして保存して終了する、という一連の処理を全て自動で行うことができます。GUIの描画を行わない分、実行のオーバーヘッドも小さくなります。
多数の条件による繰り返し実行
シェルスクリプト等からChoreonoidを繰り返し起動することで、モデルやコントローラのパラメータを変えながら多数のシミュレーションを自動実行し、結果をまとめて収集するといったことができます。実行条件の受け渡しには環境変数などが利用できます。
モデルやプロジェクトを対象とした処理の自動化
モデルファイルを読み込んで内容の検査や変換、運動学計算等を行う処理をスクリプト化し、通常のコマンドのように実行することができます。
GUIのないリモート環境での実行
計算サーバやCI環境など、ウィンドウシステムのない環境でシミュレーションを実行できます。
ウィンドウを表示しない起動モード で述べているように、ウィンドウシステムが存在しない環境では --no-window を指定しなくても自動的にこのモードに切り替わります。その場合でも、GLVisionSimulatorによる視覚センサのシミュレーションは、EGLを用いたレンダリングによってウィンドウシステム無しで実行することができ、GPUによるハードウェアアクセラレーションも有効となります。カメラ画像や距離画像を使用するシミュレーションも、GUI無しの環境でそのまま実行できるということです。
ヘッドレス実行にあたっては以下の点にも留意してください。
シーンビュー等のGUI上の描画は行われません。GUIの描画を伴う処理(シーンビューの描画結果の取得等)をウィンドウを表示せずに自動化したい場合は、仮想ディスプレイを利用する方法があります。これについては 仮想ディスプレイによるウィンドウを表示しないGUI実行 を参照してください。
あわせて以下のオプションも活用できます。
--start-simulation… 起動時にシミュレーションを自動で開始します。
--test-mode… エラーが発生した時点でChoreonoidを終了します。バッチ処理やテストの自動化に有用です。
例えば以下のコマンドは、ウィンドウを表示せずにプロジェクトのシミュレーションを実行し、シミュレーションが終了したところでChoreonoidも終了します。
choreonoid --no-window project.cnoid sample/python/StartSimulationAndQuitWhenFinished.py
スクリプトをアイテムとして読み込むオプション¶
--python-item オプションを使用すると、スクリプトは起動時に実行されるのではなく、Pythonスクリプトアイテムとしてアイテムツリーに読み込まれます。
choreonoid --python-item script.py
読み込まれたアイテムにはチェックが入った状態となっているので、スクリプトバーのボタンを押すことで実行できます。詳細は Pythonスクリプトアイテム を参照してください。