アービ
| ウルビ | |
|---|---|
| 原作者 | ジャン=クリストフ・ベイリー |
| 開発者 | ゴスタイ、アルデバランロボティクス |
| 初回リリース | 2003 |
| 安定版リリース | 2.7.4 / 2011年11月17日 |
| リポジトリ | |
| 書かれた | アービスクリプト、C++ |
| オペレーティング·システム | Windows NT、macOS、Linux |
| タイプ | ロボティクススイート、オペレーティングシステム、ライブラリ |
| ライセンス | 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プラットフォーム全体)はそのようなアプリケーションに最適です。
言語属性
- 並列処理とイベントベースプログラミング
- プロトタイプベースのプログラミング
- C++のような構文
- オブジェクトをリンクしたりリモートで実行したりできるJavaおよび C++ ベースのコンポーネント アーキテクチャ (UObject)
- クライアント・サーバーモデルアーキテクチャ[ 4 ]
- クロスプラットフォーム: Linux、Macintosh、Windows、その他。
- 組み込み可能な Urbi は、x86、ARM、MIPS、powerPC などのさまざまなプロセッサで実行できます。
- 「タグ」によるジョブ制御[ 5 ]
機能
- 並列プログラミングとイベント駆動プログラミング
- プログラミングプロトタイプ
- C++に似た構文
- アーキテクチャ コンポーネント: C++、Java (UObject)、オブジェクトをリンクしたりリモートで実行したりする機能
- クライアントサーバーモデル
- 顧客とのインターフェースJavaおよびMATLAB (Urbi SDK)
- 複数のプラットフォーム: Linux、macOS、Windows NT、組み込み環境 ( x86、ARM、MIPS、powerPC )
- 制御のために注文をマークすると非同期になります
- urbiscript から直接アクセスできるロボット オペレーティング システム(ROS)の統合(バージョン 2.1)
例
以下の例は、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 と互換性のある公式ロボット シミュレーターです。
- プレイヤーとステージの統合が報告されていますが、現在はリリースされていません。
都市化されたロボット
リリース:
- ゴスタイ・オープン・ジャズ
- セグウェイPT
- Aibo ERS-7/ERS-2xx (Urbi 1.x のみ、Urbi 2.3 はアルファ版として利用可能)
- iRobot Create
- レゴ マインドストーム NXT
- HRP-2(JRL会員限定公開)
- ナオ
- ロボティス・バイオロイド
- 移動ロボットのパイオニア
発表:
- 測量士
- ケペラ3世
- 電子パック
参照
- ロボットスイート
- Player Project -研究および高等教育におけるオープンソースのロボットインターフェース
- ロボットオペレーティングシステム(ROS)
参考文献
- ^ 「Urbi、ロボット向けオープンソースオペレーティングシステム」 。 2012年10月27日閲覧。
- ^ Baillie, Jean-Christophe (2008年7月8日). 「Urbi:ロボット工学、ゲームなどのための新しい並列・イベント駆動型スクリプト言語」 YouTube. 2021年12月21日時点のオリジナルよりアーカイブ。 2011年10月6日閲覧。
- ^ 「Urbi」 . GitHub .
- ^バイリー、ジャン=クリストフ;デマイユ、アキム。ノッターレ、マシュー。ホケ、クエンティン。タルデュー、サミュエル (2008)。「ロボット工学のための Urbi ユニバーサル プラットフォーム」(PDF) 。2011 年10 月 6 日に取得。
外部リンク
- GitHubのUrbi
- Urbiオンラインドキュメント
- ウォン、ウィリアム、「Gostai Urbi」、「Electronic Design」、2010 年 8 月 5 日。
- McCafferty、Billy、「ロボット OS である Urbi の Q&A」、「Sharprobotica」、2010 年 7 月 16 日。
- ブランケンホーン、ダナ、「私はオープンソースロボット」、ZDNet、2010 年 8 月 20 日。