アービ

ウルビ
原作者ジャン=クリストフ・ベイリー
開発者ゴスタイ、アルデバランロボティクス
初回リリース2003 (2003年
安定版リリース
2.7.4 / 2011年11月17日 (2011年11月17日
リポジトリ
書かれたアービスクリプトC++
オペレーティング·システムWindows NTmacOSLinux
タイプロボティクススイートオペレーティングシステムライブラリ
ライセンスBSD [ 1 ]

Urbiは、C++で記述されたオープンソースのクロスプラットフォーム・ソフトウェア・コンピューティング・プラットフォームであり、ロボット工学や複雑なシステム向けのアプリケーション開発に使用されます。[ 2 ] Urbiは、UObject分散C++コンポーネントアーキテクチャをベースとしています。また、並列かつイベント駆動型のスクリプト言語であるurbiscriptオーケストレーション言語も含まれています。UObjectコンポーネントはurbiscriptにプラグインされ、ネイティブオブジェクトとして表示され、スクリプトによってそれらの相互作用やデータ交換を指定できます。UObjectはurbiscriptインタープリタにリンクすることも、「リモート」モードで自律プロセスとして実行することもできます。

都市文字言語

urbiscript言語は、2003年にパリのENSTA認知ロボティクス研究所のJean-Christophe Baillieによって開発されました。2006年に設立されたGostai社を通じて、産業界で活発に開発が進められてきました。現在はBSDライセンスに基づくオープンソースプロジェクトであり、GitHubで公開されています。[ 3 ]

urbiscript言語は、オーケストレーションスクリプト言語として最もよく説明できます。ビデオゲームにおけるLuaのように、urbiscriptはC++コンポーネントを関数的な動作にまとめるために使用できます。CPU負荷の高いアルゴリズム部分はC++に、動作のスクリプト部分はより柔軟で保守が容易で、プログラム実行中の動的な相互作用を可能にするスクリプト言語に任せます。オーケストレーション言語であるurbiscriptは、並列処理イベントベースプログラミングを言語セマンティクスの一部として組み込むことで、プログラムにいくつかの有用な抽象化をもたらします。並列動作とイベントへの反応のスクリプト記述は、ほとんどのロボットアプリケーションや複雑なAIアプリケーションの中核的な要件であるため、urbiscript(およびUrbiプラットフォーム全体)はそのようなアプリケーションに最適です。

言語属性

機能

以下の例は、urbiscript でボール追跡アクション/認識ループを記述する方法を示しています。headYaw/headPitch は 2 つのモーター オブジェクトであり、ball はボール検出オブジェクトです (x と y の範囲は -1/2 から 1/2)。

いつでも( ball . visible ) { headYaw . val += camera . xfov * ball . x & headPitch . val += camera . yfov * ball . y };

every は、関連付けられた条件が真である限り、ループ内のコードの一部をトリガーするために使用されます。符号は、&両方のコマンドが同時に開始され、並列実行されることを指定するために使用されます。

その他の注目すべきイベント駆動型構造には、イベントがトリガーされたときに関連付けられたコードを 1 回トリガーする atが含まれます。

at ( speech . hear ?( "hello" )) { voice . say ( "お元気ですか?" ) & robot . standup (); }

すべてのコマンドまたはコマンドのグループはタグ付け可能であり、必要に応じて後で停止する方法が提供されます。

myTag : while ( true ) echo ( "これは終わりのないループです" ), at ( button . pushed ) myTag . stop ;

上記の例では、コマンドの末尾にカンマが付いていることに注意してください。これにより、前のコマンドがバックグラウンドで実行され、フローの実行、特に次の「at」コマンドの実行が継続されます。

UObject コンポーネント アーキテクチャ

UObjectコンポーネントアーキテクチャにより、開発者は任意のJava/C++オブジェクトをUrbi内でインターフェースすることができ、選択したメソッドと属性を実際にはコンパイル済みのコードでありながら、urbiscript内で表示することができます。オブジェクトの任意の属性に特別な通知を設定することで、urbiscript/Urbi側でこれらの属性が変更された際にC++側に通知することができます。

UObject は C++ テンプレートを使用して、要求されたメソッドを、型チェックを処理するインターフェース メカニズムに透過的にマッピングします。

UObject は、コンパイル時に Urbi に直接リンクされている場合、または動的ロードされている場合、プラグドモードで使用できます。この場合、C++ オブジェクトは Urbi メモリを直接共有するため、効率的な統合が可能になります。これは通常、モーターやセンサードライバーなどの時間的にクリティカルなコンポーネントに使用されます。同じ UObject は、変更を加えることなくリモートコンポーネントとして使用することもできます。この場合、Urbi サーバーの IP アドレスをパラメータとして実行される自律プログラムになります。どちらの場合も、オブジェクトは Urbiscript 内でネイティブ Urbiscript オブジェクトとして透過的に表示されます。

エコシステム

Urbiと互換性のあるロボットシミュレータ

  • Webotsは Urbi と互換性のある公式ロボット シミュレーターです。
  • プレイヤーとステージの統合が報告されていますが、現在はリリースされていません。

都市化されたロボット

リリース:

発表:

参照

参考文献

  1. ^ 「Urbi、ロボット向けオープンソースオペレーティングシステム」 。 2012年10月27日閲覧
  2. ^ Baillie, Jean-Christophe (2008年7月8日). 「Urbi:ロボット工学、ゲームなどのための新しい並列・イベント駆動型スクリプト言語」 YouTube. 2021年12月21日時点のオリジナルよりアーカイブ。 2011年10月6日閲覧
  3. ^ 「Urbi」 . GitHub .
  4. ^バイリー、ジャン=クリストフ;デマイユ、アキム。ノッターレ、マシュー。ホケ、クエンティン。タルデュー、サミュエル (2008)。「ロボット工学のための Urbi ユニバーサル プラットフォーム」(PDF) 2011 年10 月 6 日に取得
  5. ^バイリー、ジャン=クリストフ;デマイユ、アキム。ノッターレ、マシュー。クエンティン・ホケット (2010)。「タグ: urbiscript のジョブ制御」(PDF) 2011 年10 月 6 日に取得