Choreonoidとは

Choreonoid(コレオノイド)は、産総研の中岡慎一郎が中心となって開発している、オープンソースのロボット用統合GUIソフトウェアです。標準で動作振り付け機能や動力学シミュレーション機能を備えています。機能を追加していくことも可能で、「ロボット用GUIアプリケーション開発フレームワーク」という側面も持っています。

Choreonoidは2006年より開発を開始し、2010年10月に プレスリリース を行った上で、2011年11月より本サイトでの一般への配布を開始しました。 このページでは、Choreonoidの概要を説明します。

動力学シミュレータとしてのChoreonoid

Choreonoidはロボット用の動力学シミュレータとして使用するための機能を備えています。

物理エンジンは産総研では開発されたAISTエンジンを標準で備えています。これは拘束条件法に基づくもので、二足歩行ヒューマノイドロボットHRPシリーズの研究開発でも用いられてきたものです。また、Choreonoidは他の物理エンジンを組み込むことも容易な設計としており、そのサンプルとして Open Dynamics Engine (ODE) や Bullet Physics Library, nVidia PhysX といったエンジンも利用可能です。シミュレータ全体の実行効率についても十分考慮した設計としており、各エンジンの性能を最大限に引き出すことが可能です。

仮想ロボットと制御プログラムとの接続は、多様な形態で行うことが可能です。現在のところ、共有ライブラリを用いる独自形式の制御プログラムや、RTミドルウェアのRTコンポーネント、およびOpenHRP3のインタフェースに基づく制御プログラムと接続することが可能となっています。これら以外の制御プログラムとの接続形態にも、プラグインを記述することでも対応可能となっています。

カメラやレーザーレンジセンサといった視覚系センサのシミュレーション機能も備えており、それらのセンサの情報を利用して動作するロボットのシミュレーションも可能となっています。これはシミュレータのオプション機能として実装されており、他にも多様なオプション機能を追加することが可能な設計となっています。

../_images/hrp2-plant-simulation.png

ヒューマノイドロボットHRP-2改がプラント内でバルブを回すシミュレーションの例

動作振り付けツールとしてのChoreonoid

Choreonoidは動作振り付け機能も有しており、3DCGによるロボットモデルのアニメーション表示を行いながら、キーフレーム設定を中心とした動作生成のための各種機能を用いて、ロボットの多様な動作を自由に作成することが可能です。この機能は2足歩行型ロボットにも対応しており、脚を用いたステップ等を含む動作についてもロボットが転倒せずに実行可能な動作となるよう、システムが自動で身体バランスを補正します。これにより、ヒューマノイドロボットの脚を含む全身動作についても、CGキャラクタアニメーションと同様の感覚で作成することが可能となります。この機能を用いて作成した動作の例については、 振り付け機能の応用例 のページをご覧ください。

../_images/kickmotionsample.jpg

Choreonoidを用いて作成したヒューマノイドロボットHRP-4Cの動作例

Choreonoid開発の原点はこの機能にあります。名前もこの機能に由来しており、”Choreograph”(振り付けをする)と”Humanoid”(ヒューマノイド)を組み合わて、「ヒューマノイドロボットを振り付けする」というイメージで命名されたものとなっています。

Choreonoidフレームワーク

Choreonoidは、「ロボットのための統合GUIアプリケーション開発フレームワーク」という側面も持っており、これによって上記の機能にとどまらない活用も可能です。Choreonoidのこの側面を表現する際には、「Choreonoidフレームワーク」という用語を使います。

そもそも、シミュレーションや振り付けを行うにあたっては、

  • ロボットの幾何学・運動学・動力学や動作データに関する各種モデル計算
  • ロボットの状態や動作データを可視化・入力・編集する各種GUI
  • 3DCGによるロボットモデルのレンダリング
  • 各種データの統合的な管理とファイル処理
  • 実機ロボットとの接続

といった、内部処理からGUIにわたる多様な機能が必要となります。そして、これらの機能の多くは、他の種類のロボットアプリケーション、例えば動作計画や遠隔操作といったアプリケーションにおいても必要となるものです。さらに、シミュレーション、振り付け、動作計画、遠隔操作といった各アプリケーションの間で密な連携を行うことで、より高度な応用も可能となってきます。

