JP2005515903A - ロボット用センサおよびアクチュエータのハードウェア抽象化層内における抽象化および集合化 - Google Patents

ロボット用センサおよびアクチュエータのハードウェア抽象化層内における抽象化および集合化 Download PDF

Info

Publication number
JP2005515903A
JP2005515903A JP2003547121A JP2003547121A JP2005515903A JP 2005515903 A JP2005515903 A JP 2005515903A JP 2003547121 A JP2003547121 A JP 2003547121A JP 2003547121 A JP2003547121 A JP 2003547121A JP 2005515903 A JP2005515903 A JP 2005515903A
Authority
JP
Japan
Prior art keywords
resource
robot
software
hardware
driver
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003547121A
Other languages
English (en)
Other versions
JP2005515903A5 (ja
Inventor
トーマス ジェイ.フォー マリー
バオコック エヌ. ファン
パオロ パーヤニアン
Original Assignee
エヴォリューション ロボティクス インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エヴォリューション ロボティクス インコーポレイテッド filed Critical エヴォリューション ロボティクス インコーポレイテッド
Publication of JP2005515903A publication Critical patent/JP2005515903A/ja
Publication of JP2005515903A5 publication Critical patent/JP2005515903A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/008Artificial life, i.e. computing arrangements simulating life based on physical entities controlled by simulated intelligence so as to replicate intelligent life forms, e.g. based on robots replicating pets or humans in their appearance or behaviour
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1661Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • B25J9/1666Avoiding collision or forbidden zones
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/0088Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40389Use robot control language also to write non robotic user, application programs
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40397Programming language for robots, universal, user oriented
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10TTECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
    • Y10T436/00Chemistry: analytical and immunological testing
    • Y10T436/11Automated chemical analysis

Abstract

本発明は、ロボット用のハードウェア抽象化層(HAL)(202)を提供する方法および装置に関する。HAL(202)が、ロボット制御ソフトウェア(157、158、160、162)と、下層のロボットハードウェア(152、154)および/またはハードウェア用のオペレーティングシステム(156)との間に、ソフトウェア層またはファームウェア層として存在し得る。HAL(202)は、下層のハードウェアの集合体に比較的一様な抽象化を提供して、その結果、下層のロボットハードウェアが、知覚および制御ソフトウェア(157、158、160、162)、すなわちロボット制御ソフトウェア(157、158、160、162)にとって透明となる。これによって、ロボット制御ソフトウェア(157、158、160、162)が、ロボットとは無関係に記述可能になることが好ましい。したがって、ロボット制御ソフトウェアの開発者は、退屈で重要でない仕事から解放される。移植できることが、別の利点である。例えば、HAL(202)によって、1つのロボット用に開発されたロボット制御ソフトウェア(157、158、160、162)の別のロボットへの移植が効率よく可能になる。一例では、HAL(202)によって、同じナビゲーションアルゴリズムを、車輪付きロボット(104)から移植することと脚のついた人間型ロボット(106)において使用することとが、可能になる。

Description

本発明は、概ねロボット工学に関する。特に、本発明は、制御または振る舞いソフトウェアのの移植性を高めるハードウェア抽象層に関する。
ロボットは、多くの目的に使用可能である。例えば、ロボットは、反復仕事への工業上の応用、あるいは危険な環境における使用が可能であり、娯楽用玩具および同様のものとして構成可能である。ロボット用のハードウェアおよびロボット用の制御ソフトウェアは、常に複雑化している。ロボットは、構造体に取り付けられる種々のセンサおよびアクチュエータを含み得る。
既存のロボットおよびロボットソフトウェアの1つの欠点が、制御ソフトウェアに対する透明性の不足である。既存のロボットでは、ソフトウェアは、新しい各ロボット構成に念入りに適合される。例えば、典型的なロボットソフトウェアアーキテクチャでは、ロボットソフトウェアは、低レベルのデバイスドライバを介してロボットハードウェアと相互作用する。これらの低レベルのデバイスドライバは、対応のハードウェアデバイスに特有であり、低レベルのデバイスドライバは、ハードウェアデバイスの物理的性質について一般に送受信されるコマンドおよびフィードバック情報をサポートする。例えば、ドライブシステムモータ用の低レベルのデバイスドライバは、ロボットソフトウェアから、特定の毎分回転数など特定の速度でモータを回転させるコマンドを受信可能である。しかしながら、ドライブシステム全体は、モータだけではなく、同様にギヤおよび車輪も含み得る。したがって、歯車比および/または車輪の直径を変更する時、ソフトウェア開発者は、ロボットに所望の振る舞いをさせるために特定の毎分回転数を変更するようなロボットソフトウェアの変更を行わなければならない場合がある。
取るに足りないこれらのプログラム変更は、時間の浪費であり、ロボットのソフトウェアおよびハードウェア開発の両方に効率が悪い。本発明の実施形態は、好ましいことに、ロボットハードウェアからロボットソフトウェアを切り離し、先行技術の欠点を克服する。
本発明の実施形態は、ロボット用のハードウェア抽象化層(HAL)を提供する方法および装置に関する。HALは、ロボット制御ソフトウェアと、下層のロボットハードウェアおよび/またはハードウェア用のオペレーティングシステムとの間に、ソフトウェア層またはファームウェア層として存在し得る。HALは、下層のハードウェアの集合体に比較的一様な抽象化を提供して、その結果、下層のロボットハードウェアが、知覚および制御ソフトウェア、すなわちロボット制御ソフトウェアにとって比較的透明となる。これによって、好ましいことに、ロボット制御ソフトウェアが、ロボットとは無関係に記述可能になる。
したがって、ロボット制御ソフトウェアの開発者は、退屈で重要でない仕事から解放される。さらに、ロボット制御ソフトウェアを移植できることが、別の利点である。例えば、HALによって、1つのロボット用に開発されたロボット制御ソフトウェアの別のロボットへの移植が効率よく可能になる。一例では、HALによって、同じナビゲーションアルゴリズムを、車輪付きロボットから移植することと脚のついた人間型ロボットにおいて使用することとが、可能になる。
本発明の一実施形態は、ロボットソフトウェアアーキテクチャ内にハードウェア抽象化層(HAL)を含む。HALは、以下のものを備える。より高レベルのソフトウェアに対するソフトウェアインターフェースであって、当該ソフトウェアインターフェースが、ロボットと環境との相互作用に関連した現実世界の測定値を伴って、より高レベルのロボットソフトウェアと通信するように構成されたソフトウェアインターフェースと、より高レベルのソフトウェアに、利用可能なリソースの表示を提供するリソース構成と、複数のリソースドライバであって、当該リソースドライバの少なくとも一部分が、リソース構成内の利用可能なリソースに相当し、リソースドライバの少なくとも2つが、機能性において部分的に重なっており、少なくとも2つのリソースドライバの1つのみが、利用可能な対応のリソースを有し、利用可能なリソース用のリソースドライバが、ロボット用の現実世界の測定値と、デバイス用のデバイスレベルの測定値との間の変換を行うように構成されている複数のリソースドライバと、より低レベルのデバイスドライバに対するインターフェースであって、当該より低レベルのデバイスドライバが、デバイスレベルにおいて対応のハードウェアと通信し、より低レベルのデバイスドライバに対するインターフェースが、リソースドライバを介して、より高レベルのソフトウェアと通信する、より低レベルのデバイスドライバに対するインターフェースとを、HALは備える。
本発明の一実施形態は、ロボットに、ロボット制御ソフトウェアのハードウェア抽象化を提供する方法に関する。本方法は、以下のステップを含み得る。対応のハードウェアがロボットに存在しないリソースドライバを含む、ロボット用の複数のリソースドライバを設けるステップと、ロボット用のハードウェア構成を検出するステップと、検出されたハードウェア構成に基づき、ロボットにおいて利用可能なリソースを自動的に検出するステップと、ロボット制御ソフトウェアから、1つのタイプのリソースを使用する要求を受信するステップと、ロボット制御ソフトウェアにより要求されたタイプのリソースに相当するリソースを、利用可能なリソースから自動的に選択するステップと、選択されたリソースの使用に関連するとともに、ロボットに関連する測定単位で提供される第1の情報を前記ロボット制御ソフトウェアと交換するステップと、第2の情報であって、ロボット制御ソフトウェアによる使用要求に関連し、対応のデバイスに関連する測定単位で提供され、第1の情報とは異なる、リソースに対応する第2の情報を、より低レベルのデバイスドライバと交換するステップと、ロボットの検出された構成に基づき、第1の情報と第2の情報との間において変換を行うステップとを、本方法は含む。
一実施形態は、コンピュータが読み出し可能な媒体を含み、この媒体は、ハードウェア抽象化を行う方法を実行するための、コンピュータが実行可能な命令を有する。コンピュータが読み出し可能な媒体は、幅広い種々の媒体に相当し得る。すなわち、これらに限定はしないが、ハードディスク、フロッピーディスク(登録商標)、および他の磁気ディスク、RAM、ROM、フラッシュメモリ、メモリカード、および他の固体回路記憶装置、光ディスク、CD−ROM、DVD−ROMおよび同様のものに相当し得る。
以下に概要を示す図面を参照して、本発明のこれらのおよび他の特徴を説明する。これらの図面および関連の説明は、本発明の好ましい実施形態を示すために提供するものであって、本発明の範囲を限定する意図はない。
いくつかの好ましい実施形態に関して本発明を説明していくが、ここに述べる利点および特徴の全てを提供するとは限らない実施形態を含めて、当業者に明らかな他の実施形態もまた、本発明の範囲内にある。したがって、本発明の範囲は、添付の特許請求の範囲を参照することによってのみ確定される。
図1Aに異なるタイプのロボットの例を示す。ロボットは、非常に広範囲の種々の方法で使用可能であり、かつ非常に広範囲の種々の構成に対応可能である。例えば、ある場合には、第1のロボット102が、病院内における医療用品の自動搬送装置である。第2のロボット104が研究と趣味用のロボットである場合がある。第3のロボット106が人型ロボットである場合がある。第4のロボット108が娯楽目的の玩具である場合がある。ロボット用の多くの他の構成が可能であることを、当業者は理解するだろう。
構成を変えたロボットでは、ハードウェアが実質的に異なる可能性があることが理解されるだろう。例えば、第1のロボット102および第2のロボット104は、車輪で移動し、また、第3のロボット106および第4のロボット108は、足を使用して移動する。下層のハードウェアが根本的に異なる場合でさえ、本発明の実施形態によって、好ましいことに、1台のロボットのために開発されたソフトウェアを別のロボットに簡便に移植可能となる。さらに、本発明の実施形態によって、有利なことには、車輪の直径の変更など比較的軽微な変更をロボットに行うときに、ロボットを制御するために同じソフトウェアを使用可能になる。
本発明の実施形態は、有利なことには、ロボットソフトウェアの開発をハードウェアと無関係に行うことを可能にするハードウェア抽象化層(HAL)を提供する。HALは、ロボットのソフトウェアとハードウェアドライバとの間のソフトウェアアーキテクチャ内の層に存在することが好ましい。HALによって、1台のロボットのために開発されたロボットソフトウェアを別のロボットに効率的に移植可能となる。HALによって、さらに、既存のロボットの再構成を、ロボットソフトウェアを修正する必要なしに行うことが可能となる。例えば、センサまたはアクチュエータを変更可能である。HALの使用によって、ロボットソフトウェアおよびハードウェアの迅速な開発および進展が促進される。
図1Bは、通常のロボット用のソフトウェアアーキテクチャを示す。ロボットソフトウェア150が、センサ152からの入力を処理し、アクチュエータ154に制御出力を与える。図1Bに示したソフトウェアアーキテクチャにおいては、ロボットソフトウェア150は、高レベルのプランナ157あるいはアプリケーション158を含んでいる。高レベルのプランナ157は、記号形式で特定された目標を扱う。高レベルのプランナ157は、それらの目標をもっともよく達成する方法を決定するための固有の論理を有する。例えば、高レベルのプランナは、ミッションプランニング、サーチおよびレスキュー、ならびにサービス指向型タスクなどの種々のロボットアプリケーションに使用される。アプリケーション158は、ロボット制御用のソフトウェアプログラムまたはアルゴリズムに相当し得る。高レベルのプランナ157またはアプリケーション158は、振る舞いまたはタスクとして示したより小さなソフトウエアコンポーネントを調整することによって、それらの目標を達成し、この振る舞いまたはタスクは、種々のロボットオペレーションをカプセル化したものである。振る舞いの一例が、「ロボットの前のどんな障害物も回避する」ことである。タスクの一例が、「内部地図の特定の場所へ行く」ことである。「会議室に行く」という目標を与えられた高レベルのプランナ157が、「回避する」という振る舞いの使用と、「特定の場所へ行く」というタスクの使用とを調整して、内部地図において会議室の位置を確認し、障害物に衝突せずにそこへ移動することを可能にする。これらの振る舞いおよびタスクのコンポーネントは、中間の振る舞い層160および/またはタスク層162を形成し得る。振る舞い層160および/またはタスク層162は、次いで、低レベルのデバイスドライバ156を介して、ロボットのハードウェアと、すなわち、センサ152および/またはアクチュエータ154と相互作用する。
低レベルのデバイスドライバ156は、対応のハードウェアデバイスに特有のものである。低レベルのデバイスドライバ156は、一般に、与えられたコマンドをサポートし、対応のデバイスの物理的特性に関してフィードバック情報を提供する。例えば、モータ用ドライバが、一定の速度でモータを回転させるコマンドをサポートするように構成可能であり、それは、毎分ある回転数(RPM)内に指定可能である。モータがロボット用ドライブシステムにおいて使用される場合、振る舞い層160および/またはタスク層162は、対応の低レベルのデバイスドライバにモータ回転に関してコマンドを与える。これは、比較的効率が悪く不便である。
ロボットの動きは、モータではなくロボットに適用可能な寸法単位でより効率的に記述可能である。例えば、本発明の実施形態によって用いられ、より便利な表記法では、センチメートルなどの直接的な距離単位、またはセンチメートル毎秒などの速度単位を用いて、ロボットの移動を記述する。この直接的な表記法は、モータの回転速度などの間接的な表記法よりもはるかに便利に用いることができる。
これとは対照的に、従来のロボットのソフトウェア150が低レベルのデバイスドライバ156と相互作用するように構成されている場合は、振る舞い層160および/またはタスク層162は、これらの間接的な単位の数値を特定のロボットのドライブシステム特性へ変換する。例えば、従来のロボットのソフトウェアを使用するソフトウェア開発者が、特定の移動が行われるようにするために、振る舞い層160および/またはタスク層162を、特定のロボットにおける特定の歯車比および車輪サイズに適合させるのは不便である。車輪サイズの変更などの、変更をロボットに行う場合、これらのカスタマイズを再調整する必要があるのは不便である。さらに、特定のロボットに適合した振る舞い層160および/またはタスク層162は、一般に、異なる構成のロボットへは移植不可能である。
図2に、ハードウェア抽象化層(HAL)202を備えた、本発明の実施形態に係るソフトウェアアーキテクチャ200を示す。HAL202は、より高レベルのロボット振る舞いソフトウェアに中間層インターフェースを提供することが好ましく、それによって、下層のハードウェアの特定の詳細ではなく実際の寸法に基づいて、より高レベルのロボット振る舞いソフトウェアを開発可能となる。これによって、ソフトウェア開発者が、ロボットのアプリケーションをプログラムする時に、下層のロボットハードウェアデバイスの細密な詳細を補償するという横道に逸れることなく、現実のコンセプトを用いて作業可能となることが好ましい。一実施形態では、HAL202はまた、異なるロボットハードウェアプラットフォームにおいて変更を行うことなく、HAL202の上に書かれたロボットの振る舞いソフトウェアを作動させることができる。
ソフトウェアアーキテクチャ200もまた、種々のプラットフォームにロード可能である。例えば、ここに示したソフトウェアアーキテクチャ200は、Linux、Unix(登録商標)、Microsoft(登録商標)、Windows(登録商標)Apple(登録商標)、MacOS(登録商標)および同様のものなどの広範囲の種々のオペレーティングシステムに実装可能である。広範囲の種々のコンピュータハードウェアはまた、ロボット用のソフトウェアアーキテクチャ200のホストとして機能し得る。例えば、コンピューターハードウェアは、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末(PDA)、シングルボードコンピュータおよび同様のものである。コンピュータハードウェアを、ロボットに対して局在させ得るかまたは遠隔配置させ得ることが理解される。
図2が示すように、HAL202は、低レベルのデバイスドライバ156用の層と振る舞いロボットソフトウェアとの間のソフトウェア層内に存在する。図3、図4、図6、図7および図8に関してHAL202の一実施形態のさらなる詳細を後述する。一実施形態では、低レベルのデバイスドライバ層は、下層のオペレーティングシステム(OS)内、例えば Windows XP(登録商標)の層内に存在する。ロボット用の比較的一様な制御インターフェースを提供することに加えて、HAL202は、ロボットのセンサとの相互作用のための、比較的一様なインターフェースを提供する。しかしながら、自律型ロボットについては、ロボットにおけるセンサの位置、センサデータの標本化速度、および他のセンサ特性などの他の情報もまた、センサデータを用いて自律的な決定および動作を行うために必要な場合がある。HAL202の実施形態は、ロボットシステム内におけるセンサのこれらの特性をカプセル化するための1セットの技術をさらに含み得ることが好ましく、下層のロボットハードウェアの特定の特性に好ましくは依存しない方法でデータにアクセスを行うための比較的一様なインターフェースを提供する。
HAL202の一実施形態は、次の利点の少なくとも1つを提供する。
(I) ハードウェアデバイスを抽象化するための柔軟性のあるフレームワークを提供すること、
(II) プラットフォームの中立性を提供すること、
(III) ロボットハードウェアのリアルタイム制御のためのシステムレベルの効率のよさを提供すること。
利点(I)が、ハードウェアデバイスを抽象化するための柔軟性のあるフレームワークを提供し、図4に関して以下にさらに詳細に説明される。(II)プラットフォームの中立性と、(III)システムレベルの効率性とを達成するために、HAL202の一実施形態は、C++プログラミング言語を用いて実装され得る。C++プログラミング言語は、システムレベルの効率をよくすることで、種々のプラットフォームに比較的幅広く標準化されたサポートを提供する。さらに、C++プログラミング言語がオブジェクト指向方法をサポートすることによって、ソフトウェア設計が相対的にすぐれた構成になる。広範囲の種々のプログラミング言語を使用可能であることが、当業者に理解されるだろう。別の実施形態では、Java(登録商標)またはLispが使用される。
図3は、HAL202内におけるハードウェアデバイスの抽象化を例示し、リソースドライバ302とリソース304との間の関係を例示している。HAL202は、低レベルのハードウェアデバイス306からリソース304を通り低レベルのデバイスドライバ156までの通信路を提供する。リソース304が、論理的構成に相当し得、この論理的構成は、ロボットのオペレーションおよび/または感覚フィードバックの別個のセットをカプセル化または代表してハードウェアデバイス306を制御する。低レベルのデバイスドライバ156は、所与のリソース304に関連したハードウェアデバイス306を制御する、比較的低レベルのソフトウェアに相当し得る。HAL202は、適切なリソース304に対応するリソースドライバ302を介してハードウェアデバイス306にアクセスする。
リソース304によって抽象化されたハードウェアデバイス306は、コマンドを受信しまたはセンサデータを提供する、モータなどの能動的な構成部品を含み得、かつリソース304と通信はしていないが、ロボットと現実世界との相互作用に影響を与える、ギヤおよび車輪などの受動的な構成部品を含み得る。ハードウェア抽象化には、比較的単純なものから比較的複雑なものまでいろいろある。ハードウェア抽象化の比較的単純な例が、単一のモータアセンブリである。例えば、モータのドライブシステムの抽象化は、車輪の直径と歯車比とを格納し用いて、モータの回転に起因する動きを計算することを含み得る。中間的な複雑さの例では、IRSensorなどのハードウェアデバイス306の抽象化は、ハードウェアデバイス306から読み取りを行い、その読み取り値(例えば、ボルト)をセンチメートルなどの適切な寸法単位に変換することによって行われる。差動ドライブシステムなどのコンポーネントの集合体が、ハードウェアデバイス306の比較的複雑な例である。差動ドライブシステムの抽象化の一例では、2つのモータの速度および加速度を適切に調整して、望ましい線速度および角速度を達成する。
リソース304は、物理デバイス、物理的な結合ポイント、音声認識ソフトウェアなどのソフトウェアリソース、およびロボット制御ソフトウェアが外部環境と相互作用する他の方法に相当し得る。リソース304は、センサおよびアクチュエータ、ネットワークインターフェース、マイクロホンおよび音声認識システム、ならびにバッテリ充電残量にさえ相当する場合がある。リソース304は、物理デバイス、物理デバイスの組み合わせ、ソフトウェアオペレーション、またはハードウェアオペレーションに相当するかまたはそれらになり得るが、リソースドライバ302は、図3に示すように、リソース304のソフトウェア実装部分に相当し得る。立体面を描画するソフトウェアまたは音声認識ソフトウェアなどの、外部のソフトウェアアプリケーションに相当するリソース304に対して、リソースドライバ302は、外部のソフトウェアリソースに標準的なアプリケーションプログラムインターフェース(API)を提示する中間抽象化層に相当し得る。
別の例においては、ドライブシステム用リソース304によって、対応のロボットの動きを、物理的な距離単位を用いてセンチメートル毎秒などの速度および加速度により指定することができる。これによって、ロボットが2つのモータを有する差動ドライブシステムを使用しているか、または機械の脚を使用して動くかを考慮せずに、ロボットの振る舞いソフトウェアの開発を行うことが可能になることが好ましい。
ハードウェアデバイス306用のリソース304は、ハードウェアデバイスの一部分、ハードウェアデバイス全体、またはハードウェアデバイスの組み合わせを抽象化したものにすることができる。例えば、モータドライブシステムでは、リソース304は、車輪、歯車およびモータを抽象化することができる。さらに、単一のハードウェアデバイス306またはその一部分が、1つまたはそれ以上のリソース304によって抽出可能である。例えば、モータドライブシステム用の抽象化において用いられるのと同じ車輪および歯車を走行距離計の位置フィードバック用の抽象化に含ませ得る。
図4に、HAL202のさらなる詳細を示す。HAL202は、リソースコンテナ402を含み、それは、1つまたはそれ以上のリソースドライバ302、404、406を含んでいる。
リソースコンテナ402内のリソースドライバの数を非常に広範囲に変化させ得ることが理解されるだろう。リソース構成408が、リソースドライバ302、404、406を作り出すために使用される情報を含み得る。リソース構成408は、持続性のあるデータ記憶装置410に格納される。リソース構成408の一実施形態を図6に関して以下にさらに詳細に説明する。
HAL202の利点(I)、すなわち、ハードウェアデバイスを抽象化するための柔軟性のあるフレームワークを提供することは、図2に関して簡単に前述した。一実施形態においては、HAL202の利点(I)は、以下の利点の少なくとも一部分を実行することによって、実施可能であることが好ましい。
I(a) XMLなどの、比較的汎用性があり移植可能なデバイスの記述フォーマットで、HAL202に利用可能なリソースを記述するリソース構成408を設けること、
I (b)リソース304により抽象化したデバイス306のライフサイクルを管理すること、
I (c) 現実世界の概念および単位に基づいた種々のロボットオペレーション用のソフトウェアインターフェースの拡張可能なセットを提供すること、
I (d) リソース304からより高レベルのソフトウェアへのアクセスを提供すること、および
I (e)デバイス306にアクセスするための高信頼性機構を提供すること。
図5に、論理デバイスバスによる処理装置へのハードウェアデバイスの接続を示す。特定のロボットプラットフォームにおいて利用可能なリソース304は、HAL202に記述すべきであり、その結果、HAL202が、適切にリソース304を抽象化可能であるとともに、より高レベルのソフトウェアによる使用のために、抽象化したリソース304を利用可能にすることができる。一実施形態では、リソース304は、リソース構成408と呼ばれる木のような階層データ構造でHAL202に記述される。リソース構成408の構成は、ロボットハードウェアデバイスの、処理ハードウェア502への現実世界の接続を模倣し得る。
種々のハードウェアデバイスは、論理デバイスバスを介してロボットの処理コンポーネント502に接続可能である。論理デバイスバスは、ハードウェアデータバスを含み得、それは、例えばシリアルポート、パラレルポート、PCIバス、USB、ファイアワイヤなどの広範囲の種々のハードウェアデータバスに相当し得る。論理デバイスバスは、さらに、特別のプロトコルまたはドライバを含む論理的な構成に相当し、この特別のプロトコルまたはドライバは、ハードウェアデータバス上において通信するロボットデバイスと共に使用される。
例えば、ロボットデバイスA306およびハードウェアデバイスB504が、第1のUSBポートへ接続されるとともに、ヒューマンインターフェースドライバを使用し、それと同時に、ハードウェアデバイスC506がまた、USBポートへ接続されるが、仮想COMポートドライバを使用している。ハードウェアデバイスA306およびハードウェアデバイスB504は、第1の論理データバス510に接続され、この第1の論理データバス510は、USBハードウェアポートとヒューマンインターフェースドライバとの集合体である。それとは対照的に、ハードウェアデバイスC506は、第2の論理データバス512に接続され、この第2の論理データバス512は、USBハードウェアポートと仮想COMポートドライバとの集合体である。図5は、さらに、第2の論理データバス512に接続されたハードウェアデバイスD508を例示している。論理データバスの数を非常に広範囲に変更可能であることが理解されるだろう。
1つまたはそれ以上のハードウェアデバイス306、504、506、508を単一の論理デバイスバスに取り付け可能であるが、単一のデバイスを、1つを越える論理デバイスバスに取り付けるべきではないことが理解されるだろう。複数のハードウェアデバイス306、504、506、508は、集合させてデバイスグループにすることができる。
図6に、リソース構成408の一実施形態のさらなる詳細を示す。リソース構成408は、1つまたはそれ以上のデバイスグループ構成と、1つまたはそれ以上のデバイスバス構成とを含み得る。デバイスグループ構成は、ハードウェアデバイスへの1つまたはそれ以上の参照を含み得る。例えば、図6は、第1のデバイス参照604および第2のデバイス参照606を有する第1のデバイスグループ構成602を示している。
第1のデバイスグループ構成602は、図3に関して前述したリソースドライバ302などの対応のリソースドライバの実装を使用し、このリソースドライバは、ハードウェアデバイスに対応する第1のデバイスグループ構成602がどのように相互作用するかを管理している。モータドライブシステム用のリソースドライバが、デバイスグループ構成を実装したリソースドライバの一例であって、その結果、モータドライブシステム用のリソースドライバが、1つまたはそれ以上のモータ、ギヤおよび車輪を集合化させることができる。一実施形態では、ロボットへのデバイスのマウント方法および場所についての物理的性質は、デバイスの記述自体の一部分であり、すなわち、構造体およびデバイスは、HAL202のリソース構成内に記述されており、特定のデバイスのマウント方法および場所の物理的性質は、デバイスグループ構成内においてデバイスと集合化されない。XMLフォーマットの、IRSensor用のデバイス構成の一例を以下に示す。
<Device id="IR_tne"type="Evolution.USBIrSensor">
<Parameter name="address"value="0"/>
<Parameter name="link"value="origin"/>
<Parameter name="x"value="-20"/>
<Parameter name="y"value="-10"/>
<Parameter name="z"value="22"/>
<Parameter name="roll"value="0">
<Parameter name="pitch"value="0">
<Parameter name="yaw"value="-pi/4"/>
</Device>
上に示した例においては、id属性は、一意的にIRデバイスを識別する。型属性は、デバイスがUSB IRSensorであることを示す。アドレス値は、論理デバイスバス上のアドレスを示し、このアドレスに、このデバイスを見つけることができる。リンク値は、このデバイスがロボットへいかにアタッチされるかを示す。x、y、およびzの変数は、ロボットにおけるデバイスの位置に対応する。ロール、ピッチおよびヨー変数は、ロボットにおけるデバイスの方向に対応する。
図5に関して説明した利用可能な論理デバイスバスもまた、リソース構成408内に記述すべきである。論理デバイスバスの記述が、図6に示したデバイスバス構成に相当する。例えば、第1のデバイスバス構成608が、第1の論理データバス510に対応し、第2のデバイスバス構成610が、第2の論理データバス512に対応し得る。
デバイスバス構成は、ソフトウェア内の論理デバイスバスを活性化させ利用するために用いられる種々の情報を含むべきである。例えば、論理デバイスバスがシリアルプロトコルの抽象である場合、対応のデバイスバス構成は、ボーレート、パリティなどの種々の関連のあるシリアル通信パラメータを含むべきである。
対応のデバイス構成によって、ハードウェアデバイスを特定し定義することができる。例えば、図5に示したハードウェアデバイスA306、ハードウェアデバイスB504、ハードウェアデバイスC506、およびハードウェアデバイスD508は、それぞれ、第1のデバイス構成612、第2のデバイス構成614、第3のデバイス構成616、および第4のデバイス構成618によって、特定し定義することができる。デバイス構成612、614、616、618は、長さ、幅、量などの、デバイスの物理的性質に関係する情報を含み得、適宜、ロボットにおけるデバイスの位置を含み、方向を含み得る。
第1のハードウェアデバイス306がカメラに相当する例においては、ロボットにおけるカメラの位置および方向が、有用となり得、対応のデバイス構成612内に含まれるべきである。しかしながら、そのような位置および方向の情報は、テキスト音声合成装置などの別のロボット装置には適切ではない場合がある。
1つまたはそれ以上のデバイス構成が、対応のロボットデバイスが接続される論理デバイスバスの論理デバイスバス構成の下でグループ化される。第1のデバイスバス構成608などのデバイス構成が、ソフトウェア内の1つまたはそれ以上の対応のハードウェアデバイス306、504を活性化させ利用するために用いられる、デバイスパラメータを含めた情報を含むことが好ましい。例えば、ハードウェアデバイスB504が赤外線(IR)センサに相当する場合、第1の論理データバス510における赤外線センサのアドレス、センサ用較正データ、センサの最小・最大範囲などの情報が、特定されるべきである。別の例では、リソース304が、ハードウェアデバイスC506などの1つのロボットデバイスのためのみの抽象化を行う場合、対応のデバイス構成616は、ハードウェアデバイスC506を適切に抽象化するためのリソース304用のデータを全て特定すべきであり、それには、現実世界の単位など、デバイスの単位からより扱いやすい単位にデバイスデータを変換するために使用する換算因子が含まれている。
第1のデバイスバス構成608などの各デバイスバス構成、第1のデバイス構成612などの各デバイス構成、および第1のデバイスグループ構成602などの各デバイスグループ構成が、一意的識別子である各(id)ストリングにより識別可能である。HAL202の一実施形態が、この一意的idを使用して、異なるリソース同士の区別を効率的に行う。
図7は、リソースドライバオブジェクトが、IResourceDriverおよび1つまたはそれ以上のIResourceインターフェースからいかに導出されるかを示す。選択されたリソース304のためにリソースインターフェース702を取得するには、HAL202の一実施形態では、選択されたリソース304のidを使用することにより、リソースコンテナ402からの「obtain_interface」メソッドなどのメソッドを呼び出す。
ここで図6に戻ると、2つのIRSensorがロボットに装着された1つの例においては、第1のIRSensor用の第1のデバイス構成612は、「IR1」というidを有し、第2のIRSensor用の第2のデバイス構成614は、「IR2」というidを有することができる。これらのセンサは、両方とも距離センサであり、したがって、これらのセンサを使用するロボットのソフトウェアについて、HAL202は、リソースコンテナ402からIRangeSensorを検索して、その結果、適切なid、すなわち第1のセンサ用の「IR1」、および第2のセンサ用の「IR2」が、リソースコンテナ402の「obtain_interface」メソッドという第2のパラメータ(resource_id)として受け渡される。
リソース304が複数のデバイスを抽象化する時、それは、図6に関して前述したようにデバイスグループ構成として記述可能である。第1のデバイスグループ構成602などのデバイスグループ構成が、デバイスグループ構成内に、ハードウェアデバイスのデバイス参照への参照を含み得る。例えば、第1のデバイスグループ構成は、第1のデバイス参照604および第2のデバイス参照606を含んでいる。
一実施形態では、第1のデバイス参照604などのデバイス参照は、第1のデバイス参照604が参照する第2のデバイス構成614などのデバイス構成を一意的に識別するために十分なデータだけを含んでいる。一意的識別子は、リソース構成408を実装する、リレーショナルデータベース内または拡張可能なマークアップ言語(XML)の実装内の識別子に相当する場合があり、第1のデバイス参照604は、それが参照する第2のデバイス構成614のidを含むXMLタグに相当し得る。第1のデバイスグループ構成602の第1のデバイス参照604および第2のデバイス参照606などの、デバイスグループ構成のデバイス参照が、デバイスバス構成を変更する1つまたはそれ以上のデバイス構成の場所を示すことができる。
一実施形態では、ハードウェアデバイスB504およびハードウェアデバイスD508などの複数のハードウェアデバイスが、異なる論理デバイスバス510、512にアタッチされた時でさえ、リソースにより抽象化可能である。別個の論理デバイスバスと通信するハードウェアデバイスを含み得るハードウェアデバイスの一グループを抽象化可能であることによって、デバイスグループ構成の数が増加されることが好ましく、それは、HAL202によって可能でありかつサポートされ得る。一実施形態では、デバイスグループ内のデバイスの集合体が、グループ用の別個のリソースドライバ302に相当する。
リソース構成408はまた、ロボット用の構造情報を格納可能である。一実施形態では、構造情報は、寸法構成630内に保持され、1つまたはそれ以上の形状構成632を含んでいる。各形状構成632は、ロボットの剛性構造部材についての情報を含み得る。一例においては、この情報は、以下の少なくとも1つの情報などの情報を保持するように構成され得る。
z軸の正方向を上向きにとりかつx軸の正方向を前向きにとった右手座標を用いてx、y、z座標から見た、ロボットの重心に対する剛性構造部材の位置、
x、yおよびz軸に沿った寸法で表した、構造部材のサイズ、
ロール、ピッチおよびヨーで表した、構造部材の方向、および
剛性構造部材と関連したリンクのid。
形状構成632に加えて、リソース構成408は、リンクに関連するジョイントを記述したリンク構成634を含んでいる。各リンク構成634は、1つの剛性構造部材を代表可能であり、一意的idを有している。一実施形態では、リンク構成634は、デナビット−ハルテンベルグパラメータを用いて、剛性構造部材を他の剛性構造部材に結合するジョイントに関する情報を含んでいる。
リソース構造408の記憶フォーマットは、非常に広範囲に変化させ得る。一実施形態が、XMLファイルを用いて実装されることが好ましいが、適切なデバイス情報が検索可能なフォーマットで記憶されていれば、リソース構成408のフォーマットが実質的にどんなものであってもよいことを、当業者は理解するだろう。リソース構成408はまた、HAL202に望ましい検索のために、フラッシュメモリー内またはハードドライブ内などの、アクセス可能な持続性のあるデータ記憶装置410内に記憶されるべきである。
リソース構成408は、リソース構成パーサにより検索可能である。一実施形態では、リソース構成パーサは、ソフトウェアモジュールに相当し得、このソフトウェアモジュールは、リソース構成408内に記憶されたデバイス構成を構文解析して、HAL202により内部で使用可能なフォーマットにする役割を担う。解析されたリソース構成の情報は、リソースコンテナ402に与えられ、そこで、記憶されHAL202により用いられる。一実施形態では、標準的なXML構文解析技術を用いて、リソース構成パーサにより、リソース構成408のXMLベースの実装の構文解析を行うことができる。リソース構成408によって、利点I(a)を得られる。比較的汎用性があり移植可能なデバイス記述フォーマットで、HAL202に利用可能なリソースを記述するリソース構成408が得られる。
リソースコンテナ402は、リソース構造パーサを通じて、適切なロボットプラットホームにおいて利用可能なリソース408に関する情報を得る。一実施形態では、各リソース304については、リソースドライバ302があり、このリソースドライバ302は、第1のデバイス構成612などのデバイス構成によって、または第1のデバイスグループ構成602などのデバイスグループ構成によって記述される、1つまたはそれ以上のデバイスを抽象化することができる。
リソースコンテナ402は、リソース構成408内に各デバイス構成またはデバイスグループ構成に対応するリソースドライバ302を作成可能である。一実施形態では、作成されたリソースドライバ302への参照が、ドライバテーブル内に記憶される。リソースコンテナ402はまた、各リソースドライバ302の従属リストを計算可能である。従属リストは、適切な場合に、活性化順にリソースドライバ302に先行させるべきである他のリソースドライバ302のリストを含み得る。活性化順は、ハードウェアデバイスA306またはハードウェアデバイスB504などの1つを越えるハードウェアデバイスを抽象化する複合リソースドライバが存在する場合には重要になる。
一実施形態では、個別の各ハードウェアデバイス306、504、506、508用のリソースドライバ302の活性化は、複合リソースドライバ302を活性化させる前に行うべきである。リソースコンテナ402は、1つまたはそれ以上のリソースドライバの従属リストを用いて、リソースドライバ302を活性化させるべき順番を決定可能である。一度十分な活性化の順番が決定されると、リソースコンテナ402は、活性化順に適切なリソースドライバを活性化させることができる。リソースの活性化および非活性化をサポートするために、HAL202は、IResourceDriverインターフェース706を含み得る。
図7に示すように、IResourceDriverインターフェース706は、「activate」および「deactivate」仮想メソッドを含んでいる。リソースドライバ302の実装では、IResourceDriverインターフェース706からの導出と、「activate」および「deactivate」仮想メソッドの実装とが行われる。「activate」方法では、リソースドライバ302をソフトウェア内において使用する準備を整えるために用いられるタスクを実行する。「deactivate」方法では、リソースドライバ302により使用されたデータをクリアし、リソースドライバ302により抽象化された対応のハードウェアデバイスを適切にシャットダウンする。
リソースの活性化シーケンスが決定されると、リソースコンテナ402は、活性化シーケンスに従って各リソースドライバ302の「activate」メソッドを呼び出す。一実施形態では、非活性化シーケンスは、活性化シーケンスの逆である。例えば、ソフトウェアが終了する時、リソースコンテナ402は、活性化順と逆の順番の「deactivate」メソッドを呼び出すことにより、リソースドライバ302を非活性化させる。リソースドライバ302の「activate」および「deactivate」メソッド、およびリソースコンテナ402によるそれらの使用方法は、利点I(b)を達成する。
HAL202の利点I(c)では、現実世界の概念および単位に基づく種々のロボットオペレーション用のソフトウェアインターフェースの拡張可能なセットを得られる。リソースインターフェースのこの拡張可能なセットは、本明細書ではリソースインターフェース702と言い、HAL202のリソースドライバ302により実装可能である。リソースドライバ302が、1つまたはそれ以上のリソースインターフェース702を実装することにより、ロボットオペレーションを抽象化しカプセル化する。リソースインターフェース702は、ベースのIResource704のインターフェース定義から導出されるとともに、1つのタイプのロボットオペレーションまたはデバイスをカプセル化することができる。図7に示したように、リソースドライバ302のオブジェクトが、IResourceDriverのベースクラス706、およびそれが実装を行うリソースインターフェース702のベースクラスの両方から導出されるのが一般的である。
リソースインターフェース702が、1セットのロボットオペレーションを行う関数呼び出し(メソッド)のリストに相当し得る。より高レベルのソフトウェアが、リソースドライバ302と相互作用するとともに、最終的に下層にあるハードウェアデバイスと相互作用し、この最終的な相互作用は、リソースドライバの1つまたは複数のリソースインターフェースへの参照を受け取りかつリソースインターフェースのメソッドを呼び出すことによって行われる。これらのメソッドおよびパラメータ、ならびに結果は、下層にあるハードウェアまたは実装に関する仮定なしに、現実世界の言葉で扱いやすく確定することができる。例えば、IDriveSystemリソースインターフェース(コードブロック9に関連してさらに詳細に後述)が、「move_and_turn」などのメソッドを含み得、このメソッドは、ロボットの動きを制御可能に構成することができ、この制御は、速度にはセンチメートル毎秒(cm/秒)および加速度にはcm/秒などの標準単位を用いて、所望の線速度および角速度、ならびに対応の加速度を指定することによって、行われる。別の例が、IRangeSensorリソースであり、「get_distance_reading」メソッドを提供するように構成可能であって、このメソッドでは、距離センサからセンチメートルなどの扱いやすい単位による距離の読み取り値を返す。サンプルコードブロックの説明の後に、リソースインターフェースのサンプルリストおよび対応のメソッドを説明する。
リソースインターフェース702の拡張性をサポートするために、HAL202は、リソースインターフェース702を実装するコードが、動的にロード可能な共有ライブラリ内に存在することを明示可能である。この構成は、Windows(登録商標)内のダイナミックリンクライブラリ、および他のプラットフォームにおける共有ライブラリまたは共有オブジェクトとして知られており、最新のオペレーティングシステムによりサポートされ、以下これを「共有ライブラリ」と呼ぶ。リソースドライバの実装を含む共有ライブラリの名前および場所は、リソース構成408の一部分として指定されるべきである。したがって、同じリソースドライバ302によって抽象化されたタスクを実行する別のハードウェア用の別の実装が、別の共有ライブラリ内において実行可能であり、使用中のハードウェアに適切なライブラリが、ロードされる。これによって、新しい実装をフレームワークに容易に追加可能となる。さらに、新しいリソースドライバの定義を第三者が行うことさえでき、それらの実装は、実行時にロボットシステムにロードされる新しい共有ライブラリ内に記憶することができる。
リソースドライバ302を含む共有ライブラリを識別した後に、HAL202は、リソースドライバ302をインスタンス化することができる。しかしながら、リソースドライバ302がインスタンス化された時共有ライブラリのロードが行われることを確認することが好ましい。一実施形態では、共有ライブラリは、実行可能なものへ直接リンクされているが、それは不都合でかつ非実用的な場合がある。リソースドライバのidおよびその共有ライブラリは、動的ロードを可能にするある方法で通知されることが好ましい。一実施形態では、HAL202は、C++マクロのDECLARE_RESOURCEを与え、それは、リソースドライバ302のコード内に入れられて、そのidおよび共有ライブラリの名前が通知される。DECLARE_RESOURCEマクロは、リソースドライバを作成するために、1つまたはそれ以上のメソッドの宣言、およびHAL202によって使用されるデータ項目を含み得る。DECLARE_RESOURCEマクロによって、リソースドライバインプリメンタが、これらの標準メソッドおよびデータメンバの入力を省略できることが好ましい。例えば、これらのメソッドには、「create_resource」メソッドと「get_driver_id」メソッドとを含み得、HAL202が、「create_resource」メソッドを呼び出してリソースドライバをインスタンス化可能であり、「get_driver_id」メソッドを呼び出してリソースドライバのidを検索可能である。DECLARE_RESOURCEマクロ内において宣言されたデータメンバは、リソースドライバのidを含んでいる。
一実施形態では、HAL202は、オペレーティングシステム内に設定された環境変数でパスの下リソースディレクトリを検索する。リソースドライバ302のリソース構成408は、リソースドライバ302を含んでいる共有ライブラリの名前を指定可能である。リソースドライバのidが登録されていない場合、HAL202は、共有ライブラリをロードするオペレーティングシステムメソッドの使用によって、リソースドライバ302を含んでいる共有ライブラリ
のロードを試行可能である。
C++の実装では、リソースドライバ302は、複数の継承を用いて、IResourceDriverインターフェース706と、IResourceから導出され実装を行うリソースインターフェース702とから導出される。リソースドライバ302は、次いで、抽象化されるリソース304の特定の詳細に対する適切なコードを用いて、これらのインターフェースの仮想メソッドを実装する。
種々のリソースドライバ302およびリソースインターフェース702は、所定のシステムに存在し得る。以下に、どのリソースインターフェース702が実際に利用可能かを識別する1つの方法を説明する。
IResourceDriverインターフェース706ベースクラスは、リソースドライバ302によって実装されるべき仮想の「obtain_interface」メソッドを指定する。このメソッドは、リソースドライバ302がどのリソースインターフェース702を実装するかを、リソースドライバ302が特定する方法である。
この方法では、入力としてインターフェースリソースidを受け取る。リソースドライバ302が、指定されたidを有するリソースインターフェース702を実装する時、「obtain_interface」メソッドが、指定されたリソースインターフェース702へ有効な参照を返し、その後、それを用いて、そのリソースインターフェース702のメソッドを直接呼び出すことができる。
利点 I(d) は、より高レベルのソフトウェアにリソースを利用可能にすることである。一度リソースドライバ302が活性化させられると、リソースコンテナ402は、より高レベルのソフトウェアがリソースを使用できるようにする。一実施形態では、リソースコンテナ402は、リソースを、それ自体の「obtain_interface」メソッドにより利用可能にする。このメソッドは、リソースドライバidおよびリソースインターフェースidを用いる。リソースコンテナ402は、指定されたリソースドライバの場所を見つけ、次いで、そのドライバの「obtain_interface」コールを呼び出して、指定されたリソースインターフェース702が実装されるかどうかを決定する。指定されたリソースインターフェース702が、指定されたリソースドライバ302により実装された場合、リソースコンテナ402の「obtain_interface」メソッドは、そのリソースインターフェースへ有効な参照を返す。指定されたリソースインターフェース702が、指定されたリソースドライバ302において利用不可能な場合、「obtain_interface」コールは、適切なエラーコードを返す。これによって、より高レベルのソフトウェアが、所望のリソースインターフェース702に対するクエリーをリソースコンテナ402に行うことができる。一度より高レベルのソフトウェアが、所望のリソースインターフェース702を受け取れば、より高レベルのソフトウェアは、リソース304と相互作用するそのインターフェースメソッドを呼び出すことができる。例えば、一度より高レベルのソフトウェアが、距離センサに望ましいIRangeSensorインターフェースを取得すると、より高レベルのソフトウェアは、IRangeSensorインターフェースの「get_distance_reading」メソッドを呼び出して、扱いやすい現実世界の距離単位でのセンサからの読み取り値を取得することが可能になる。
図8に、距離センサの例を用いて、リソースをより高レベルのソフトウェアに利用可能にするプロセスを示す。リソースを利用可能にするプロセスについては、利点 I(d) に関して簡単に前述した。図8では、振る舞い(より高レベルのソフトウェア)が、距離センサ「IR1」からの読み取り値を要求する。より高レベルのソフトウェアは、リソースコンテナ402のobtain_interfaceメソッドを呼び出して、距離センサ「IR1」のIRangeSensorインターフェースを検索する。この要求を実行するために、リソースコンテナ402は、リソースドライバテーブルを検索して、リソース「IR1」に対応するリソースドライバ302の場所を確認する。一度、確認を行うと、リソースコンテナ402は、このリソースドライバ302のobtain_interfaceメソッドを呼び出し、このメソッドが、IRangeSensorリソースインターフェースの要求を行う。「IR1」に対応するリソースドライバ302は、IRangeSensorリソースインターフェースを実装し、センサ「IR1」用のIRangeSensorリソースインターフェースへの参照をリソースコンテナ402へ返し、次に、このリソースコンテナ402が、要求を出している振る舞いへ返す。振る舞いは、ここで、距離センサ「IR1」に対するIRangeSensorリソースインターフェースへの参照を有し、このリソースインターフェースのget_distance_readingメソッドを呼び出して、扱いやすい現実世界の距離単位での「IR1」距離センサの読み取りを行う。距離センサリソースドライバ302が距離センサインターフェースへ参照を返し、適切な距離の読み取りを提供することができる方法の一例を、「リソースドライバの詳細」に関して以下に説明する。
一実施形態では、振る舞いまたはタスク層におけるより高レベルのソフトウェアのみが、リソースコンテナ402およびリソースインターフェース702と相互作用する。たとえより高レベルのソフトウェアが、別のロボットハードウェアプラットフォームに移動されても、HAL202は、新しいロボットハードウェアプラットフォームのリソース構成408に基づいて適切なリソースドライバ302をロードすることによって、これを処理する。新しいロボットハードウェアプラットフォームではもはやリソースインターフェース702を利用不可能であるというステータスは、より高レベルのソフトウェアによって確認可能であり、その確認は、リソースコンテナの「obtain_interface」コールによりエラー結果コードが返されることによって行われ、それらのリソースに依存するオペレーションは、正常に行われない可能性がある。
利点 I(e) は、第1のハードウェアデバイス306などのハードウェアデバイスへのアクセスのためのセキュリティ機構を、HAL202が提供することを示す。セキュリティのためにHAL202により提供可能な1つの機構が、あらゆるメソッドコールを有するセキュリティパラメータを含むことである。本明細書ではチケットidと呼ぶパラメータは、セキュリティチケットを表わし、好ましくはリソースインターフェース702の公開メソッドにおける第1のパラメータである。
この機構は、個別のメソッドレベルまで比較的優れたセキュリティ粒度をサポートする。例えば、特定のセキュリティ使用許可については、リソースインターフェース702のいくつかのメソッドは、他のものが制限されている間に使用可能である。さらに、リソースドライバ302の「obtain_interface」メソッドは、予約カウントパラメータを有する。このパラメータは、リソースドライバ302への同時アクセスをいくつ許可するかを命令する。例えば、この予約カウントを用いて、何人のクライアントが、同時に、リソースドライバ302のインターフェースへの参照の保持が可能かを、リソースコンテナ402に示すことができる。リソースコンテナ402は、この予約カウントを用いて、参照を追跡し、予約カウントが一杯である場合はクライアントへインターフェースを与えない。任意の数の同時アクセスが許可された場合、参照カウントは、0に設定可能である。
予約カウントが有用になりうる1つの例は、リソースドライバ302の内部の状態を変更する「書き込み者」であるリソースインターフェース702へのアクセスは、リソースドライバ302が一度に1回のみサポートするが、リソースドライバ302の内部の状態を単に問い合わせる「読み出し者」であるリソースインターフェース702へのアクセスは、リソースドライバ302が無制限にサポートする場合である。読み出し者であるリソースインターフェースは、0の予約カウントを指定可能であり、それによって、無制限なアクセスが許可され、また、書き込み者であるリソースインターフェースは、1の予約カウントを指定可能であり、その結果、一度に1回のみの書き込みアクセスが可能となる。リソースドライバ302の「obtain_interface」メソッドのチケットidおよび予約カウントパラメータは、利点 I(e) を提供可能である。
(リソースドライバの詳細)
以下に、IRSensor用のリソースドライバの実装の例を含めて、リソースドライバ302の作成方法の詳細をさらに説明する。
リソースドライバは、適切なインターフェースクラスに加えて、抽象クラスIResourceDriverから導出されることにより実装可能である。IResourceDriverは、HAL202の他のコンポーネントがドライバと相互作用する基本メソッドを宣言する。しかしながら、HAL202は、IResourceDriverから導出されるヘルパークラスを提供することができ、それは、「ResourceDriverImpl」と呼ばれ、「add_ref」、「remove_ref」などのメソッドを使用可能にデフォルト実装することにより、ドライバの作成を容易にする。次いで、ドライバが、初期化、活性化メソッド、およびドライバによるリソースインターフェース702の実装メソッドを再定義することができる。
(初期化)
ハードウェアアクセス、および構成情報の構文解析が一般に活性段階において行われるので、リソースドライバのコンストラクタ内における初期化は、一般に、比較的単純である。メソッドは、活性化準備のために、オブジェクトのメンバ変数を初期化する。以下は、IRSensorコンストラクタの比較的単純な実装に対応するサンプルコードである。
(コードブロック1)(図9):
Figure 2005515903

示した実施形態では、コンストラクタは、単にデータメンバをデフォルトの0値へ初期化する。
(活性化)
一実施形態では、3つのメソッドが、リソースドライバの活性化、すなわち「activate」「deactivate」、および「is_active」を処理する。名前が示すように、メソッドは、活性化、非活性化を引き起こす役割と、活性状態を示す役割とをそれぞれ果たす。活性化および非活性化は、繰り返し行うことができ、例えば、フェールセーフシステムが、デバイスをリセットしようと作動を停止するドライバを非活性化および再活性化させることができ、リソースドライバ302が、このような活性を適切に処理すべきである。「activate」および「deactivate」シーケンスの後に、リソースドライバ302およびハードウェアは、活性前の状態と同じ状態に戻る。この理由のために、ハードウェア、スレッドおよび/またはネットワーク、あるいは他の通信の初期化は、コンストラクタ内ではなく、「activate」時に行われるべきである。シャットダウンは、「deactivate」時に行われるべきである。リソース構成408の読み出しは、「activate」時に行われ、リソース構成408内においてパラメータを用いて、リソースドライバを適切な状態にセットする。「is_active」メソッドは、活性化がうまく完了した場合は「true」表示を返し、またはそうでない場合は「false」を返し得る。「is_active」メソッドが、ドライバの状態の正確なレポートを提供することに留意すべきである。リソースドライバ302を管理するリソースコンテナ402は、この情報を用いて、ハードウェアが正常に作動しているか、ならびにドライバが、インターフェースポインタの要求を受け入れる準備ができているかを判断することができる。
さらに、「activate」メソッドは、実行開始時に「is_active」をチェック可能であり、リソースドライバ302が既に活性状態である場合、直ちに、など、比較的早く成功の表示を返す。「deactivate」メソッドによって、リソースドライバ302が活性状態でないかどうかを判断可能である。「activate」または「deactivate」のコールが繰り返されたことはエラーではなく、そのメソッドの意味は、実質的に、もしまだ活性状態になっていなければ活性化する」ということである。
以下は、IRSensorリソースドライバの例についての「activate」メソッドに対応するサンプルコードである。ここに示したサンプルコードは、扱いやすいように単純化しており、示したソースコードに、ログインおよび/またはエラー処理関数を追加可能であることを、当業者は理解するだろう。
(コードブロック2)(図11)
Figure 2005515903
「activate」メソッドの1つの目的は、IRSensorへの有効なデバイスハンドルを取得することである。そうするためには、resource.configの「get_parameter」および「get_bus_id」メソッドを呼び出すことによって、リソース構成408からIRSensorが接続されるアドレスおよびバスを取得すべきである。メソッドがバスidを取得すると、そのメソッドは、リソースコンテナ402の「obtain_interface」メソッドを呼び出すことにより、バスリソースドライバへの参照を得る。バスのリソースインターフェースが取得されると、メソッドは、そのインターフェースの「get_device」メソッドを呼び出して、IRSensorのデバイスハンドルへの参照を取得する。このデバイスハンドルが有効である限り、IRSensorへのアクセスが可能であり、リソースは、活性状態であると考えることができる。
IRSensorリソースドライバの「is_active」メソッドの1つの実装は、次のとおりである。
(コードブロック2a)(図10)
Figure 2005515903
「deactivate」メソッドに対応するソースコードの1つの例が、以下の通りである。
(コードブロック3)(図12)
Figure 2005515903
「deactivate」メソッドは、デバイスおよびバスインターフェースの解放によりクリーンアップを行う。「deactivate」メソッドはまた、_deviceおよび_busインターフェースのポインタをヌルに、_addressを0にリセットして、「activate」メソッドを呼び出す前の状態に戻す。このサンプルコードはまた、HAL202のオブジェクトの、ここに示した実施形態の組み込み参照カウントを示す。「release_interface」コールは、実際に、それらのオブジェクトが他のオブジェクトにより参照されない時は、バスおよびデバイスオブジェクトを削除する。
(インターフェースの取得)
リソースドライバ302を有効にするために、他のソフトウエアコンポーネントがアクセス可能な、周知のリソースインターフェース702を公開するべきである。後述する「obtain_interface」メソッドは、その機能を実行可能な1つの方法を示す。リソースドライバ302は、リソースコンテナ402の内部において保護されており、その結果、リソースインターフェース702を要求しているコンポーネントが、あるリソースドライバ302によって実装される時、その要求は、リソースコンテナ402を通じて行われる。コンテナの「obtain_interface」メソッドは、リソースドライバ302が活性状態であることを確認し、次に、リソースインターフェース702を要求するリソースドライバ302の「obtain_interface」メソッドを呼び出す。
次いで、ドライバは、要求されたリソースインターフェース702がサポートされているかどうかを判断し、要求されたリソースインターフェース702にポインタを返す。要求されたリソースインターフェース702がサポートされていない場合、そのコールは、「RESULT_NOT_IMPLEMENTED」を返す。リソースインターフェース702が返される場合、クライアントが、リソースドライバ302への参照を有し、実行時にリソースコンテナ402を通じてそれを解放する役割を担うので、「obtain_interface」は、リソースドライバ302の「add_ref」メソッドを呼び出す。インターフェースポインタに加えて、HAL202の利点I(e)に関して述べたように、「obtain_interface」メソッドは、予約カウントを出力する。以下の例では、IRSensorリソースドライバは、それが実装する唯一のものである、IRangeSensorリソースインターフェースへの無制限のアクセスを許可し、したがって、予約カウントは0にセットされる。
(コードブロック4)(図13)
Figure 2005515903
示した実施形態では、IRSensorインターフェースは、IRangeSensorインターフェースのみをサポートしているので、interface_nameパラメータが、一定のIRangeSensor::INTERFACEIDと一致するかを判断するだけでよい。リソースドライバ302がまた、1つを超えるリソースインターフェース702をサポート可能であることが理解され、この場合には、「obtain_interface」メソッドは、サポートされたリソースインターフェース702のidを有するinterface_nameパラメータをチェックし、一致することが分かると、適切なインターフェースの参照を返す。
リソースインターフェース702は、カプセル化されたリソース304のオペレーションに関連するメソッドを確定する。この例におけるIRangeSensorリソースインターフェースは、以下のメソッドを実装する。
(コードブロック5)
Figure 2005515903
これらのメソッドは、距離センサのための典型的なオペレーションを示す。「get_distance_reading」メソッドは、センサの生の読み取り値から処理済みの現実世界の単位による読み取り値を返す。「get_raw_reading」メソッドは、センサから生の読み取り値を返す。
サンプルIRSensorリソースドライバ用の「get_distance_reading」メソッドのサンプル実装に対応するソースコードの1つの例を以下に示す。
(コードブロック6)(図14)
Figure 2005515903
ここに示した「get_distance_reading」メソッドは、リソースドライバ302が処理前に活性状態であることを確認する。次いで、「get_distance_reading」メソッドは、「activate」メソッドにより予め取得されたセンサの _device参照および_address値を引き渡し、ハードウェアドライバメソッド「ercm_device_read_analog」を用いて、この特定のタイプのデバイスにアクセスし、IRSensorから生の値を読み取る。読み取り値に対するタイムスタンプ値が、取得され、「raw_to_distance」メソッドが、それに続き、生の読み取り値を距離の読み取り値に変換する。次いで、変換された距離の値は、出力される距離パラメータへ格納され、「RESULT_SUCCESS」値が返される。
IRSensorが「get_raw_reading」メソッドを実装する一実施形態を以下に示す。
(コードブロック7)(図15)
Figure 2005515903
この実装が、get_distance_readingと、以下の点を除いてほとんど同じであることに留意されたい。すなわち、生の読み取り値を距離へ変換する代わりに、その読み取り値が電圧単位に変換され、この電圧単位が、使用されている特定のIRSensorの生のフォームに相当するという点を除いて、殆ど同じであることに留意されたい。
(註:コードブロック8は、本明細書中にない)
ロボットの振る舞いを生じさせるために、より高レベルのソフトウェアが、どのようにリソースドライバ302の利用が可能かを、以下にさらに詳細に説明する。ロボットの振る舞いの1つの例が、ある距離を所望の速度でロボットを前進させることである。これを実行するために、振る舞いは、ロボットが所望の速度で前進しているかどうかを判断し、移動した距離を周期的に測定し、ロボットが所望の距離を移動するとロボットを停止させることができる。
一実施形態では、この振る舞いは、HAL202により与えられる2つの異なるリソースインターフェース702、すなわち、ドライブシステムリソースインターフェースと走行距離リソースインターフェースとを使用する。ドライブシステムリソースインターフェースは、「move_and_turn」メソッドを与え、このメソッドによって、振る舞いが線速度を指定可能になる。そのメソッドの一実施形態ではまた、角速度の設定が可能であるが、前進の場合には、角速度は、0に設定可能である。
一実施形態では、走行距離リソースインターフェースは、「get_position」メソッドを有し、このメソッドは、位置構造におけるロボットの現在位置を返し、それは、ロボットの方向(θ)に加えて、デカルト座標(x,y)におけるロボットの位置を含んでいる。
図8に関してすでに説明したように、リソースコンテナ402の「obtain_interface」メソッドを呼び出して、HAL202からこれらの2つのリソースインターフェース702への参照を要求することによって、振る舞いが開始される。リソースコンテナ402は、ドライブシステムおよび走行距離リソースインターフェースへの参照を返す。次いで、振る舞いは、走行距離リソースインターフェースの「get_position」メソッドを呼び出して、ロボットの現在位置を検索し、振る舞いは、それを動きの開始点として格納することができる。次いで、振る舞いは、ドライブシステムの振る舞いの「move_and_turn」メソッドを呼び出して、所望の速度でロボットを動かし始める。次いで、振る舞いは、走行距離リソースの「get_position」メソッドを呼び出すことにより、ロボットの現在位置を周期的にチェックするループを開始可能であり、また標準的な平方根による距離計算式を用いて現在位置と開始位置との間の距離を計算して、所望の距離に達したかどうかを確認可能である。これが達成されると、振る舞いは、ループを抜け出し、ドライブシステムリソースインターフェースの「move_and_turn」メソッドを呼び出し、線速度が0に、角速度が0にされて、停止される。この振る舞いのC++実装の1つの例を、以下のコードブロック9に記述する。
(コードブロック9)(図16)
Figure 2005515903
コードブロック9が、HAL202と相互作用して、例えばある距離を前進するなど、単純なロボットオペレーションを行うより高レベルの振る舞いを示す。ここに示したオペレーションでは、2つの異なるリソースインターフェース702を用いる。振る舞いは、まずリソースコンテナ402への「obtain_interface」コールでこれらのリソースインターフェースを取得する。これらのインターフェースへの参照が取得されると、振る舞いは、これらのインターフェースのメソッド、すなわち、IOdometryの「get_position」、およびIDriveSystemの「move_and_turn」を利用して、その目的を達成する。有利なことには、HAL202によって、ここに示したコードは、下層にあるロボットハードウェアの詳細を配慮せずに実行可能である。リソース構成402は、活性状態のハードウェアを表しており、HAL202は、リソース構成408内の情報を用いて、これらの2つのメソッドの正確な実装を決定し振る舞いに返し、その結果、振る舞いがこれらのメソッドを呼び出すと、HAL202により抽象化され活性状態のロボットハードウェアは、意図されたように実行される。
コードブロック10は、2つのモータを有する差動ドライブシステムの「move_and_turn」メソッドの一実装を示す。
(コードブロック10)(図17)
Figure 2005515903
Figure 2005515903
コードブロック10では、差動ドライブシステムのための「move_and_turn」メソッドが、線速度および角速度、ならびに個々の加速度など、扱いやすい現実世界のパラメータを取り入れることができる方法、および所望の効果を生じるように左右のモータにおいて個別の速度を計算することができる方法が示されている。図18は、図17のフローチャートにおける変数参照用の一覧表を含んでいる。これは、リソースインターフェース702の機能を表している。HAL202によって提供されるこれらのメソッドの実装の詳細が、下層のハードウェアに応じて変化し得ることが理解される。例えば、2組の脚を駆動させるために2つのモータを使用するドライブシステム用の「move_and_turn」メソッドの実装は、差動ドライブシステム用の上記のコードとは実質的に異なる。しかしながら、リソース構成408においてどのドライブシステムが活性状態であるかを示すことによって、HAL202は、より高レベルのソフトウェアに正確な実装を行うことができることが好ましく、より高レベルのソフトウェアは、特定のロボットに特有の特性から効果的に切り離される。
(被実装リソースインターフェース)
HAL202の一実施形態により実装可能なリソースインターフェース702の、必ずしも全てではないがリストを以下に示す。さらなるリソースインターフェース702が、追加され得ることが理解されるだろう。リソースインターフェースは、読み出し可能性について一般的なカテゴリに整理されている。
(オーディオカテゴリ)
HAL202は、従来のロボット用ではないプラットホーム内においてサポートされるデバイスを含めて、非常に広範囲のデバイスのための抽象化を行うことが好ましい。オーディオリソースの抽象化によって、より高レベルのソフトウェアが、マイクロホン、デジタルシンセサイザ、スピーカーなどのロボットに取り付けられた音声装置と相互作用し得る。オブジェクト指向設計を用いると、オーディオリソースは、以下のクラス階層に構成可能である。
Figure 2005515903
IAudioBaseによって、モノラルまたはステレオ、サンプリングレート、ブロックサイズ、オーディオチャネルの数、ならびに利用可能なオーディオデバイスの列挙および選択などのデジタルオーディオパラメータの仕様が可能になる。
IAudioPlayが、デジタル音声を再生するために使用可能である。
IAudioRecordが、デジタル音声を録音するために使用可能である
IAudioLevelが、ロボットの周りの環境において一般的な周囲の騒音ボリュームを取得するために使用可能である。IAudioLevelは、高レベルのソフトウエアコンポーネントにより使用されて、音声に反応し得るセンサ入力を提供可能である。例えば、セキュリティ振る舞いは、ある周囲のボリュームレベルに反応して「侵入者警報」を鳴らすように構成可能である。
(視覚的カテゴリ)
視覚的なカテゴリのリソースが、カメラのような視覚センサを抽象化する。それらによって、画像サイズ、色の深さおよびフォーマット、映像コーデック、映像フレーム速度、圧縮の質のような種々の映像および静止画像パラメータの仕様が可能になる。一実施形態では、リソース階層は、以下のとおりである。
Figure 2005515903
ICameraリソースが、単一のカメラから静止画像および映像を取得可能である。取得された画像は、種々の色構成の生ラスタデータに従って、あるいはJPEGなどの圧縮形式で格納可能である。ICameraGroupリソースの一実施形態は、複数のカメラの相互作用の抽象化を行い、1台を超えるカメラの相対的な位置、方向、および間隔を考慮して、立体視像またはパノラマ画生成などの応用のための複数の画像および映像を同期取り込み可能にする。
(センサカテゴリ)
センサカテゴリは、種々のタイプの非視覚的なセンサデバイスのリソース抽象化を含んでいる。利用可能なセンサの種類は、レーザ距離計などの比較的ハイテクで高コストのセンサから、ソナーまたはバンプスイッチセンサなどの比較的単純で低コストのセンサまで、非常に多い。センサリソースは、この多様性に対処する困難を伴わずに、センサを機能別カテゴリにグループ化しかつ各カテゴリへ比較的単純で一様なインターフェースを提供することによって、抽象化を行う。機能別カテゴリの説明に続いて、以下に、クラス階層をさらに詳細に説明する。
Figure 2005515903
IBumpSensorリソースは、センサとある異物との間の物理的な接触を検知するセンサを抽象化することができる。このカテゴリのセンサには、様々なスイッチセンサが含まれる。
IRangeSensorリソースは、センサが測定可能な距離内の異物の存在を検知するセンサを抽象化することができる。IRangeSensorリソースの一実施形態は、単一の距離読み取り値を返す。リソースは、不明瞭なゾーンまたはデッドゾーン、最小範囲、最大範囲などのある距離センサの物理的限界を記述する。センサから返された読み取り値は、距離単位に変換され、リソースの実装によりエラーを最小限にするフィルタリングを行うことができる。このカテゴリのセンサには、ほとんどのIRおよびソナーセンサが含まれる。
ISpatialSensorリソースは、比較広い範囲において異物の存在を検知するセンサを抽象化し、一度に複数の読み取り値を返すことができる。回転レーザ距離計が、このカテゴリのセンサの一例である。
(感情)
Figure 2005515903
IFaceリソースインターフェースが、感情パラメータに基づいた、3D表示の顔の操作をサポートする。顔は、笑顔、しかめ面などの表情を反映するように変化し得る。
Figure 2005515903
IMotorCommandリソースインターフェースが、モータの回転速度および加速度を設定するなど、単一のモータの制御をカプセル化する。
IMotorQueryリソースインターフェースは、モータの位置または速度などの単一のモータの状態に関して行い得るクエリーをカプセル化する。
IDriveSystemリソースインターフェースが、ロボット全体を動かすドライブシステムを抽象化することができる。このリソースインターフェースは、他のソフトウエアコンポーネントが、線速度および角速度などの扱いやすい現実世界のパラメータに基づいてロボットの動きを制御することを可能にする。その実装によって、これらの単純なコマンドが、仮想の移動ハードウェアの対応の制御信号に変換され、それは、差動ドライブシステムの2つのモータ、または複数のロボット脚の複雑な動きなど広範囲の種々のハードウェアに相当し得る。
Figure 2005515903
IImageDisplayリソースインターフェースは、グラフィックユーザーインターフェースウィンドウに画像を表示する能力をカプセル化する。
Figure 2005515903
IJoystickリソースインターフェースは、ジョイスティックからの入力をカプセル化する。
ISwitchDeviceリソースインターフェースは、外部の多位置ハードウェアスイッチからの入力をカプセル化する。
Figure 2005515903
IGripperリソースインターフェースは、グリッパーの状態へのクエリー、およびグリッパーの開閉コマンドを含めて、グリッパーのオペレーションをカプセル化する。
Figure 2005515903
ISpeechRecognizerリソースインターフェースは、音声認識インターフェースを抽象化する。
ISpeechTTSリソースインターフェースは、テキスト入力から音声を合成する能力をサポートするメソッドを含み得る。
Figure 2005515903
IPollableリソースインターフェースは、選択されたリソースのポーリングオペレーションをカプセル化する。リソースインターフェース702にポーリングを行う時、リソースインターフェース702はまた、ポーリング方法とポーリングの間隔とを示す実装をこのインターフェースに行う。
ITransactableリソースインターフェースは、いくつかのリソースドライバをサポート可能であり、単一のトランザクションの一部分として複数のコマンドおよび/またはクエリーを送信するように構成される。
本発明の種々の実施形態を上に述べてきた。これらの特定の実施形態に関して本発明を説明してきたが、説明は、本発明を例示するものであって限定する意図はない。添付の特許請求の範囲に定められるような本発明の真の精神および範囲から逸脱せずに、種々の変更および応用を、当業者は着想可能である。
本発明の実施形態で使用可能な種々のロボットの、全てではないがサンプルを示す図である。 通常のロボットソフトウェアアーキテクチャを示す図である。 ハードウェア抽象層(HAL)を用いたソフトウェアアーキテクチャを示す図である。 ハードウェアデバイスの抽象化、およびリソースドライバとリソースとの間の関係を示す図である。 HALの詳細をさらに示す図である。 ハードウェアデバイスの、論理デバイスバスから処理ユニットへの結合を示す図である。 リソースの構成の詳細をさらに示す図である。 リソースドライバオブジェクトが、IResourceDriverと、1つまたはそれ以上のIResource インターフェースとから導出される様子を示す図である。 より高レベルのソフトウェアによるリソースの利用を可能にする処理を示す図である。 本発明の態様の概要を示すフローチャートである。 図17に示したフローチャートの変数の参照符号表である。

Claims (14)

  1. ロボットソフトウェアアーキテクチャ内のハードウェア抽象化層(HAL)であって、
    高レベルのソフトウェアに対するソフトウェアインターフェースであって、当該ソフトウェアインターフェースが、ロボットと環境との相互作用に関連した現実世界の測定値を伴って、より高レベルのロボットソフトウェアと通信するように構成された前記ソフトウェアインターフェースと、
    前記高レベルのソフトウェアに、利用可能なリソースの表示を提供するリソース構成と、
    複数のリソースドライバであって、当該リソースドライバの少なくとも一部分が、前記リソース構成内の利用可能なリソースに相当し、前記リソースドライバの少なくとも2つが、機能性において部分的に重なっており、前記少なくとも2つのリソースドライバの1つのみが、利用可能な対応のリソースを有し、利用可能なリソース用のリソースドライバが、ロボット用の現実世界の測定値と、デバイス用のデバイスレベルの測定値との間において変換を行うように構成されている前記複数のリソースドライバと、
    低レベルのデバイスドライバに対するインターフェースであって、当該低レベルのデバイスドライバが、デバイスレベルにおいて対応のハードウェアと通信し、前記低レベルのデバイスドライバに対するインターフェースが、リソースドライバを介して、前記高レベルのソフトウェアと通信する、前記低レベルのデバイスドライバに対するインターフェースと、
    を備えるHAL。
  2. 前記リソース構成が、構造上の、ロボットへのデバイスの結合場所についての表示をさらに含む請求項1に記載のHAL。
  3. 前記高レベルのソフトウェアが、プランナ、アプリケーション、振る舞いおよびタスクから成るグループから選択される少なくとも1つを含む請求項1に記載のHAL。
  4. デバイスドライバが、モータドライバに対応し、対応のリソースドライバが、車輪の直径および歯車比を用いて、前記リソースドライバが、前記モータドライバ用のモータ角速度と、前記高レベルのソフトウェア用の線速度との間において変換を行うように、モータの角速度として与えられる速度を計算する請求項1に記載のHAL。
  5. 前記リソースドライバが、前記高レベルのソフトウェアと前記低レベルのデバイスドライバとの間のアプリケーションプログラムインターフェース(API)層内に存在する請求項1に記載のHAL。
  6. ロボットに、ロボット制御ソフトウェアのハードウェア抽象化を提供する方法であって、
    対応のハードウェアがロボットに存在しないリソースドライバを含む、前記ロボット用の複数のリソースドライバを設けるステップと、
    前記ロボット用のハードウェア構成を検出するステップと、
    前記検出された前記ハードウェア構成に基づき、前記ロボットにおいて利用可能なリソースを自動的に検出するステップと、
    前記ロボット制御ソフトウェアから、1つのタイプのリソースを使用する要求を受信するステップと、
    前記ロボット制御ソフトウェアにより要求されたタイプのリソースに相当するリソースを、前記利用可能なリソースから自動的に選択するステップと、
    前記選択されたリソースの使用に関連するとともに、ロボットに関連する測定単位で提供される第1の情報を前記ロボット制御ソフトウェアと交換するステップと、
    第2の情報であって、前記ロボット制御ソフトウェアによる使用要求に関連し、対応のデバイスに関連する測定単位で提供され、前記第1の情報とは異なる、前記リソースに対応する前記第2の情報を、低レベルのデバイスドライバと交換するステップと、
    前記ロボットの検出された構成に基づき、前記第1の情報及び前記第2の情報の間において変換を行うステップと、
    を含む、HAL。
  7. 前記第1の情報が線速度であり、前記第2の情報が角速度である請求項6に記載の方法。
  8. 前記方法が、アプリケーションプログラムインターフェース(API)において実施される請求項6に記載の方法。
  9. リソースのタイプが、距離の意味を含み、前記選択されるリソースが、バンプセンサ、レーザ距離計、超音波センサ、および赤外線センサから成るグループから選択された1つのデバイスに相当する請求項6に記載の方法。
  10. 前記ロボットが最初はバンプセンサを含み、かつ前記ロボット用のハードウェア構成が前記バンプセンサを指定し、さらに、
    前記バンプセンサを赤外線センサに変更するステップと、
    前記ロボット用のハードウェア構成を変更するステップと、
    前記ロボット制御ソフトウェアを、変更せずに使用可能となるように、前記ロボットの新たに検出された構成に基づいて、前記第1の情報と前記第2の情報とを自動的に変換するステップと、
    を含む請求項6に記載の方法。
  11. メソッドコールを有するセキュリティパラメータを含むステップと、
    リソースへのアクセスが要求された時に、セキュリティチケットを確認するステップと、
    前記セキュリティチケットに基づいて前記リソースへのアクセスを抑制するステップと、
    をさらに含む請求項6に記載の方法。
  12. リソースへのアクセスに基づいて更新される予約カウントパラメータを管理するステップと、
    前記カウントに基づいて前記リソースへのアクセスを制御するステップと、
    をさらに含む請求項6に記載の方法。
  13. ロボット内の、ロボット制御ソフトウェア用のハードウェア抽象化層(HAL)であって、
    対応のハードウェアがロボットに存在しないリソースドライバを含む、前記ロボット用の複数のリソースドライバを設ける手段と、
    前記ロボット用のハードウェア構成を検出する手段と、
    前記検出されたハードウェア構成に基づき、前記ロボットにおいて利用可能なリソースを自動的に検出する手段と、
    前記ロボット制御ソフトウェアから、1つのタイプのリソースを使用する要求を受信する手段と、
    前記ロボット制御ソフトウェアにより要求されたタイプのリソースに相当するリソースを、前記利用可能なリソースから自動的に選択する手段と、
    前記選択されたリソースの使用に関連し、かつロボットに関連する測定単位で提供される第1の情報を前記ロボット制御ソフトウェアと交換する手段と、
    第2の情報であって、前記ロボット制御ソフトウェアによる使用要求に関連し、対応のデバイスに関連する測定単位で提供され、前記第1の情報とは異なる、前記リソースに対応する前記第2の情報を、低レベルのデバイスドライバと交換する手段と、
    前記ロボットの検出された構成に基づき、前記第1の情報と前記第2の情報とを変換する手段と、
    を含む、HAL。
  14. コンピュータ読み出し可能媒体であって、方法を実施する命令をコンピュータが実行可能であり、当該方法は、
    対応のハードウェアがロボットに存在しないリソースドライバを含む、前記ロボット用の複数のリソースドライバを設けるステップと、
    前記ロボット用のハードウェア構成を検出するステップと、
    前記検出されたハードウェア構成に基づき、前記ロボットにおいて利用可能なリソースを自動的に検出するステップと、
    前記ロボット制御ソフトウェアから、1つのタイプのリソースを使用する要求を受信するステップと、
    前記ロボット制御ソフトウェアにより要求されたタイプのリソースに相当するリソースを、前記利用可能なリソースから自動的に選択するステップと、
    前記選択されたリソースの使用に関連し、かつロボットに関連する測定単位で提供される第1の情報を前記ロボット制御ソフトウェアと交換するステップと、
    第2の情報であって、前記ロボット制御ソフトウェアによる使用要求に関連し、対応のデバイスに関連する測定単位で提供され、前記第1の情報とは異なる、前記リソースに対応する前記第2の情報を、低レベルのデバイスドライバと交換するステップと、
    前記ロボットの検出された構成に基づき、前記第1の情報と前記第2の情報とを変換するステップと、
    を含む、コンピュータ読み出し可能媒体。
JP2003547121A 2001-11-28 2002-11-27 ロボット用センサおよびアクチュエータのハードウェア抽象化層内における抽象化および集合化 Pending JP2005515903A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US33414201P 2001-11-28 2001-11-28
US35562402P 2002-02-08 2002-02-08
US37430902P 2002-04-19 2002-04-19
PCT/US2002/038280 WO2003045639A2 (en) 2001-11-28 2002-11-27 Sensor and actuator abstraction and aggregation in a hardware abstraction layer for a robot

Publications (2)

Publication Number Publication Date
JP2005515903A true JP2005515903A (ja) 2005-06-02
JP2005515903A5 JP2005515903A5 (ja) 2010-07-08

Family

ID=27406961

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003547121A Pending JP2005515903A (ja) 2001-11-28 2002-11-27 ロボット用センサおよびアクチュエータのハードウェア抽象化層内における抽象化および集合化

Country Status (5)

Country Link
US (5) US6889118B2 (ja)
JP (1) JP2005515903A (ja)
KR (1) KR100980793B1 (ja)
AU (1) AU2002357040A1 (ja)
WO (1) WO2003045639A2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009509787A (ja) * 2005-09-29 2009-03-12 本田技研工業株式会社 人型ロボットのための拡張可能なタスクエンジンフレームワーク
JP2010142943A (ja) * 2008-12-22 2010-07-01 Korea Electronics Telecommun ロボット応用プログラム実行装置及び方法
WO2011045870A1 (ja) * 2009-10-16 2011-04-21 国立大学法人奈良先端科学技術大学院大学 データ中継用rtコンポーネント生成方法及びそのプログラム
JP2014504958A (ja) * 2010-12-17 2014-02-27 アルデバラン ロボティクス エス、ア 物理的および仮想的資源の管理プログラムを備えるヒューマノイドロボット、使用方法、およびプログラミング方法
JP2016120567A (ja) * 2014-12-25 2016-07-07 株式会社キーエンス 画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラム
JP2019511376A (ja) * 2016-03-07 2019-04-25 ソフトバンク・ロボティクス・ヨーロッパSoftbank Robotics Europe ロボットのモジュラー製造
KR20200132693A (ko) * 2020-04-27 2020-11-25 군산대학교산학협력단 로봇 및 자율이동체 정밀 모션 제어를 위한 단독형 음성인식 기반 에이전트 모듈
KR20200132694A (ko) * 2020-04-27 2020-11-25 군산대학교산학협력단 로봇 및 자율이동체 정밀 모션 제어를 위한 단독형 음성인식 기반 에이전트 모듈의 작동방법

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206219A1 (en) * 1995-05-30 2006-09-14 Brown David W Motion control systems and methods
US20010032278A1 (en) 1997-10-07 2001-10-18 Brown Stephen J. Remote generation and distribution of command programs for programmable devices
WO2002054184A2 (en) * 2001-01-04 2002-07-11 Roy-G-Biv Corporation Systems and methods for transmitting motion control data
US7904194B2 (en) 2001-02-09 2011-03-08 Roy-G-Biv Corporation Event management systems and methods for motion control systems
KR100980793B1 (ko) * 2001-11-28 2010-09-10 에볼루션 로보틱스, 인크. 로봇을 위한 하드웨어 추상화 계층에서의 센서 및액추에이터 추상화 및 집단화
US7483832B2 (en) * 2001-12-10 2009-01-27 At&T Intellectual Property I, L.P. Method and system for customizing voice translation of text to speech
US20060069567A1 (en) * 2001-12-10 2006-03-30 Tischer Steven N Methods, systems, and products for translating text to speech
US8204930B1 (en) * 2002-02-15 2012-06-19 F5 Networks, Inc. Method and system for controlling and accessing content servers
JP2003308221A (ja) * 2002-04-12 2003-10-31 Nec Corp ロボット制御システムと方法並びにプログラム
US7844364B2 (en) * 2002-04-16 2010-11-30 Irobot Corporation Systems and methods for dispersing and clustering a plurality of robotic devices
US7117067B2 (en) * 2002-04-16 2006-10-03 Irobot Corporation System and methods for adaptive control of robotic devices
US20040138780A1 (en) * 2002-11-15 2004-07-15 Lewis Murray Anthony Certain principles of biomorphic robots
US7127326B2 (en) * 2002-11-15 2006-10-24 Iguana Robotics, Inc. Certain principles of biomorphic robots including foot placement selection using non-geometric visual properties
AU2003283693A1 (en) * 2002-12-19 2004-07-14 Koninklijke Philips Electronics N.V. System and method for controlling a robot
CN100351789C (zh) * 2003-03-28 2007-11-28 索尼株式会社 信息提供设备、方法和信息提供系统
US7222349B1 (en) 2003-06-30 2007-05-22 Veritas Operating Corporation External device support for device abstraction layer
JP2005088179A (ja) * 2003-09-22 2005-04-07 Honda Motor Co Ltd 自律移動ロボットシステム
US8027349B2 (en) 2003-09-25 2011-09-27 Roy-G-Biv Corporation Database event driven motion systems
US20060064503A1 (en) 2003-09-25 2006-03-23 Brown David W Data routing systems and methods
JP2005103722A (ja) * 2003-09-30 2005-04-21 Toshiba Corp 協調ロボット装置、システム、およびナビゲーションロボット装置
US20050076168A1 (en) * 2003-10-06 2005-04-07 Sun Microsystems, Inc. Logical devices as a wrapper for physical devices in a system
US7487500B1 (en) * 2003-10-09 2009-02-03 Nortel Networks Limited System and method for installing and configuring software for a network element in an optical communications network
US7739692B2 (en) * 2004-01-05 2010-06-15 Research Investment Network, Inc. Minimizing the dependency of source code on the in-band resources of a set-top box
JP4244812B2 (ja) * 2004-01-16 2009-03-25 ソニー株式会社 行動制御システム及びロボット装置の行動制御方法
JP2005258712A (ja) * 2004-03-10 2005-09-22 Canon Inc オブジェクト管理システム
KR100559251B1 (ko) * 2004-05-12 2006-03-15 한국생산기술연구원 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법
KR100607141B1 (ko) 2004-05-12 2006-08-01 한국생산기술연구원 개방형 분산처리구조의 로봇 제어 시스템
US8000837B2 (en) 2004-10-05 2011-08-16 J&L Group International, Llc Programmable load forming system, components thereof, and methods of use
KR100757906B1 (ko) * 2004-11-26 2007-09-11 한국전자통신연구원 네트워크 기반 로봇 시스템 및 그 실행 방법
WO2006062948A2 (en) * 2004-12-06 2006-06-15 Honda Motor Co., Ltd. Interface for robot motion control
US8332830B2 (en) * 2005-02-08 2012-12-11 Eliezer Kantorowitz Environment-independent software
US7555363B2 (en) * 2005-09-02 2009-06-30 Neato Robotics, Inc. Multi-function robotic device
US7860614B1 (en) * 2005-09-13 2010-12-28 The United States Of America As Represented By The Secretary Of The Army Trainer for robotic vehicle
WO2007035520A2 (en) * 2005-09-15 2007-03-29 Honda Motor Co., Ltd. Interface for sensor query and control
DE102005050579A1 (de) * 2005-10-21 2007-05-10 Boris Kaplan Ein Computersystem und das Arbeitsverfahren von diesem Computersystem von Künstlicher Intelligenz von einem Cyborg oder einem Android.
US20070112462A1 (en) * 2005-11-10 2007-05-17 Jong-Myeong Kim Method for detecting if command implementation was completed on robot common framework, method for transmitting and receiving signals and device thereof
US10331136B2 (en) * 2006-02-27 2019-06-25 Perrone Robotics, Inc. General purpose robotics operating system with unmanned and autonomous vehicle extensions
US9195233B2 (en) * 2006-02-27 2015-11-24 Perrone Robotics, Inc. General purpose robotics operating system
US9833901B2 (en) * 2006-02-27 2017-12-05 Perrone Robotics, Inc. General purpose robotics operating system with unmanned and autonomous vehicle extensions
US20070293989A1 (en) * 2006-06-14 2007-12-20 Deere & Company, A Delaware Corporation Multiple mode system with multiple controllers
US7801644B2 (en) * 2006-07-05 2010-09-21 Battelle Energy Alliance, Llc Generic robot architecture
US8965578B2 (en) 2006-07-05 2015-02-24 Battelle Energy Alliance, Llc Real time explosive hazard information sensing, processing, and communication for autonomous operation
US7587260B2 (en) * 2006-07-05 2009-09-08 Battelle Energy Alliance, Llc Autonomous navigation system and method
US7584020B2 (en) * 2006-07-05 2009-09-01 Battelle Energy Alliance, Llc Occupancy change detection system and method
US8073564B2 (en) 2006-07-05 2011-12-06 Battelle Energy Alliance, Llc Multi-robot control interface
US8355818B2 (en) 2009-09-03 2013-01-15 Battelle Energy Alliance, Llc Robots, systems, and methods for hazard evaluation and visualization
US7211980B1 (en) 2006-07-05 2007-05-01 Battelle Energy Alliance, Llc Robotic follow system and method
US7668621B2 (en) * 2006-07-05 2010-02-23 The United States Of America As Represented By The United States Department Of Energy Robotic guarded motion system and method
US7620477B2 (en) * 2006-07-05 2009-11-17 Battelle Energy Alliance, Llc Robotic intelligence kernel
US7974738B2 (en) 2006-07-05 2011-07-05 Battelle Energy Alliance, Llc Robotics virtual rail system and method
US8271132B2 (en) 2008-03-13 2012-09-18 Battelle Energy Alliance, Llc System and method for seamless task-directed autonomy for robots
US8442795B2 (en) * 2006-07-10 2013-05-14 Bin1 Ate, Llc System and method for performing processing in a testing system
US20080046121A1 (en) * 2006-08-17 2008-02-21 Innovati, Inc. Developing system of re-configurable modularized robot
US8996172B2 (en) 2006-09-01 2015-03-31 Neato Robotics, Inc. Distance sensor system and method
KR100853426B1 (ko) * 2006-12-20 2008-08-21 한국생산기술연구원 인간형 로봇의 장치관리자 및 관리 방법
KR100877715B1 (ko) * 2007-02-02 2009-01-09 한국과학기술연구원 지능형 로봇을 위한 센싱, 구동 및 실시간 행동을 포함한리액티브 층 소프트웨어의 구조
DE102007055117A1 (de) 2007-03-26 2008-10-02 Boris Kaplan Ein System von Künstlicher Intelligenz von einem Cyborg oder einem Android für das zeigerorientierte Objekterfassungsverfahren von Informationen basierend auf einer natürlichen Sprache und das Arbeitsverfahren von dem System
JP2010526590A (ja) 2007-05-07 2010-08-05 レイセオン・サルコス・エルエルシー 複合構造物を製造するための方法
JP5331102B2 (ja) * 2007-05-08 2013-10-30 レイセオン カンパニー ロボットクローラのための可変プリミティブマッピング
US8078357B1 (en) 2007-06-06 2011-12-13 Spark Integration Technologies Inc. Application-independent and component-isolated system and system of systems framework
JP5285701B2 (ja) * 2007-07-10 2013-09-11 レイセオン カンパニー モジュール式ロボットクローラ
IL185124A0 (en) * 2007-08-08 2008-11-03 Wave Group Ltd A generic omni directional imaging system & method for vision, orientation and maneuver of robots
US20090082879A1 (en) 2007-09-20 2009-03-26 Evolution Robotics Transferable intelligent control device
KR100893758B1 (ko) * 2007-10-16 2009-04-20 한국전자통신연구원 로봇의 감성 표현 제어 시스템 및 방법
JP4839487B2 (ja) * 2007-12-04 2011-12-21 本田技研工業株式会社 ロボット及びタスク実行システム
US8961695B2 (en) 2008-04-24 2015-02-24 Irobot Corporation Mobile robot for cleaning
EP2918212B1 (en) 2008-04-24 2016-06-08 iRobot Corporation Application of localization, positioning & navigation systems for robotic enabled mobile products
KR101182727B1 (ko) 2008-12-22 2012-09-18 한국전자통신연구원 로봇 태스크 모델의 생성 및 실행 방법과 그 장치
US8392036B2 (en) 2009-01-08 2013-03-05 Raytheon Company Point and go navigation system and method
US20100179689A1 (en) * 2009-01-09 2010-07-15 National Taiwan University Of Science And Technology Method of teaching robotic system
WO2010144813A1 (en) 2009-06-11 2010-12-16 Raytheon Sarcos, Llc Method and system for deploying a surveillance network
US8406925B2 (en) * 2009-07-01 2013-03-26 Honda Motor Co., Ltd. Panoramic attention for humanoid robots
US8214105B2 (en) * 2009-08-21 2012-07-03 Metra Electronics Corporation Methods and systems for automatic detection of steering wheel control signals
US20110224873A1 (en) * 2009-09-17 2011-09-15 Reeve David R Vehicle assembly controller with automaton framework and control method
US8260460B2 (en) * 2009-09-22 2012-09-04 GM Global Technology Operations LLC Interactive robot control system and method of use
US8244402B2 (en) * 2009-09-22 2012-08-14 GM Global Technology Operations LLC Visual perception system and method for a humanoid robot
US8948913B2 (en) * 2009-10-26 2015-02-03 Electronics And Telecommunications Research Institute Method and apparatus for navigating robot
KR101277275B1 (ko) * 2009-12-09 2013-06-20 한국전자통신연구원 로봇 시스템의 행위 기반 태스크 구현 방법
US8521328B2 (en) * 2009-12-10 2013-08-27 The Boeing Company Control system for robotic vehicles
US20110169832A1 (en) * 2010-01-11 2011-07-14 Roy-G-Biv Corporation 3D Motion Interface Systems and Methods
US8910143B2 (en) * 2010-09-20 2014-12-09 General Electric Company Conversion system and method for use in upgrading a monitoring system
US20120072020A1 (en) * 2010-09-20 2012-03-22 Electronics And Telecommunications Research Institute Method and apparatus for dynamically reconfiguring robot components
US20120123614A1 (en) * 2010-11-17 2012-05-17 INRO Technologies Limited Method and apparatus for virtualizing industrial vehicles to automate task execution in a physical environment
KR101809973B1 (ko) * 2011-01-24 2017-12-19 삼성전자주식회사 로봇 제어 시스템 및 로봇 제어 방법
US8805579B2 (en) 2011-02-19 2014-08-12 Richard Arthur Skrinde Submersible robotically operable vehicle system for infrastructure maintenance and inspection
KR102041093B1 (ko) 2011-04-11 2019-11-06 크라운 이큅먼트 코포레이션 조정된 경로 계획기를 사용하는 다수의 자동화 비-홀로노믹 차량들을 효율적으로 스케줄링하는 방법 및 장치
US9026248B1 (en) * 2011-05-06 2015-05-05 Google Inc. Methods and systems for multirobotic management
US20140058634A1 (en) 2012-08-24 2014-02-27 Crown Equipment Limited Method and apparatus for using unique landmarks to locate industrial vehicles at start-up
US20130050180A1 (en) 2011-08-30 2013-02-28 5D Robotics, Inc. Graphical Rendition of Multi-Modal Data
US9056754B2 (en) 2011-09-07 2015-06-16 Crown Equipment Limited Method and apparatus for using pre-positioned objects to localize an industrial vehicle
US8590789B2 (en) 2011-09-14 2013-11-26 Metrologic Instruments, Inc. Scanner with wake-up mode
US8740085B2 (en) 2012-02-10 2014-06-03 Honeywell International Inc. System having imaging assembly for use in output of image data
EP2835233A1 (en) * 2012-04-02 2015-02-11 Kabushiki Kaisha Yaskawa Denki Robot system and work facility
US8393422B1 (en) 2012-05-25 2013-03-12 Raytheon Company Serpentine robotic crawler
US9031698B2 (en) 2012-10-31 2015-05-12 Sarcos Lc Serpentine robotic crawler
KR101437483B1 (ko) * 2012-11-20 2014-09-04 한국과학기술연구원 로봇 컴포넌트의 동적 재구성 장치 및 방법
US9409292B2 (en) 2013-09-13 2016-08-09 Sarcos Lc Serpentine robotic crawler for performing dexterous operations
US10589973B2 (en) 2013-10-25 2020-03-17 Ats Automation Tooling Systems Inc. Flexible feeding and closing machine for hinged caps
US9566711B2 (en) 2014-03-04 2017-02-14 Sarcos Lc Coordinated robotic control
US9385374B2 (en) 2014-04-01 2016-07-05 Ppg Industries Ohio, Inc. Electrode binder composition for lithium ion electrical storage devices
US9579799B2 (en) * 2014-04-30 2017-02-28 Coleman P. Parker Robotic control system using virtual reality input
US20160011754A1 (en) * 2014-07-09 2016-01-14 Dell Products, L.P. Method and system for virtualized sensors in a multi-sensor environment
US9517561B2 (en) * 2014-08-25 2016-12-13 Google Inc. Natural pitch and roll
DE102014016968A1 (de) 2014-11-18 2015-01-22 Boris Kaplan Ein Computersystem von einer Künstlichen Intelligenz von einem Cyborg oder einem Android, wobei eine aufgenommene Signal-Reaktion des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android, eine entsprechende Assoziation des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android, und ein entsprechender Gedanke des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android in dem Computersystem physisch gebaut werden, und ein Arbeitsverfahren von dem Computersystem von der Künstlichen Intelligenz von dem Cyborg oder dem Android
JP6486678B2 (ja) * 2014-12-25 2019-03-20 株式会社キーエンス 画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラム
US9440353B1 (en) 2014-12-29 2016-09-13 Google Inc. Offline determination of robot behavior
US9952853B2 (en) * 2015-02-10 2018-04-24 Mediatek Inc. Methods for cross-mounting devices and apparatus utilizing the same
JP6862081B2 (ja) 2015-06-23 2021-04-21 キヤノン株式会社 ロボットシステムの制御方法、制御プログラム、コンピュータ読み取り可能な記録媒体、およびロボットシステム
US10379007B2 (en) 2015-06-24 2019-08-13 Perrone Robotics, Inc. Automated robotic test system for automated driving systems
WO2017019655A1 (en) 2015-07-28 2017-02-02 Crown Equipment Corporation Vehicle control module signal switchboard and input tables
US10071303B2 (en) 2015-08-26 2018-09-11 Malibu Innovations, LLC Mobilized cooler device with fork hanger assembly
US10417389B2 (en) * 2015-12-04 2019-09-17 Zyno Medical, Llc Application development system for medical pumps
CN105479489A (zh) * 2015-12-22 2016-04-13 上海交通大学 模块化的机器人可编程片上系统实验装置
US9987745B1 (en) 2016-04-01 2018-06-05 Boston Dynamics, Inc. Execution of robotic tasks
WO2017202439A1 (en) * 2016-05-23 2017-11-30 Abb Schweiz Ag Dynamic allocation of processing tasks for a robot cell
US10807659B2 (en) 2016-05-27 2020-10-20 Joseph L. Pikulski Motorized platforms
JP6927727B2 (ja) * 2017-03-29 2021-09-01 本田技研工業株式会社 ロボットの制御装置
WO2019068634A1 (en) * 2017-10-02 2019-04-11 Starship Technologies Oü DEVICE AND METHOD FOR DISTRIBUTING ARTICLES CONSUMABLE BY A MOBILE ROBOT
US10635102B2 (en) * 2017-10-17 2020-04-28 Steering Solutions Ip Holding Corporation Driver re-engagement assessment system for an autonomous vehicle
KR102029152B1 (ko) * 2017-11-01 2019-10-07 한국생산기술연구원 이기종 공작 기계 컨트롤러용 통합 인터페이스 시스템
US10754318B2 (en) * 2017-12-21 2020-08-25 X Development Llc Robot interaction with objects based on semantic information associated with embedding spaces
US11097418B2 (en) 2018-01-04 2021-08-24 X Development Llc Grasping of an object by a robot based on grasp strategy determined using machine learning model(s)
ES2847550T3 (es) 2018-02-28 2021-08-03 Kistler Holding Ag Sistema de comunicación para la transmisión de datos entre fuentes de datos y evaluadores de datos
US10792813B1 (en) 2018-04-26 2020-10-06 X Development Llc Managing robot resources
US10733445B1 (en) 2018-06-22 2020-08-04 X Development Llc Enhanced object state discrimination for robots
US11325263B2 (en) * 2018-06-29 2022-05-10 Teradyne, Inc. System and method for real-time robotic control
US11203122B2 (en) * 2018-08-03 2021-12-21 Digital Dream Labs, Llc Goal-based robot animation
WO2020053454A1 (es) * 2018-09-12 2020-03-19 Erle Robotics, S.L. Controlador para robots
US11602854B2 (en) * 2018-12-18 2023-03-14 Samsung Electronics Co., Ltd. Method and apparatus for controlling behavior of service robot
DE102019200435A1 (de) * 2019-01-16 2020-07-16 Robert Bosch Gmbh Verfahren zur Bereitstellung eines kinematischen Modells für kinematische Arbeitssysteme
US11526823B1 (en) 2019-12-27 2022-12-13 Intrinsic Innovation Llc Scheduling resource-constrained actions
US11498211B2 (en) * 2019-12-30 2022-11-15 Intrinsic Innovation Llc Composability framework for robotic control system
USD961692S1 (en) * 2020-04-27 2022-08-23 Embodied, Inc. Robot
DE102020208297A1 (de) 2020-07-02 2022-01-05 Robert Bosch Gesellschaft mit beschränkter Haftung Einheitliche Fernsteuerung mobiler Plattformen
US11789110B2 (en) 2020-09-03 2023-10-17 Honeywell International Inc. Fault detection, exclusion, isolation, and re-configuration of navigation sensors using an abstraction layer
WO2022051607A1 (en) * 2020-09-04 2022-03-10 Nemedio Inc. Systems and methods for dynamic configuration of external devices
US11737627B2 (en) * 2020-10-03 2023-08-29 Viabot Inc. Methods for setting and programming zoning for use by autonomous modular robots
EP4225535A1 (en) * 2020-10-12 2023-08-16 The Johns Hopkins University Robot watchdog
DE102021005701A1 (de) 2021-11-17 2023-05-17 Boris Kaplan Ein Computersystem von einer Künstlichen Intelligenz von einem Cyborg oder einem Android, wobei eine aufgenommene Signal-Reaktion des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android, eine entsprechende Assoziation des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android, und ein entsprechender Gedanke des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android in dem Computersystem physisch gebaut werden, und ein Arbeitsverfahren von dem Computersystem von der Künstlichen Intelligenz von dem Cyborg oder dem Android
CN114167719A (zh) * 2021-11-30 2022-03-11 广东亿嘉和科技有限公司 一种机器人实时控制系统
DE102023000489A1 (de) 2023-02-14 2023-04-13 Boris Kaplan Ein Computersystem von einer Künstlichen Intelligenz von einem Cyborg oder einem Android, wobei eine aufgenommene Signal-Reaktion des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android, eine entsprechende Assoziation des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android, und ein entsprechender Gedanke des Computersystems von der Künstlichen Intelligenz von dem Cyborg oder dem Android in dem Computersystem physisch gebaut werden, und ein Arbeitsverfahren von dem Computersystem von der Künstlichen Intelligenz von dem Cyborg oder dem Android.

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11156765A (ja) * 1997-11-30 1999-06-15 Sony Corp ロボツト装置
JP2000210886A (ja) * 1999-01-25 2000-08-02 Sony Corp ロボット装置
JP2001191275A (ja) * 1999-10-29 2001-07-17 Sony Corp ロボット・システム、外装及びロボット装置
JP2002113675A (ja) * 2000-10-11 2002-04-16 Sony Corp ロボット制御システム並びにロボット制御用ソフトウェアの導入方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US34559A (en) * 1862-03-04 Improvement in horse-powers
CA2081519C (en) * 1992-10-27 2000-09-05 The University Of Toronto Parametric control device
US5642467A (en) * 1995-01-31 1997-06-24 The Penn State Research Foundation Controller for autonomous device
US5802365A (en) * 1995-05-05 1998-09-01 Apple Computer, Inc. Dynamic device matching using driver candidate lists
US5691897A (en) 1995-05-30 1997-11-25 Roy-G-Biv Corporation Motion control systems
US6209037B1 (en) 1995-05-30 2001-03-27 Roy-G-Biv Corporation Motion control systems using communication map to facilitating communication with motion control hardware
DE69618606T2 (de) * 1995-09-19 2002-09-12 Yaskawa Denki Kitakyushu Kk Prozessor für robotersprache
US5887169A (en) * 1996-03-15 1999-03-23 Compaq Computer Corporation Method and apparatus for providing dynamic entry points into a software layer
US5956465A (en) * 1996-04-04 1999-09-21 Nissan Motor Co., Ltd. Production facility with automatic movable body for man-machine cooperation
JPH1011124A (ja) * 1996-06-20 1998-01-16 Fanuc Ltd ロボットの後退実行機能を備えたロボット制御装置
US5963712A (en) * 1996-07-08 1999-10-05 Sony Corporation Selectively configurable robot apparatus
US5832189A (en) 1996-09-26 1998-11-03 Interval Research Corporation Affect-based robot communication methods and systems
KR100219838B1 (ko) * 1997-05-03 1999-09-01 박호군 전자석의 흡인력을 이용한 원격조종 로봇용촉각 궤환장치
JP3111038B2 (ja) * 1997-05-07 2000-11-20 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 情報記録再生装置用ランプ及び情報記録再生装置
US6181983B1 (en) * 1997-06-20 2001-01-30 Deutsches Zentrum f{umlaut over (u)}r Luft-und Raumfahrt e.v. Method of command control for a robot manipulator
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6078747A (en) 1998-01-05 2000-06-20 Jewitt; James W. Application program interface to physical devices
WO1999054095A1 (fr) * 1998-04-20 1999-10-28 Honda Giken Kogyo Kabushiki Kaisha Controleur pour robot mobile muni de jambes
US6347253B1 (en) * 1998-04-30 2002-02-12 Kabushiki Kaisha Toshiba Control system for executing a task instruction by performing distributed processing via a number of modules
US6028410A (en) * 1999-01-11 2000-02-22 Stratasys, Inc. Resonance detection and resolution
US6505097B1 (en) * 1999-01-13 2003-01-07 Sony Corporation Arithmetic processing device, inter-object communication method, and robot
JP3424631B2 (ja) * 1999-01-13 2003-07-07 ソニー株式会社 ロボット装置及びソフトウエアの更新方法
US6895588B1 (en) * 1999-04-09 2005-05-17 Sun Microsystems, Inc. Remote device access over a network
US6944584B1 (en) * 1999-04-16 2005-09-13 Brooks Automation, Inc. System and method for control and simulation
US6268853B1 (en) * 1999-09-30 2001-07-31 Rockwell Technologies, L.L.C. Data structure for use in enterprise controls
AU742980B2 (en) * 1999-10-13 2002-01-17 Kawasaki Jukogyo Kabushiki Kaisha Random work arranging device
US6879862B2 (en) 2000-02-28 2005-04-12 Roy-G-Biv Corporation Selection and control of motion data
CA2389183C (en) 1999-10-27 2008-05-20 Roy-G-Biv Corporation Systems and methods for generating and communicating motion data through a distributed network
JP2001191276A (ja) 1999-10-29 2001-07-17 Sony Corp ロボットシステム、ロボット装置及びその外装
JP2001353678A (ja) * 2000-06-12 2001-12-25 Sony Corp オーサリング・システム及びオーサリング方法、並びに記憶媒体
US6507771B2 (en) * 2000-07-10 2003-01-14 Hrl Laboratories Method and apparatus for controlling the movement of a plurality of agents
JP2002127059A (ja) * 2000-10-20 2002-05-08 Sony Corp 行動制御装置および方法、ペットロボットおよび制御方法、ロボット制御システム、並びに記録媒体
JP2002307354A (ja) * 2000-11-07 2002-10-23 Sega Toys:Kk 電子玩具
US6658325B2 (en) * 2001-01-16 2003-12-02 Stephen Eliot Zweig Mobile robotic with web server and digital radio links
US6456901B1 (en) * 2001-04-20 2002-09-24 Univ Michigan Hybrid robot motion task level control system
US6965816B2 (en) * 2001-10-01 2005-11-15 Kline & Walker, Llc PFN/TRAC system FAA upgrades for accountable remote and robotics control to stop the unauthorized use of aircraft and to improve equipment management and public safety in transportation
KR100980793B1 (ko) * 2001-11-28 2010-09-10 에볼루션 로보틱스, 인크. 로봇을 위한 하드웨어 추상화 계층에서의 센서 및액추에이터 추상화 및 집단화
US20070201059A1 (en) * 2006-02-28 2007-08-30 Radzykewycz Tim O Method and system for automatically configuring a device driver
US7211980B1 (en) * 2006-07-05 2007-05-01 Battelle Energy Alliance, Llc Robotic follow system and method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11156765A (ja) * 1997-11-30 1999-06-15 Sony Corp ロボツト装置
JP2000210886A (ja) * 1999-01-25 2000-08-02 Sony Corp ロボット装置
JP2001191275A (ja) * 1999-10-29 2001-07-17 Sony Corp ロボット・システム、外装及びロボット装置
JP2002113675A (ja) * 2000-10-11 2002-04-16 Sony Corp ロボット制御システム並びにロボット制御用ソフトウェアの導入方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009509787A (ja) * 2005-09-29 2009-03-12 本田技研工業株式会社 人型ロボットのための拡張可能なタスクエンジンフレームワーク
JP2010142943A (ja) * 2008-12-22 2010-07-01 Korea Electronics Telecommun ロボット応用プログラム実行装置及び方法
KR101255685B1 (ko) 2008-12-22 2013-04-24 한국전자통신연구원 로봇 응용 프로그램 실행 장치 및 방법
WO2011045870A1 (ja) * 2009-10-16 2011-04-21 国立大学法人奈良先端科学技術大学院大学 データ中継用rtコンポーネント生成方法及びそのプログラム
JP2014504958A (ja) * 2010-12-17 2014-02-27 アルデバラン ロボティクス エス、ア 物理的および仮想的資源の管理プログラムを備えるヒューマノイドロボット、使用方法、およびプログラミング方法
JP2016120567A (ja) * 2014-12-25 2016-07-07 株式会社キーエンス 画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラム
JP2019511376A (ja) * 2016-03-07 2019-04-25 ソフトバンク・ロボティクス・ヨーロッパSoftbank Robotics Europe ロボットのモジュラー製造
KR20200132693A (ko) * 2020-04-27 2020-11-25 군산대학교산학협력단 로봇 및 자율이동체 정밀 모션 제어를 위한 단독형 음성인식 기반 에이전트 모듈
KR20200132694A (ko) * 2020-04-27 2020-11-25 군산대학교산학협력단 로봇 및 자율이동체 정밀 모션 제어를 위한 단독형 음성인식 기반 에이전트 모듈의 작동방법
KR102228022B1 (ko) * 2020-04-27 2021-03-12 군산대학교산학협력단 로봇 및 자율이동체 정밀 모션 제어를 위한 단독형 음성인식 기반 에이전트 모듈의 작동방법
KR102228017B1 (ko) * 2020-04-27 2021-03-12 군산대학교산학협력단 로봇 및 자율이동체 정밀 모션 제어를 위한 단독형 음성인식 기반 에이전트 모듈

Also Published As

Publication number Publication date
US7302312B2 (en) 2007-11-27
AU2002357040A1 (en) 2003-06-10
US20120041592A1 (en) 2012-02-16
US20050021186A1 (en) 2005-01-27
US8996168B2 (en) 2015-03-31
US7925381B2 (en) 2011-04-12
WO2003045639A2 (en) 2003-06-05
AU2002357040A8 (en) 2003-06-10
US20070050088A1 (en) 2007-03-01
US7076336B2 (en) 2006-07-11
KR20040066849A (ko) 2004-07-27
KR100980793B1 (ko) 2010-09-10
US20080071423A1 (en) 2008-03-20
WO2003045639A3 (en) 2004-05-13
US20030171846A1 (en) 2003-09-11
US6889118B2 (en) 2005-05-03

Similar Documents

Publication Publication Date Title
US8996168B2 (en) Hardware abstraction layer (HAL) for a robot
Quigley et al. Programming Robots with ROS: a practical introduction to the Robot Operating System
AU2016102440A4 (en) Autonomous localization and navigation equipment, localization and navigation method, and autonomous localization and navigation system
US9327403B2 (en) Advanced behavior engine
Orebäck et al. Evaluation of architectures for mobile robotics
CN107671857B (zh) 用于服务机器人操作演示与算法验证的三维仿真平台
CN101286058A (zh) 机器人模块化分布式自适应控制系统及方法
Nebot et al. A framework for the development of cooperative robotic applications
Elkady et al. A plug and play middleware for sensory modules, actuation platforms and task descriptions in robotic manipulation platforms
Farinelli et al. SPQR-RDK: a modular framework for programming mobile robots
JP2005271137A (ja) ロボット装置及びその制御方法
Waelti Strategy for an Autonomous Behavior that Guarantees a Qualitative Fine Adjustment at the Target Pose of a Collaborating Mobile Robot
Yu et al. Design and Implementation of Platform of Educational Mobile Robots Based on ROS
Hristu-Varsakelis et al. A motion description language for hybrid system programming
KR20070050287A (ko) 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법
Smith et al. Software reuse in robotics: Enabling portability in the face of diversity
Fang et al. An embedded platform for intelligent mobile robot
JP2830801B2 (ja) 運動シミュレーション表示装置
Iercan et al. nRobotic: A platform for managing robots with different capabilities
Lee et al. Software architecture of human-like robot
Malalasekera Extending fusion for real-time control systems
Ball MAJIC a Java application for controlling multiple, heterogeneous robotic agents
Heikkilä Configuration of skilled tasks for execution in multipurpose and collaborative service robots
Walter et al. Service Object Request Management Architecture
Theobald Arbitrated robot control on the Web, system design and implementation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080903

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081201

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100120

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100420

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100427

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20100524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110314

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110322

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110331

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110407

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110512

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110519

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110906