Blender のロボット工学プロジェクト関連のニュース

投稿日時 2010年04月26日 | カテゴリ: 応用

元記事:Some news from the Blender for Robotics project - BlenderNation

コミュニティレポーターによる記事です。

1年少し前、私たちは Blender をロボット工学シミュレーションに使用している例を報告しました。Severing Lemaignan氏は親切にも私たちに素晴らしい更新記事を送って下さいました。

Severin Lemaignan氏曰く、

こんにちは BlenderNation!

1年と少したち、Blender for Robotics にいくつか更新がありました! 過去数ヵ月、舞台裏では多くのことが起こりました。Blender for Robotics は複数のヨーロッパのロボット工学研究所からの、Blender ゲームエンジン上に、新しい汎用シミュレータなどのロボット研究家のためのツールを構築するための活動です。

K.U.Leuven で始まった開発の最初の期間では、Benoit Bolsee氏が去年6ヶ月間、ゲームエンジンを考慮した IK Solver のリライトのために作業され、その結果、iTaSC と呼ばれるブランチになりました。そのデモ動画が下です。



新しい iTaSC IK Sover と外部のターゲットが、Blender ゲームエンジン(BGE)内でリアルタイムに使用できる様子。円錐はロボットが到達・回転しようとするターゲット。動画の最初のパートではターゲットは Ipo アクションで移動し、次のパートではこれがキーボードで操作されています。ロボットの動作は完全に自動です。







この動画では Blender 内のインバースキネマティックアルゴリズム、iTaSC でコントロールされた複雑なロボットのリアルなモデルを披露しています。各腕には一つずつ、頭部にも一つターゲットがあります。これらのターゲットはループして動いており、ロボットは自動的に追従します。
最初の2サイクルは、Auto StepオプションをONにし、Max Step をデフォルトの60msにしています。これは大きすぎ、ロボットは振動しています。
次の2サイクルでは、Max Step を40msにしています。これは安定するのに十分ですが、動作は完全にスムーズではありません。
最後の2サイクルでは、Fixed Stepオプションを使用し、フレーム毎に4ステップ(=10ms ステップ)にしています。動作はスムーズですが、より CPU リソースを消費します。


その後、2009年の初頭には、二つのフルタイムのエンジニア、ONERA の Nicolas Lassabe氏と LAAS-CNRS の Gilberto Echeverria氏(ともにツールーズ)が自作のシミュレータの作業を開始されました。私たちはこれを OpenRobot シミュレータ(ORS)と呼んでいます。

ORS は汎用(ロボット工学のフィールドでのシミュレーション、屋内ロボティクス、マルチロボットシステム)で、センサーの生出力からセンサー側やアクチュエータ側の高レベルのセマンティック情報まで、物理エンジンにより処理される基本的な Raw のコマンドからハイレベル(より仮想的な)モーションまでと、違うレベルでのシミュレーションが可能です。


ロボットを構築するには、Blender ファイルのセット(各センターもしくはアクチュエータ用)を集め、一つのロボットベースにします(私たちは現在屋外用 iRobot ATRV、ヘリコプターモデル、カスタムメイドの1アームの屋内ロボットを持っています)。

各センサーもしくはアクチュエータは異なるレベルの現実度で動作できます。例えば、カメラは Raw のOpenGL バッファ、デプスマップ、ロボットが見ているオブジェクトの名前と位置の「認識マップ」に分割化される前の画像のエクスポートが設定可能です。
この異なるレベルの現実度は大きなロボットプロジェクトでの作業時に非常に重要です。
それぞれの研究者が完全な処理スタックを実行するような負担なしに特定のアルゴリズムをテストしたいと思われるからです。

当分はモノもしくはステレオカメラ、レーザスキャナ、ジャイロスコープ、GPSのシミュレーションができます。また、スピードや通る地点によってロボットを動かすシンプルなアクチュエータもあります。

使えるようにするには、シミュレータは現実のロボットコントロールスタックとやり取りできなければなりません。これは一般的にはロボットのコンポーネントを抽象化する、ミドルウェアと呼ばれるものに依存することより達成されています(例えば、カメラで使用されている視覚のアルゴリズムを変更せずに、現実のカメラを、シミュレートされたものでリプレースできます)。

標準のミドルウェアがないため、ORS は現在 LAAS で開発中のオープンソースツール、Genom3 に依存する予定です。Genom3はテンプレートベースのモジュールジェネレータです。一度与えられたミドルウェアのテンプレートが書かれれば、すべてのシミュレータのモジュールは自動的に生成可能です。シミュレータの開発者たちはセンサとアクチュエータを一度書くだけで、ロボット工学コミュニティ全体がそれを使用できるのです。

この機能はまだ完成しておらず、開発の必要に応じて、私たちは二つのミドルウェア、YARP(と、YARPを通じて Orocos)、Pocolibs のみ実装しています。

他にも動画があります。



ORS シミュレータのシンプルなサンプル。ロボット1には追跡するポイントのリストを与えています。ロボット2はロボット1を、3は2を追います。





SICK レーザレンジセンサのシミュレーションデモ。この動画では、センサが180度の範囲、5 Blender単位の距離をカバーしています。センサは2アニメーションフレーム毎に一度スキャンを実行します(Benoit氏の VideoTexture の拡張のおかげで、ロボットのカメラが壁のスクリーンにストリーム上映されていることに注目して下さい)。


ところでこの動画で気付かれたと思いますが、私たちはまだ Blender 2.49から Blender 2.5に移行中です(私たちにとって重要な機能がまだいくつか移植されていないため、長くかかっています)。しかし、ORS は Blender 2.5で実行されることを保証します!

まだ OpenRobot シミュレータは広く配布する準備ができていません(バージョン1.0のリリース時には皆さんにお知らせする予定です!)。ほとんど欠けています。ビルドやシーンのシミュレーション開始、コンポーネント(ロボット、センサ、アクチュエータなど…)をドラッグアンドドロップできるデディケーテッド UI、Genom3との統合、ROS のような他のミドルウェア用のテンプレート(もし ROS の開発者で支援に興味がある方はメールを下さい!)を解説するいいドキュメントがほとんどかけています。洗練すべきところも多数!

でも、もし触りたいのであれば、パブリック GIT リポジトリからチェックアウトできます:git clone http://trac.laas.fr/git/robots/morse.git し、morse-dev@laas.fr へどうぞ(ただし、最初の公式リリースを出すまではすべての質問には答えられないことを承知して下さい)。



ロボット工学はさっぱりなので、関係者の方々いらっしゃいましたらツッコミお願いします。



Blender.jpにて更に多くのニュース記事をよむことができます
https://blender.jp

このニュース記事が掲載されているURL:
https://blender.jp/modules/news/index.php?page=article&storyid=2882