しかしながら、従来ロボットアプリケーションの多くは、それぞれ独自に同様の機能を実装していました。それらの機能を充実させるためには多大な労力が必要となりますが、これはロボットのハードウェアやロボットを動かすための各種アルゴリズムの研究開発においては必ずしも本質的ではない部分であり、場合によってはそれらハードウェアやアルゴリズムの研究開発の負担にもなりかねないものです。逆にそのような背景から、特にアカデミックなロボットの研究開発においては、上で挙げたような機能はプロトタイプ的な簡易な実装で間に合わせることも一般的です。このような状況は、研究開発の本質に出来る限り集中しつつも、その成果を広く活用していくにあたって、望ましいものではありません。

Choreonoidの開発は、シミュレーションや振付といった個々の機能を実現するだけでなく、そのGUIを含む基盤部分がロボットアプリケーションフレームワークとして汎用的に活用可能となることを意識して行いました。その結果、Choreonoidは汎用的な基本機能の上に任意の機能をプラグインとして追加可能な設計としており、シミュレーションや振り付けの機能もプラグインとして実装されています。そしてプラグインは他のプラグインとも連携可能となっており、既存の機能を活用しながらさらに多くの機能を拡張していくことが可能です。

なお、ロボット用ソフトウェアの共有化や連携を促進するフレームワークという意味では、OpenRTMやROSでみられるように、各種機能のコンポーネント化が活発に取り組まれてきています。ただし、それらは基本的に、GUIを中心とするアプリケーション上位層に焦点をあてたものでありません。そして、そのような領域を扱うフレームワークとして、Choreonoidの存在意義があるのではないかと考えています。

対応プラットフォーム

Choreonoidは最新版のバージョン1.5において以下のオペレーティングシステム(OS)に対応しています。

  • Ubuntu Linux
  • Windows

当方で動作を確認しているバージョンは、Ubunt Linuxについては14.04と16.04、WindowsについてはWindows 7, Windows 8 (8.1), Windows 10 となっています。32bit, 64bit のどちらにも対応しています。

Choreonoidのソースコードはポータビリティを考慮して記述されていますので、上記以外のOSに関しても動作する可能性があります。Mac OS に関しては、Choreonoidのバージョン1.4までは動作確認をしていたのですが、現在はしていません。動作させるためには多少の修正が必要だと思われます。

ハードウェアに関しては、昨今の一般的なPCであれば概ね問題なく動作します。必要なスペックについては、やりたいことにもよりますが、以下を参考にしてください。

  • CPU
インテル Core i シリーズ程度のマルチコアCPUを備えていれば、多くの機能を問題なく利用可能です。もちろん、シミュレーション等を高速に行うためには、より高速なCPUであるに越したことはありません。コア数に関しても多いほうが高速に処理できる可能性は高まりますが、それを十分に活かせない機能もありますので、一概には言えません。
  • メモリ
扱うモデルやシミュレーション、動作データにもよりますが、それらの規模が特別大きいのでなければ、OSが快適に動作する程度のメモリがあれば十分かと思われます。規模が大きい場合はそれに見合ったメモリを用意してください。
  • GPU
ハードウェアアクセラレーションによるOpenGLが利用可能であることを前提としています。ビデオチップやOpenGLのドライバによってはロボットモデルの3DCG表示やアニメーションがスムーズでない場合があります。ただし最近ではインテルCore iシリーズに内蔵のGPUも十分な性能を備えており、そちらでも概ね問題ありません。

ライセンス

Choreonoidはオープンソースソフトウェアとして開発されており、そのライセンスはMITライセンスとしています。(バージョン1.4まではLGPLとしていましたが、バージョン1.5からより制限の緩いMITライセンスに変更しました。)

基本的には、利用や配布、改変等は無償で自由に行うことが可能です。改変したものの配布や販売についても、ライセンスの条件に従って著作権表示を行えばOKとなっており、その際必ずしもソースを公開する必要はありません。このように、非常に自由度の高いライセンスとなっています。