ロボットと人工知能の話題がずいぶんと世間を賑わせていますね。
今まで何度もあったブームの振り子が戻ってきただけだよ、という覚めた見方もあると思うのですが、クラウドの技術進化と価格競争で高度な人工知能アルゴリズムを実行するに十分な巨大な計算リソースを誰でも安価に利用できるようになったこと。また、よくできたロボットをとても安価な値段で利用できるようになりそうな背景を考えると、今回はこれまでのブームとは違いが出てきそうな予感もしています。いずれにせよ、この様な機会に技術開発に取り組んでいくのは非常に良いことでしょう。
ロボットと人工知能を組み合わせたシステムを開発するには、一つの問題があります。このブログの筆者自身、研究者時代も含めてかれこれ15年以上人工知能とロボットの世界に関わっているのですが、最終的にロボットの形に落とし込んでいくとはいえ、人工知能部分はソフトウェアであり、ソフトウェアにはバグが付きものであり、デバッグの過程でロボットが何度も壊れます。この様な状況を打開するために、今ではロボットのソフトウェア開発に、物理シミュレーションが多用されています。
OpenHRP(http://www.openrtp.jp/openhrp3/jp/)は産総研が開発した物理シミュレータで二足歩行ロボットやマニピュレーションの実験に良く使われています。gazebo(http://gazebosim.org/)は欧米の研究で良く使われている物理シミュレータです。両シミュレータともプラグイン機構があり、数種の物理シミュレーションコア(ODEなど)を差し替えて利用することができるのが特徴です。
多くのロボットソフトウェア開発では手元で物理シミュレータを動かしつつ、それに接続したソフトウェアを動作させデバッグを進めていき、ある程度動作が安定した時点で実ロボットに接続を切り替えます。現在ではRTMやROSなどのミドルウェア規格に準拠したソフトウェア開発が一般的になっており、ソフトウェア間の接続は容易に切り替えることができます。とはいえ、Web界隈のソフトウェア開発で使われるツールと比較するとその環境は非常に貧弱です。今回弊社ではCI(継続的インテグレーション)を実現するソフトウェアビルドサービスを作成し、公開開始しました。
サービスはLinux軽量コンテナとhrpsys-base(OpenHRPのコアアルゴリズムを利用したコマンドライン指向の物理シミュレーションフロントエンド)を組み合わせて構成されています。
サービスを利用するには、まずgithubレポジトリに「.devrt.yml」というYAML形式のテキストファイルを作成してください。「.devrt.yml」には以下の内容を記述します:
- before_install: ビルド&インストール前に実行するコマンド
- install: ソフトウェアをビルドするためのコマンド
- simulation: シミュレーションの設定
- project: OpenHRP形式のプロジェクトファイル
- init: シミュレーション開始直前に実行するコマンド(テストしたいソフトウェアの初期化や相互接続をここでする)
各コマンドはLinux(厳密にはLinuxの下にぶら下がった軽量コンテナ上)のrootユーザとして実行されます。travis-ciなどを使ったことがある方には分かると思いますが、まったく同じ仕組みです。
以下は、.devrt.ymlファイルの例です。
1 2 3 4 5 6 7 8 9 10 |
|
完全なサンプルは以下のページを参照してください。
https://github.com/yosuke/test-devrtbuild-pa10
.devrt.ymlの作成とレポジトリへの登録が済んだら、以下のページからログインしてレポジトリをビルドサービスに登録してください。
ビルド結果は以下のようなアニメーションgifとして、ブログなどにも貼り付けることができます。
「git submodule」を使って外部レポジトリも参照可能です。以下は、Tokyo Opensource Robotics Kyokaiさんで公開されているNextageモデルを参照した例。
ビルド間でシミュレーションの結果を比較する機能もあります。
http://devrt.tk/build/diff/539561c9bb566033b4042889...539563dcbb566033b404288a
Linux軽量コンテナを使っているため、各ビルドの実行は非常に高速です。公開レポジトリのビルドに関してはフリー(非公開レポジトリで利用したい方についてはお問い合わせください)ですので、お気軽にご利用ください。