JPWO2018180143A1 - 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 - Google Patents
情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 Download PDFInfo
- Publication number
- JPWO2018180143A1 JPWO2018180143A1 JP2019509029A JP2019509029A JPWO2018180143A1 JP WO2018180143 A1 JPWO2018180143 A1 JP WO2018180143A1 JP 2019509029 A JP2019509029 A JP 2019509029A JP 2019509029 A JP2019509029 A JP 2019509029A JP WO2018180143 A1 JPWO2018180143 A1 JP WO2018180143A1
- Authority
- JP
- Japan
- Prior art keywords
- program
- unit
- action
- verification scenario
- environment
- 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
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 40
- 238000004590 computer program Methods 0.000 title claims description 11
- 238000003672 processing method Methods 0.000 title claims description 10
- 230000009471 action Effects 0.000 claims abstract description 338
- 238000012795 verification Methods 0.000 claims abstract description 170
- 238000011156 evaluation Methods 0.000 claims abstract description 95
- 230000003044 adaptive effect Effects 0.000 claims description 32
- 238000000034 method Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 15
- 230000005856 abnormality Effects 0.000 claims description 13
- 230000007613 environmental effect Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 description 132
- 230000006399 behavior Effects 0.000 description 83
- 230000006870 function Effects 0.000 description 49
- 238000004891 communication Methods 0.000 description 43
- 238000005516 engineering process Methods 0.000 description 22
- 238000004088 simulation Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 10
- 238000004378 air conditioning Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 210000002414 leg Anatomy 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 210000003423 ankle Anatomy 0.000 description 1
- 210000002683 foot Anatomy 0.000 description 1
- 210000004394 hip joint Anatomy 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000000629 knee joint Anatomy 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 210000001364 upper extremity Anatomy 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B15/00—Systems controlled by a computer
- G05B15/02—Systems controlled by a computer electric
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1671—Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B23/00—Testing or monitoring of control systems or parts thereof
- G05B23/02—Electric testing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40311—Real time simulation
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40323—Modeling robot environment for sensor based robot system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3013—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Computer Hardware Design (AREA)
- Mechanical Engineering (AREA)
- Robotics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Feedback Control In General (AREA)
- Control By Computers (AREA)
- Manipulator (AREA)
Abstract
プログラムの開発に利用される情報処理装置を提供する。情報処理装置は、呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部と、前記プログラムが順次呼び出する動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部を備える。プログラム実行制御部は、外部から入力される環境情報に応じて前記プログラムを駆動し、前記評価部は、前記プログラム実行制御部により前記環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう。
Description
本明細書で開示する技術は、プログラムの開発に利用され又はプログラムの開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法に関する。
近年のロボティクス技術の進歩は目覚ましく、さまざまな産業分野の作業現場に広く浸透してきている。ロボットは、例えば複数のリンクとリンク間を接続する関節で構成され、モータなどの関節駆動用のアクチュエータを用いて各節を駆動することによってロボットは動作する。
自律型若しくは適応制御型と呼ばれるロボットは、オペレータやマスタ装置からの指示を待つことなく、自律的若しくは適応的に行動制御を行なう。具体的には、ロボットの外部環境や内部状態を常時検証(あるいは、評価、モニタリング)し、外部環境又は内部状態の認識結果が所定の遷移条件に適合する動作を順次起動していくことで、現在置かれている状況に適した振舞いを実現する(例えば、特許文献1を参照のこと)。
本明細書で開示する技術の目的は、プログラムの開発に利用され又はプログラムの開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することにある。
本明細書で開示する技術は、上記課題を参酌してなされたものであり、その第1の側面は、適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理装置であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部と、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部と、
を具備する情報処理装置である。
呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部と、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部と、
を具備する情報処理装置である。
情報処理装置は、外部から入力される環境情報に応じて、前記プログラムの駆動を制御するプログラム実行制御部をさらに備えてもよい。この場合、前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが前記環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較することにより、シミュレータや適応制御装置の実機を用いることなく、単体で前記プログラムの評価又は検証を行なうことができる。
あるいは、前記評価部は、前記適応制御装置のシミュレータにより駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、シミュレータ上で前記プログラムの評価又は検証を行なうことができる。
あるいは、前記評価部は、前記適応制御装置上により実際に駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、実機上で前記プログラムの評価又は検証を行なうことができる。
また、本明細書で開示する技術の第2の側面は、適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理方法であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを読み出すステップと、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価ステップと、
を有する情報処理方法である。
呼び出されるべき動作の順序を定義する行動検証シナリオを読み出すステップと、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価ステップと、
を有する情報処理方法である。
また、本明細書で開示する技術の第3の側面は、
呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部、
適応制御装置が環境に応じた動作を実行するように記述されたプログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部、
として機能するようにコンピュータ可読形式で記述されたコンピュータ・プログラムである。
呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部、
適応制御装置が環境に応じた動作を実行するように記述されたプログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部、
として機能するようにコンピュータ可読形式で記述されたコンピュータ・プログラムである。
第3の側面に係るコンピュータ・プログラムは、コンピュータ上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本願の請求項に係るコンピュータ・プログラムをコンピュータにインストールすることによって、コンピュータ上では協働的作用が発揮され、第1の側面に係る装置と同様の作用効果を得ることができる。
また、本明細書で開示する技術の第4の側面は、適応制御装置が環境に応じた動作を制御する制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、呼び出されるべき動作の順序を定義する行動検証シナリオを設定する行動シナリオ設定ステップと、
前記制御プログラムに、前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して前記プログラムの評価又は検証を行なう条件を設定する検証条件設定ステップと、
を具備するプログラム製造方法である。
前記制御プログラムに、呼び出されるべき動作の順序を定義する行動検証シナリオを設定する行動シナリオ設定ステップと、
前記制御プログラムに、前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して前記プログラムの評価又は検証を行なう条件を設定する検証条件設定ステップと、
を具備するプログラム製造方法である。
本明細書で開示する技術によれば、プログラムの開発に利用され又はプログラムの開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することができる。
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
図1には、制御プログラムの開発環境の一例を模式的に示している。開発環境下には、開発対象となる自律動作装置(実機)100と、この自律動作装置100における制御プログラムを作成する開発装置200が配置されている。
ここで、自律動作装置100は、自律的若しくは適応制御により自らの行動を制御する装置であり、ロボット、無人航空機、自律運転する自動車などさまざまな形態を含むものとする。
自律動作装置100は、当該システム100全体の動作を統括的にコントロールする本体部110と、複数のモジュール部120−1、120−2、…で構成される。図1では簡素化のため、3つのモジュール部しか描いていないが、4以上のモジュール部で構成される自律動作装置や、2以下のモジュール部しか備えていない自律動作装置も想定される。
1つのモジュール部120は、アクチュエータ121と、センサ124と、プロセッサ122と、メモリ123と、通信モデム125を含んでいる。なお、簡素化のため図示を省略しているが、モジュール部120内の各部121〜125は、内部バスにより相互接続されているものとする。
アクチュエータ121は、例えば、関節を回転駆動するためのモータや、スピーカ用のドライバなどである。センサ124は、関節回転角度や角速度、スピーカの音量などのアクチュエータの出力状態を検出するセンサや、外力やその他の外部環境を検出するセンサなどである。
プロセッサ122は、アクチュエータ121の駆動制御(モータ・コントローラ)やセンサ124からの検出信号の認識処理を始めとするモジュール内の動作を制御する。メモリ123は、アクチュエータの制御情報やセンサの検出値などを格納するためにプロセッサ122が使用する。
通信モデム125は、当該モジュール部120と本体部110、又は当該モジュール部120と他のモジュール部の間で相互通信を行なうためのハードウェアであり、無線モデム又は有線モデムのいずれでもよい。例えばプロセッサ123は、通信モデム125を介して、本体部110からアクチュエータ121の駆動などの命令信号を受信したり、センサ124による検出データを本体部110に送信したりする。また、モジュール部120は、通信モデム125を介して、開発装置200などの外部装置とも通信を行なうことができる。
本体部110は、プロセッサ111と、メモリ112と、通信モデム113と、バッテリー114と、USB(Universal Serial Bus)ポート115と、GPS(Global Positioning System)116を含んでいる。なお、簡素化のため図示を省略しているが、本体部110内の各部111〜116は、内部バスにより相互接続されているものとする。
プロセッサ111は、メモリ112に格納されているプログラムに従って、自律動作装置100全体の動作を統括的にコントロールする。また、バッテリー114は、自律動作装置100の駆動電源であり、本体部110並びに各モジュール部120に電源を供給する。
通信モデム113は、本体部120と各モジュール部120の間で相互通信を行なうためのハードウェアであり、無線モデム又は有線モデムのいずれでもよい。例えばプロセッサ111は、通信モデム113を介して、各モジュール部120に対してアクチュエータ121の駆動などの命令信号を送信したり、各モジュール部120内でのセンサ122の検出値に基づく認識結果を受信したりする。また、本体部110は、通信モデム113を介して、開発装置200などの外部装置とも通信を行なうことができる。
USBポート115は、USBバス(ケーブル)を使って本体部110に外部機器を接続するために使用される。本実施形態では、USBポート115を使って本体部110に開発装置200を接続することを想定している。例えば、開発装置200上で作成した制御プログラムを、USBポート115を介して自律動作装置100にインストールすることができる。なお、USBは自律動作装置100に外部装置を接続するインターフェース規格の一例であり、他のインターフェース規格に則って外部装置を接続するように構成することもできる。
なお、図示を省略したが、本体部110と各モジュール部などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
開発装置200は、例えばパーソナル・コンピュータで構成され、コンピュータ本体部210と、液晶パネルなどのディスプレイ220と、マウスやキーボードなどからなるユーザ・インターフェース(UI)部230を備えている。また、コンピュータ本体部210は、プロセッサ211、GPU(Graphic Processing Unit)212と、メモリ213と、USBポート214と、通信モデム215を備えている。但し、GPU212の機能がプロセッサ211内に含まれている構成例も考え得る。また、コンピュータ本体部210は、図示した以外のハードウェア構成要素を備えており、各部はバスにより相互接続されている。
開発装置200上では、オペレーティング・システム(OS)が動作している。プロセッサ211は、所望のアプリケーション・プログラムをメモリ212にロードして、OSによって提供される実行環境下でアプリケーション・プログラムを実行することができる。
本実施形態では、アプリケーション・プログラムの1つとして、自律動作装置100の制御用プログラムを作成するための開発ツール・プログラムを想定している。この開発ツール・プログラムは、当該プログラムの実行に必要なデータとともに開発装置200のメモリ213上に展開されている。
開発ツール・プログラムは、ディスプレイ220の画面にプログラム開発用のGUI(Graphical User Interface)を提示する。プログラムの開発者は、このGUI画面の内容を確認しながら、ユーザ・インターフェース230を介してデータやプログラムの入力を行なうことができる。また、開発ツール・プログラムは、作成した制御プログラムに関するコンパイラ、デバッガ、シミュレーション、3Dグラフィックス・アニメーションを用いた制御プログラムの動作確認のための機能などを備えているが、開発者はGUI画面上でこれらの機能の実行指示を行なうことができる。
開発ツール・プログラムを用いて作成される制御プログラムは、自律動作装置100の実機上の本体部110のプロセッサ111上で実行されるコントロール・プログラム並びにコントロール・プログラムが使用するパラメータなどのデータと、各モジュール部120のプロセッサ122においてアクチュエータ121の駆動を制御するためのコントロール・プログラム並びにコントロール・プログラムが使用するパラメータなどのデータで構成される。コントロール・プログラムが使用するパラメータには、アクチュエータとしてのモータのP(比例制御)、I(積分制御)、D(微分制御)などの制御パラメータなどのデータを含む。本明細書ではプログラム部分とデータを併せて「制御(コントロール)プログラム」と呼ぶこともある。
開発ツール・プログラムを使って作成された制御プログラムは、メモリ213に格納される。また、メモリ213上の制御プログラムを、USBポート214を介して自律動作装置100側に転送することができる。あるいは、メモリ213上の制御プログラムを、通信モデム215を介して自律動作装置100内のモジュール部120に転送することができる。
また、開発装置200上で開発ツール・プログラムを使って作成された制御プログラムを、3Dグラフィックス・アニメーションを用いた開発ツール・プログラムやデータ(以下、開発ツール用のプログラムとデータを併せて「開発ツール・プログラム」とも呼ぶ)を利用して、動作の検証や、制御用のデータやプログラムの修正を行なうことができる。一般に、この種の開発ツール・プログラムは、制御プログラムに従って自律動作装置100の実機動作の3Dグラフィックス・アニメーションを生成する機能を備えており、開発者はディスプレイ220に表示される3Dグラフィックス・アニメーションを利用して、自身が開発した制御プログラムの動作の検証や、データやプログラムの修正を並行して行なうことができる。
本実施形態では、開発ツール・プログラムが物理エンジンと呼ばれる機能を備えていることを想定している。物理エンジンは、現実の自律動作装置100の動作を物理法則に基づいて物理現象を演算する機能を持つコンピュータ・プログラムであり、自律動作装置100が持つ物理的な特性やさらには現実的な外部環境を考慮することによって、現実と同様の動作を生成して、その結果をディスプレイ220上に表示する。自律動作装置100の実機に対し、実機のモータなどの代わりに物理エンジンを使って3Dグラフィックス・アニメーション空間中で動作する仮想的な自律動作装置100のことを仮想機械(3Dグラフィックス・アニメーション用のデータを含むコンピュータ・プログラム及びデータ)とも呼ぶ。
例えば、自律動作装置100がロボットであれば、物理エンジンは、ロボットのアームの各リンクや関節の重量やモーメント、関節駆動用のアクチュエータの特性を考慮しつつ、ロボットを模して造られた仮想機械の制御プログラムの動作において、開発ツール・プログラム上で表現された仮想的な物理環境と仮想機械との物理作用(地面との接地や障害物との衝突など)を物理法則に基づいて計算することによって、あたかもロボットのアクチュエータが実際に駆動しているかのように、仮想機械全体の動作を計算し、ロボットの現実的な動作を仮想機械によって再現した3Dグラフィックス・アニメーションをディスプレイ220上に表示する。
仮想機械は、物理エンジンと3Dグラフィックス・アニメーションを含む開発ツール・プログラム上で動作するようにされた制御プログラム及びデータであり、メモリ213に格納されている。望ましくは、実機の各モジュールのプロセッサで動作する単位で、制御プログラム及びデータがモジュール化されている。仮想機械をあたかも実機のように3Dグラフィックス空間上で動作させるために、仮想機械の制御プログラムは、実機のプロセッサ(例えば、モータ・コントローラ)122の動作に相当する機能を、プログラムの一部として実現する。また、この仮想機械の制御プログラムは、実機のモジュール部120毎のアクチュエータ121(例えば、モータ)に相当する動作を3Dグラフィックス・アニメーションで再現する物理エンジン機能を、API(Application Programming Interface)あるいは関数を使って呼び出すようにプログラムされている。さらに物理エンジンにおいて物理計算の際に使用されるデータ(アクチュエータに設定される制御パラメータや、リンクの重量、イナーシャなど)は、制御プログラムとともにメモリ213中に格納されており、制御プログラムの実行に伴って、メモリ213から読み出され、制御プログラム中で利用される。
また、物理エンジン機能を実現するためのプログラム・モジュールに対して指示を出すためのAPIあるいは関数を、実機すなわち自律動作装置100側で動作している基本OSが提供するものと同じものとすることにより、開発ツール・プログラムで作成したプログラムを、そのまま実機上のOSで動作させることができる。さらに、物理エンジン機能によって実際の物理現象を再現することができるので、開発ツール・プログラムを用いて開発したプログラムを、そのままUSBポート214などを介して自律動作装置100にアップロードして実行させることにより、開発ツール・プログラムで確認した動作を実機上でも実現することができる。
また、開発ツール・プログラムを使って、モジュール部単位に分割して自律動作装置100の制御プログラムを開発することもできる。この場合も同様に、モジュール部単位で制御プログラムを自律動作装置100にアップロードすることができる。例えば、モジュール部120−1のみハードウェア及び制御プログラムの開発を担当している開発者は、自分の開発装置200を通信モデム215経由で自律動作装置100の対応するモジュール部120−1に接続して、作成したプログラムやデータをモジュール部120−1内のメモリ124にアップロードすることもできる。
モジュール部単位でハードウェア及びプログラムの開発を複数の開発者又は複数の開発ベンダーで分担することで、分散開発環境下で自律動作装置100全体の開発を進めることができる。
図2には、ネットワークを介した制御プログラムの分散開発環境を例示している。図2に示す分散開発環境下では、モジュール毎に個別の開発者又は開発ベンダーに開発が委ねられている。但し、図2で言うモジュールは、図1に示した自律動作装置100のハードウェア構成要素であるモジュール部の他に、自律動作装置100の制御ソフトウェアのモジュールを指す場合もある。
自律動作装置100の本体部又はモジュール部単位で制御プログラムの開発を任された各プログラム開発者は、それぞれモジュール開発用コンピュータを用いて、自分が担当する本体部又はモジュール部の制御プログラムを作成する。モジュール開発用コンピュータ上では、例えば上述した開発ツール・プログラムが動作している。各モジュール開発用コンピュータは、ネットワークに接続されている。そして、各プログラム開発者は、それぞれクラウド・サーバ上の共有ストレージ、自分専用のストレージ(すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ)、あるいは専用サーバが備えるストレージにおいて、自己が開発した制御プログラムなどを提供してもよい。また、サーバなどのストレージにアカウントを有する管理者、開発者、顧客、あるいはユーザによって制御プログラムなどが共有されるようにしてもよい。
自律動作装置100の実機全体の制御プログラム開発を担当若しくは統括する開発者は、ネットワーク経由で本体部及び各モジュール部の制御プログラムの提供を受ける。具体的には、実機全体の開発者が使用する実機プログラム開発用コンピュータは、クラウド・サーバ上の共有ストレージ又は開発者ストレージ、専用サーバ、あるいは各開発者のモジュール開発用コンピュータとの直接通信によって、各々の制御プログラムを受信する。但し、制御プログラムの提供を受けるネットワークは、有線又は無線のいずれで構成されていてもよい。
実機全体の開発者が使用する実機プログラム開発用コンピュータは、図1に示した開発装置200に相当し、開発ツール・プログラム上で物理エンジンを用いた演算を行ない、且つ、3Dグラフィックス・アニメーションにより実機に相当する仮想機械の動作を表示できる機能を備えている。したがって、実機プログラム開発用コンピュータは、本体部110及びすべてのモジュール部120の制御プログラムを、開発ツール・プログラムが備える物理エンジン機能を利用して、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
さらに、実機プログラム開発用コンピュータ上では、開発された制御プログラムの実行と並行して、各々の制御プログラムの修正を行なうことができる。したがって、実機全体の開発者と各モジュール部を担当する開発者とで、実機全体の制御プログラムを効率的に共同開発することにもなる。また、実機プログラム開発用コンピュータ上で修正した制御プログラムを、そのモジュール部を担当する開発者に再度提供して、最終的なプログラム製品を完成してもらうことが可能である。例えばクラウド・サーバ上に本体部並びに各モジュール部専用のストレージを配置するなどモジュール部単位で制御プログラムを管理するようにすることで、共同開発を円滑に進めることができる。
実機全体の開発者が使用する実機プログラム開発用コンピュータ上で動作が確認・検証された(すなわち、完成した)制御プログラムは、USBポート214を介して開発装置200から実機の自律動作装置100に直接アップロードすることができる。あるいは、有線又は無線で構成されるネットワーク経由で、実機全体又はモジュール部毎の制御プログラムを実機にアップロードすることもできる。
また、制御プログラムを専用サーバから実機へアップロードするという形態も想定される。例えば、ある実機のユーザが自分のユーザ端末のユーザ・インターフェース(キーボード、マウス、タッチパネルなど)を介して自分が持つアカウントを用いて専用サーバにログインして、さらに実機にダウンロード又はアップロードする制御プログラムを選択して、ダウンロード又はアップロードを実施するようにしてもよい。
図3には、自律動作装置100の具体例として脚式のロボットを開発対象とする場合の制御プログラムの開発環境を例示している。図3では、単一の開発装置を用いてプログラム開発が行なわれるが、勿論、図2に示したようなネットワークを介した分散開発環境を利用することも可能である。
脚式ロボット100は、本体部110と、頭部や左右の脚部に相当するモジュール部120を有している。図示を省略するが、本体部110と、頭部や左右の脚部などの各モジュール部120などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
なお、脚式ロボット100は、上肢など図示しないモジュール部をさらに有していてもよい。また、少なくとも一部のモジュール部内のプロセッサやメモリなど機能が本体部と一体となって、本体部のプロセッサによってコントロールされるという実機構成の変形例も考えられる。
本体部110は、プロセッサ111と、メモリ112と、無線又は有線の通信モデム113と、バッテリー114と、USBポート115と、GPS116を備えている。
左右の脚のモジュール部120−2及び120−3は、アクチュエータとして、股関節や膝関節、足首などの関節駆動用(若しくは、歩行用)のモータ121を備え、プロセッサとしてモータの駆動を制御するモータ・コントローラ122を備えている。また、センサ124として、モータの出力側に発生する外力を検知するトルク・センサや、モータの出力側の回転角度を検出するエンコーダー、足裏部の接地センサなどを備えている。また、頭部のモジュール部120−1は、アクチュエータとしての頭部回転用のモータ121と、センサとしての周囲を撮像するイメージ・センサ124を備えている。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記のロボット100の本体部並びに各モジュール部の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機全体の制御プログラムやモジュール部毎の制御プログラムは、本体部110のUSBポート115や各モジュール部120の通信モデム125を介した有線又は無線の通信によって、本体部110のメモリ112又は各モジュール部120のメモリ123にアップロードされる。そして、アップロードされたプログラムは、ロボット100の起動時などに適宜動作するようになっている。
図4には、自律動作装置100の他の具体例として自動走行車を開発対象とする場合の制御プログラムの開発環境を例示している。自動走行車100は、自動運転技術が導入された自動車(あるいは、作業用又は輸送用などの無人運転車両)のことであるが、完全自動運転車の他、自動運転モードと手動運転モードを切り替え可能な自動車における自動運転モードで走行中の自動車も含むものとする。図4では、単一の開発装置を用いてプログラム開発が行なわれるが、勿論、図2に示したようなネットワークを介した分散開発環境を利用することも可能である。
図4に示す自動走行車100は、主制御部110と、モジュール部としてのトランスミッション制御モジュール部120−2並びに室内空調制御モジュール部120−1を有している。図示を省略するが、主制御部110と各モジュール部120などのハードウェア間を結合するデータ・バス並びに制御バス(CANバスなど)が存在する。また、自動走行車100は、通常、トランスミッション制御モジュール部120−2、室内空調制御モジュール部120−1以外にも図示しない多くのモジュール部を備えているが、説明の簡素化のため省略する。
主制御部110は、プロセッサとしてのECU(Electronic Control Unit:電子制御装置)111と、メモリ112と、通信モデム113と、ECUインターフェース115と、GPS116と、バッテリー114を備えている。通信モデム113は、Wi−Fi(Wireless Fidelity)、LTE(Long Term Evolution)、近距離無線通信などを想定している。また、ECUインターフェース115は、CAN(Controller Area Network)バス(図示しない)へのインターフェースを想定しており、開発装置200側とはイーサネット(登録商標)などの通信規格を利用して接続される。
室内空調モジュール部120−1は、アクチュエータとしての空調121と、プロセッサとしての空調制御ECU122と、メモリ123と、センサとしての室内温度センサ124と、Bluetooth(登録商標)通信などの通信モデム125を備えている。例えば搭乗者が携帯するスマートフォン(図示しない)などの情報端末とBluetooth(登録商標)通信により接続して、空調を制御することを想定している。
トランスミッション制御モジュール部120−2は、アクチュエータとしての駆動輪用モータ121と、プロセッサとしてのトランスミッション制御ECU122と、メモリ123と、センサとして速度・加速度センサ124や操舵角センサなどを備えている。
なお、図4に示した構成例では、主制御部110並びに各モジュール部120にECUが配置されているが、主制御部110内のECU111ですべてのモジュール部を集中管理するように構成することも可能である。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記の自動走行車100の主制御部110、室内空調制御モジュール部120−1、並びにトランスミッション制御モジュール部120−2の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジン機能を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機全体の制御プログラムやモジュール部毎の制御プログラムは、主制御部110のECUインターフェース115や各モジュール部120の通信モデム(図示を省略)を介した有線又は無線の通信によって、主制御部110のメモリ112又は各モジュール部120のメモリ123にアップロードされる。そして、アップロードされたプログラムは、自動走行車100の起動時などに適宜動作するようになっている。
図5には、自律動作装置100の他の具体例として無人航空機(ドローン)を開発対象とする場合の制御プログラムの開発環境を例示している。図5では、単一の開発装置を用いてプログラム開発が行なわれるが、勿論、図2に示したようなネットワークを介した分散開発環境を利用することも可能である。
図5に示す無人航空機100は、主制御部110と、モジュール部としてのカメラ制御モジュール部120−1並びにプロペラ制御モジュール部120−2を有している。図示を省略するが、主制御部110と各モジュール部120などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。また、無線航空機100には、カメラ制御モジュール部120−1並びにプロペラ制御モジュール部120−2以外のモジュール部が組み込まれていてもよい。
主制御部110は、プロセッサ111と、メモリ112と、通信モデム113と、USBポート115と、GPS116と、バッテリー114を備えている。通信モデム113は、Wi−Fi、LTE、近距離無線通信などの無線モデムを想定しており、操縦者が操作するリモート・コントローラ(図示しない)と通信を行なうようになっている。また、開発装置200側とはUSBポート115を利用して接続され、開発された制御プログラムのアップロードが行なわれる。
カメラ制御モジュール部120−1は、センサとしてのカメラ部(イメージ・センサを含む)124と、アクチュエータとしてのカメラ部回転用モータ121と、プロセッサとしてのモータ・コントローラ122と、メモリ123と、通信モデム125を備えている。カメラ部回転用モータは、例えば水平方向に360度の範囲で回転が可能であり、さらにチルト回転が可能であってもよい。また、通信モデム125は、Wi−Fi、LTE、近距離無線通信などの無線モデムを想定しており、操縦者が操作するリモート・コントローラやスマートフォンからのコマンドに従ってカメラ部124の回転や撮影を行なう。
プロペラ制御モジュール部120−2は、アクチュエータとして例えば3つのプロペラ(回転用モータを含む)121と、プロペラ121の回転用モータの制御などを行なうプロセッサ122、メモリ123と、センサとしてのプロペラ回転検出センサ124を備えている。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記の無人航空機100の主制御部110、カメラ制御モジュール部120−1、並びにプロペラ制御モジュール部120−2の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジン機能を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機全体の制御プログラムやモジュール部毎の制御プログラムは、主制御部110や各モジュール部120の通信モデムを介した有線又は無線の通信によって、主制御部110のメモリ112又は各モジュール部120のメモリ123にアップロードされる。そして、アップロードされたプログラムは、無人航空機100の起動時などに適宜動作するようになっている。
図6には、自律動作装置100の実機に搭載されるハードウェア並びにソフトウェアのアーキテクチャーの構成例を示している。
実機は、図1などにも示したように、本体部(若しくは主制御部)と複数のモジュール部などの複数のハードウェア・モジュール(HW1、HW2、…)が筐体内に組み込まれて構成される。また、各ハードウェア・モジュールを2以上の筐体に分散して配置して構成される実機も存在し得る。
OSは、これらハードウェア・モジュール(HW1、HW2、…)を直接的に制御する。また、OSではなく、モジュール部内のメモリにアップロードされた制御プログラムがハードウェア・モジュールを直接的に制御する場合もある(具体的には、プロセッサが制御プログラムを実行して、アクチュエータの駆動を制御する)。
図1などに示したように、本体部110と複数のモジュール部120でハードウェア・アーキテクチャーが構成される自律動作装置100においては、本体部110(のプロセッサ111)において当該システム100全体を制御する主OSが動作して、各モジュール部120内で実行中の制御プログラムを直接的又は間接的に制御するように構成される。
図6では、主OS以外にも複数のOS(例えば、OS1、OS2、…)が動作し、各OSがアプリケーション・プログラムの実行環境を提供する例を示している。図6において、例えば、OS1が主OSの管理下にあるハードウェア・モジュールを駆動したい場合には、まずOS1が主OSと通信を行なうことによって、間接的に所望のモジュール部の制御プログラムを制御するようにすることができる。また、OS1と主OS間の通信には、RPC(Remote Procedure Call)などの技術を利用して実現することができる。
図6には、仮想化技術(Virtualization)を用いて構築したアーキテクチャーも併せて示している。すなわち、複数の異なるオペレーティング・システム(例えば、OS1、OS2、…)を仮想化OS上で動作させている。異なるOSを想定して開発された各アプリケーション・プログラム(例えば、OS1を想定して開発されたAP1と、OS2を想定して開発されたAP2)を、同じ実機上で混在させることが可能である。
例えば、自動走行車において開発されるアプリケーション・プログラムを、駆動系制御(DSUなど)のように高い信頼性が要求されるアプリケーション・プログラムと、ユーザに対するサービスに関わるインフォテインメント(オーディオ機器や空調など)のように汎用性の高いアプリケーション・プログラムの2種類に大別すると、前者のAP1はより信頼性の高いOS1を想定して開発され、後者のAP2はより汎用性が高く多くの開発者によって開発可能なOS2を想定して開発される。このように異なるOSを想定して開発された駆動系制御用アプリケーション・プログラムAP1及びインフォテインメント・アプリケーション・プログラムAP2は、仮想化OSの介在により各々に該当するハードウェアに対する制御が容易となるので、同一の自動走行車上で混在することが可能となる。
アプリケーション・プログラムの開発者は、システム(例えば、ミドルウェア)が提供するAPIを用いてアプリケーション・プログラムを開発することができる。例えば、APIとして、「地図表示」、「音声対話モードへの切り替え」、「周囲の人間の認識」といった機能の利用が考えられる。
また、アプリケーション・プログラムの開発者は、システム・コールを利用してOSに対して指示を行なうようなプログラムを含めてアプリケーション・プログラムを開発することができる。ここで言うシステム・コールは、システム制御に関わる機能を利用するためのインターフェースである。システム・コールの例として、モジュール部内のプロセッサ(例えば、モータ・コントローラ)のパラメータを変更する、通信モデムにおけるネットワーク・アドレスの設定を行なう、といったものを挙げることができる。
図7には、アプリケーション・プログラムの構成例を模式的に示している。アプリケーション・プログラムは、例えば図1中の開発装置200上で(すなわち、開発ツール・プログラムを用いて)開発される。図示のように、アプリケーション・プログラムは複数のコンポーネントで構成されるが、すべてのコンポーネントを一体化して1つのファイルで構成してもよいが、各コンポーネントをそれぞれ別のファイルとして構成してもよい。また、これらのファイルは、図2におけるクラウド・サーバ上の共有ストレージ、各自専用のストレージ(すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ)、あるいは専用サーバが備えるストレージなどに格納され、サーバなどのストレージに対するアクセス権を有する管理者、開発者、顧客、あるいはユーザによって共有することが可能であってもよい。
アプリケーション・プログラムは、1又はそれ以上の定義動作と、1又はそれ以上の行動計画と、1又はそれ以上の行動検証シナリオを含んでいる。定義動作並びに行動計画はいずれも、自律動作装置100の動作制御プログラムである。
定義動作は、ハードウェアのうち、モータなどに代表されるアクチュエータのコントローラに対して指示する目標値からなり、「モーション」とも呼ばれる。1つの定義動作が、ある時点においてコントローラに対して指示する目標値のみからなる場合や、ある区間においてコントローラに対して時系列的に指示する一連の目標値からなる場合がある。また、定義動作は、コントローラに対して基本パラメータの設定を指示するプログラム及びデータでもある。パラメータの一例として、P(比例制御)、I(積分制御)、D(微分制御)が挙げられる。また、モータなど制御対象となるアクチュエータの特性に応じてコントローラ(プロセッサ)に設定することができるパラメータを、基本パラメータとして定義動作の中で設定することができる。
行動計画は、1又はそれ以上の定義動作の機能を呼び出すプログラム及びデータからなる。ロボットなどの自律動作装置100は、行動計画に従って呼び出された1又はそれ以上の定義動作を実行することによって、1つの「ビヘイビア」を実現する。
また、行動計画は、状況毎に起動すべき定義動作を取り決めることで、自律動作装置100の一連の動作を記述するプログラム及びデータである。例えば、定義動作を選択するための条件分岐をツリー構造の形式で記述する行動計画を挙げることができる。行動計画は、認識結果に応じて自律動作装置100を制御することから、環境(状況)認識に基づく行動制御プログラムに位置付けることができる。この意味で、行動計画は、広義のAI(人工知能)の機能の一部にも相当する。
行動検証シナリオは、行動計画内の所定の定義動作が、所定の条件で実行されているかどうかについて検証(あるいは、評価、モニタリング)を実現するプログラムからなる。所定の条件は、各モジュール部内のメモリに格納されているデータ(内部状態)や、各モジュール部内のセンサで検出されるデータ(外部環境)などの環境データに関して定義される。行動検証シナリオは、自律動作装置100がある行動計画内で所定の条件が発生したときに、期待した通りの定義動作が起動しなかったことを、異常として検出することができる。
アプリケーション・プログラムは、また、OS又はミドルウェアの機能を利用するためのプログラム及びデータを含むことができる。また、アプリケーション・プログラムは、実機動作中に、行動計画又は定義動作のプログラム及びデータを学習によって変更させるためのプログラム及びデータを含むこともできる。アプリケーション・プログラムは、さらに、自律動作装置100の実機のアプリケーション・プログラムの機能を、外部から利用させるためのAPIを定義している。したがって、アプリケーション・プログラムの作成に利用した開発装置200や、ユーザ端末、サーバなどの外部装置は、実機が動作中あるいは試験動作中に、通信を介してAPIを呼び出すことによってアプリケーション・プログラムの機能を利用することができる。
例えば、自動走行車を自律動作装置100とする場合において、定義動作として「ブレーキ作動」が定義されるとともに、行動検証シナリオとして「安全走行」が定義されているとする。行動検証シナリオ「安全走行」は、例えば自動走行車においてある行動計画を実行中に、外部環境として「前方に人を認識」という条件下で、定義動作「ブレーキ作動」が起こることを検証(あるいは、評価、モニタリング)するものである。「前方に人を認識」という条件下で、自動走行車において定義動作「ブレーキ作動」が起こらなかったときには、行動検証シナリオは自動走行車の(若しくは、行動計画上の)異常が起こったことを検出する。
また、行動検証シナリオは、異常など所定の事象を検出した場合の、自律動作装置100の本体部又は各モジュール部内のメモリに格納されているデータ(内部状態)や、各モジュール部内のセンサで検出されるデータ(外部環境)などの環境データを、行動検証シナリオに関連付けて記録する機能を備えている。外部からアプリケーション・プログラムの機能を利用させるためのAPIの1つとして「安全運転検証」APIを定義して、自動走行車の事故前後の行動検証シナリオ「安全走行」に関連付けて記録された環境データを取り出すことができるようにする。
このようなAPIを用いて、異常の発生時に行動検証シナリオに関連付けて記録された環境データを外部に取り出すことかできる。そして、開発装置200上で動作する開発ツール・プログラムが持つ物理エンジンと連携した3Dグラフィックス・アニメーション機能を用いて、取り出された環境データに基づく異常発生時の自律動作装置100の動作を、仮想機械の3Dグラフィックス・アニメーションによって再現することができる。また、異常が発生した自律動作装置100又は同タイプの実機に異常発生時の環境データをアップロードしてアプリケーション・プログラムを動作させることで、異常発生時の実機動作を再現することができる。
自律動作装置100用のアプリケーション・プログラムは、アプリケーション・プログラムの開発者が、開発装置200上で開発ツール・プログラムを利用して作成することができる。開発ツール・プログラムは、コンパイラ、デバッガ、物理エンジンと連携した3Dグラフィックス・アニメーション機能などを備え、アプリケーション・プログラムの開発者はGUI画面上でこれらの機能の実行指示を行なうことができる。
また、本実施形態では、開発装置200上で動作する開発ツール・プログラムが物理エンジンと呼ばれる機能を備えていることを想定している。物理エンジンは、現実の自律動作装置100の動作を物理法則に基づく現象をコンピュータ上で再現する機能であり、自律動作装置100が持つ物理的な特性やさらには現実的な外部環境を考慮することによって、現実の実機と同様の動作を表す仮想機械の3Dグラフィックス・アニメーションを生成して、その結果を表示する。アプリケーション・プログラムの開発者は、このような3Dグラフィックス・アニメーションを見ながら実機の動作を検証し、さらにアプリケーション・プログラムを適切に修正することができる。
開発ツール・プログラムは、自律動作装置100の各モジュール部のアクチュエータ及びプロセッサの現実の動作を再現するためプログラム・モジュールやデータを用意している。物理エンジン機能を実現するためのプログラム・モジュールに対して指示を出すためのAPIあるいは関数を、実機上で動作しているOS(図6を参照のこと)と同じものとすることにより、開発ツール・プログラムで作成したプログラムを、そのまま実機上のOSで動作させることができる。
昨今、物理エンジンの精度は向上しており、自律動作装置100の実機動作を制御するアプリケーション・プログラムを、物理エンジンと3Dグラフィックス・アニメーションの機能を備えた開発ツール・プログラム上で動作させることにより、実機動作を仮想機械でより正確に再現することが可能になってきている。特に、高機能の物理演算を行なう物理エンジンが、実機のハードウェア(例えば、モータ・コントローラ)に相当する機能を果たすので、実機を用いることなく制御プログラムを検証することができるので、開発の効率が向上するとともに開発コストが低減する。また、このようにして作成された制御プログラムを含むアプリケーション・プログラムを、実機上で動作させたときに、実機上でも期待した動作を再現することができる。
例えば、各モジュール部のコントローラに対する時系列的な目標値からなる定義動作(前述)が実環境においても正しく動作するかどうかを、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムを利用すれば、実機上で定義動作を実行させことなく、評価・検証することができる。
一方、広義のAIの機能に一部にも相当する行動計画に関しては、定義動作ほど評価や検証が容易ではない。例えば、以下のような評価・検証方法が挙げられる。
(1)評価対象となる行動計画を実機上又は物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラム上で動作させ、実機の評価者に対する挙動や、同開発ツール・プログラム上での評価者の操作に対する挙動を目視で確認する。
(2)評価者の代替としての役割を果たす行動計画(評価者行動計画)を別途作成し、評価者行動計画に対する評価対象の行動計画による挙動を、評価者の目視又は評価者行動計画のデバッグ出力を以って確認する。
(2)評価者の代替としての役割を果たす行動計画(評価者行動計画)を別途作成し、評価者行動計画に対する評価対象の行動計画による挙動を、評価者の目視又は評価者行動計画のデバッグ出力を以って確認する。
上記の(1)並びに(2)のいずれの評価方法も、以下のような問題点がある。
(a)評価に長時間を要する。
(b)乱数や周辺環境、評価者の操作のブレなどの影響を受け、検証結果の再現性が低い。
(c)行動計画制御ソフトウェアへの入力となる環境データとして、各モジュール部内のセンサや認識器の出力を利用しているため、統合的な検証にしかなっておらず、行動計画のロジックに対する直接的な評価とは言い難い。
(b)乱数や周辺環境、評価者の操作のブレなどの影響を受け、検証結果の再現性が低い。
(c)行動計画制御ソフトウェアへの入力となる環境データとして、各モジュール部内のセンサや認識器の出力を利用しているため、統合的な検証にしかなっておらず、行動計画のロジックに対する直接的な評価とは言い難い。
そこで、以下では、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムを利用したアプリケーション・プログラムの開発環境において、再現性が高く、且つ効率的な行動計画の検証方法について提案する。この検証方法は、望ましい(若しくは、理想的な)定義動作の順序を定義した行動検証シナリオを用意しておき、評価対象となる行動計画を所定の環境下で駆動させて、定義動作が行動検証シナリオの通りの順序で選択されるかどうかによって行動計画の評価・検証を行なうものである。
行動検証シナリオを参照して行動計画の評価・検証を実施するソフトウェアのことを、以下では「行動検証ソフトウェア」と呼ぶことにする。行動検証ソフトウェアは、行動検証ソフトウェア自身で評価対象の行動計画を駆動させて、当該ソフトウェア単体で行動計画の評価・検証を実施する「単体動作モード」と、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムによって行動計画を駆動し、仮想環境に応じて起動される定義動作を監視して行動計画の評価・検証を実施する「シミュレーション・モード」と、実機(自律動作装置100)上で行動計画を駆動し、実環境に応じて起動させる定義動作を監視して行動計画の評価・検証を実施する「実機動作モード」という3通りの動作モードを有している。
「単体動作モード」や「シミュレーション・モード」によれば、プログラム(行動計画)の開発環境において、高い再現性で行動計画の評価・検証を実施することができる。また、「実機動作モード」によれば、実時間で行動計画の評価・検証を実施することができる。
図8には、単体動作モードにおいて行動計画を評価・検証するためのソフトウェア・モジュールの構成例を示している。行動検証ソフトウェア800は、開発装置200などで実行される。単体動作モードにおける行動検証ソフトウェア800は、シナリオ評価部801と、行動検証シナリオ保持部802と、擬似認識結果ストリーム出力部803と、行動計画制御部810をソフトウェア・モジュールとして備えている。図示の行動検証ソフトウェア800は、当該ソフトウェア800内の行動計画制御部810で駆動させている行動計画を評価・検証する構成となっている。
行動計画制御部810は、評価対象行動計画保持部811と、状態保存部812と、外部環境入力部813と、行動計画駆動部814を備えている。
評価対象行動計画保持部811は、行動検証ソフトウェア800において評価対象となる1又はそれ以上の行動計画のプログラム及びデータを保持している。行動計画は、アプリケーション・プログラムの状態(内部状態)と外部環境に応じて起動すべき定義動作を記述するプログラム及びデータである。以下では、定義動作を選択するための条件分岐をツリー構造の形式で記述した行動計画を想定している。
状態保存部812は、外部環境の認識結果や、アプリケーション・プログラム(行動計画駆動部814で駆動される行動計画)の状態、すなわち内部状態を保存する。
外部環境入力部813は、外部環境のデータを行動計画制御部810の外部から受け取り、状態保存部812への書き込み(更新)を行なう。外部環境は、本来は実機(自律動作装置100)の周辺の環境データを指す。但し、単体動作モードでは、評価対象となる行動計画から行動検証シナリオ通りの定義動作が順序で選択されるように想定される、理想的な外部環境データの時系列の集合体である。
行動計画駆動部814は、評価対象としている行動計画のプログラム及びデータを評価対象行動計画保持部811から読み込むとともに、状態保存部812から現在の内部状態及び外部環境の情報を参照して、内部状態又は外部環境に応じて表出すべき定義動作を選択する。また、行動計画駆動部814は、選択した定義動作に応じて更新されるアプリケーション・プログラムの状態を、状態保存部812に書き込む。
行動検証シナリオ保持部802は、行動計画毎の行動検証シナリオを保持している。行動検証シナリオは、想定される外部環境の変化に従って行動計画から選択される、望ましい(若しくは、理想的な)定義動作の順序を定義したプログラム及びデータである。行動検証シナリオは、例えば行動計画プログラムの開発者が、想定する外部環境の変化に対して理想的と考える定義動作の順序である。
擬似認識結果ストリーム出力部803は、行動計画制御部810内の外部環境入力部813に対して外部環境の擬似的な認識結果データをストリーム出力する。外部環境は、実機(自律動作装置100)の周辺の環境データであり、本来は各モジュール部内のセンサの検出結果に基づいて認識されるデータある。但し、単体動作モードでは、評価対象となる行動計画から行動検証シナリオ通りの定義動作が順序で選択されるように想定される、理想的な外部環境の認識結果の時系列のデータ集合体からなる擬似認識結果ストリームを外部環境として用いる。例えば、行動検証シナリオと同時に擬似認識結果ストリームを定義する。そして、擬似認識結果ストリーム出力部803は、評価対象となる行動計画に対する行動検証シナリオとともに定義された擬似認識結果ストリームを、外部環境入力部813に出力する。
シナリオ評価部801は、現在評価対象としている行動計画に対応する行動検証シナリオを行動検証シナリオ保持部802から読み出す。そして、シナリオ評価部801は、行動計画駆動部814が擬似認識結果ストリームに応じて順次選択する定義動作を、行動検証シナリオにおいて定義される定義動作の順序と比較した結果に基づいて、評価対象としている行動計画の評価・検証を実施する。
図9には、シミュレーション・モードにおいて行動計画を評価・検証するためのソフトウェア・モジュールの構成例を示している。シミュレーション・モードにおける行動検証ソフトウェア900は、シナリオ評価部901と、行動検証シナリオ保持部902を備え、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラム内で仮想的に駆動される行動計画を評価・検証する構成となっている。
物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラム内には、行動計画の駆動を制御する行動計画制御部910と仮想環境認識部903が配置される。行動計画制御部910は、評価対象行動計画保持部911と、状態保存部912と、外部環境入力部913と、行動計画駆動部914を備えている。
評価対象行動計画保持部911は、行動検証ソフトウェア900において評価対象となる1又はそれ以上の行動計画のプログラム及びデータを保持している。
状態保存部912は、(仮想的な)外部環境の認識結果や、アプリケーション・プログラム(行動計画駆動部914で駆動される行動計画)の状態、すなわち内部状態を保存する。
外部環境入力部913は、外部環境のデータを行動計画制御部910の外部から受け取り、状態保存部912への書き込み(更新)を行なう。外部環境は、本来は実機(自律動作装置100)の周辺の環境データを指す。但し、シミュレーション・モードでは、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラム内の仮想的な外部環境の認識結果の時系列の集合体である。仮想環境認識部903は、同開発ツール・プログラム内の仮想環境を認識して、外部環境入力部913に出力する。
行動計画駆動部914は、評価対象(若しくは、シミュレーションの対象)としている行動計画のプログラム及びデータを評価対象行動計画保持部911から読み込むとともに、状態保存部912から現在の内部状態及び外部環境の情報を参照して、内部状態又は外部環境に応じて表出すべき定義動作を選択する。また、行動計画駆動部914は、選択した定義動作に応じて更新されるアプリケーション・プログラムの状態を、状態保存部912に書き込む。
行動検証シナリオ保持部902は、行動計画毎の行動検証シナリオを保持している。行動検証シナリオは、想定される外部環境の変化に従って行動計画から選択される、望ましい(若しくは、理想的な)定義動作の順序を定義したプログラム及びデータである。行動検証シナリオは、例えば行動計画プログラムの開発者が、想定する外部環境の変化に対して理想的と考える定義動作の順序である。
シナリオ評価部901は、現在評価対象としている行動計画に対応する行動検証シナリオを行動検証シナリオ保持部902から読み出す。そして、シナリオ評価部901は、行動計画駆動部914が仮想環境に応じて順次選択する定義動作を、行動検証シナリオにおいて定義される定義動作の順序と比較した結果に基づいて、評価対象としている行動計画の評価・検証を実施する。
図10には、実機動作モードにおいて行動計画を評価・検証するためのソフトウェア・モジュールの構成例を示している。実機動作モードにおける行動検証ソフトウェア1000は、シナリオ評価部1001と、行動検証シナリオ保持部1002を備え、実機(自律動作装置100)上で行動計画を駆動し、実環境に応じて起動させる定義動作を監視して行動計画の評価・検証を実施する。
実機ハードウェア(自律動作装置100)には、行動計画制御部1010と実環境認識部1003が配置される。行動計画制御部1010は、具体的には本体部のプロセッサ上で行動計画を実行する行動計画制御ソフトウェアであるが、評価対象行動計画保持部1011と、状態保存部1012と、外部環境入力部1013と、行動計画駆動部1014を備えている。また、実環境認識部1003は、各モジュール部内に配置されるセンサ及びプロセッサに相当し、プロセッサがセンサによる検出信号に基づいて実機100の外部環境を認識する。
評価対象行動計画保持部1011は、行動検証ソフトウェア1000において評価対象となる1又はそれ以上の行動計画のプログラム及びデータを保持している。
状態保存部1012は、外部環境の認識結果や、アプリケーション・プログラム(行動計画駆動部1014で駆動される行動計画)の状態、すなわち内部状態を保存する。
外部環境入力部1013は、実機100の外部環境のデータを行動計画制御部1010の外部から受け取り、状態保存部1012への書き込み(更新)を行なう。外部環境は、実機(自律動作装置100)の周辺の現実の環境データであり、実環境認識部1003から入力される。
行動計画駆動部1014は、評価対象としている行動計画のプログラム及びデータを行動計画保持部1011から読み込むとともに、状態保存部1012から現在の内部状態及び外部環境の情報を参照して、内部状態又は外部環境に応じて表出すべき定義動作を選択する。また、行動計画駆動部1014は、選択した定義動作に応じて更新されるアプリケーション・プログラムの状態を、状態保存部1012に書き込む。
行動検証シナリオ保持部1002は、行動計画毎の行動検証シナリオを保持している。行動検証シナリオは、想定される外部環境の変化に従って行動計画から選択される、望ましい(若しくは、理想的な)定義動作の順序を定義したプログラム及びデータである。行動検証シナリオは、例えば行動計画プログラムの開発者が、想定する外部環境の変化に対して理想的と考える定義動作の順序である。
シナリオ評価部1001は、現在評価対象としている行動計画に対応する行動検証シナリオを行動検証シナリオ保持部1002から読み出す。そして、シナリオ評価部1001は、行動計画駆動部1014が実機周辺の実環境に応じて順次選択する定義動作を、行動検証シナリオにおいて定義される定義動作の順序と比較した結果に基づいて、評価対象としている行動計画の評価・検証を実施する。
単体動作モード、シミュレーション・モード、及び実機動作モードのいずれにおいても、行動計画制御部を構成する各ソフトウェア・モジュール自体はほぼ同一であるが、モード毎に動作する実行環境と外部環境の入力源が相違する。外部環境入力部のインターフェースを適切に定義することによって、行動計画制御部はほぼ同じソフトウェア・モジュール構成のままでもさまざまな環境で動作することが可能である。
単体動作モードでは、理想的な外部環境の認識結果である擬似認識結果ストリームを外部環境入力部813に入力することで、行動計画制御部810は、実機の実環境認識部の性能に左右されることなく、評価対象となる行動計画を高い再現性で評価・検証することができる。
一方、同一構成の行動計画制御部910、1010がシミュレーション・モード及び実機動作モードの各々においても動作することにより、統合評価(インテグレーション・テスト)においても同形式の行動検証シナリオにより行動計画を評価することが可能となっている。
いずれの動作モードにおいても、シナリオ評価部801(901、1001)は、行動計画が実行された際に選択される定義動作の順序が行動検証シナリオに定義された順番と同一であるかどうかを比較する。そして、比較の結果、定義動作の順序が同一でないと判別された場合には、評価対象の行動計画の異常を検出する。
図11には、行動計画を評価・検証するための処理手順をフローチャートの形式で示している。以下では、単体動作モードにおける行動検証ソフトウェア800が実行する処理手順として説明するが、シミュレーション・モード及び実機動作モードでも同様の処理手順となることを理解されたい。
まず、状態保存部812の初期化処理として、評価対象となる行動計画の検証のための前提条件を状態保存部812に書き込む(ステップS1101)。検証の前提条件は、行動検証シナリオにおいて想定している前提条件であり、行動検証シナリオの定義時に同時に定義される。
次いで、行動計画駆動部814を起動する(ステップS1102)。行動計画駆動部814は、評価対象行動計画保持部811から、今回の行動検証で評価対象とする行動計画を読み込み、行動計画の動作を開始する。
そして、シナリオ評価部801は、行動計画駆動部814で順次呼び出す定義動作をチェックする(ステップS1103)。
ステップS1102では、行動計画駆動部814において動作を開始した行動計画は、例えば所定の制御周期毎に状態保存部812に保存されている外部環境並びにアプリケーション・プログラムの状態(内部状態)を読み込み、その外部環境並びに内部状態からなる条件に適う定義動作を選択して呼び出す。そして、ステップS1103では、シナリオ評価部801は、行動検証シナリオ保持部802から、評価対象となっている行動計画に対応する行動検証シナリオを呼び出すと、行動計画が選択した定義動作が行動検証シナリオに定義された順番通りの期待された定義動作であるかどうかをチェックする。
ここで、行動計画が選択した定義動作が行動検証シナリオに定義された順番通りの期待された定義動作でない場合には(ステップS1104のNo)、評価対象の行動計画の異常を検出して、本処理を異常終了する。異常終了の場合、行動検証ソフトウェアや、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムであれば、GUI上で、ダイアログボックスを表示するなど異常終了についての告知がなされるようにすることができる。また、実機動作モードの場合には、例えば図1中の参照番号121で例示したスピーカ用ドライバを駆動して、音声によってユーザに告知したり、通信モデム125を用いてユーザの携帯端末(スマートフォンなど)に通知したりするようにしてもよい。
一方、今回の制御周期で行動計画が選択した定義動作が、定義動作が行動検証シナリオに定義された順番通りの期待された定義動作である場合には(ステップS1104のYes)、行動検証シナリオで順序が定義されたすべての定義動作について評価・検証が完了したかどうかをチェックする(ステップS1105)。
行動検証シナリオがまだ完了していない場合には(ステップS1105のNo)、外部環境入力部813に入力される擬似認証結果と、現在のアプリケーション・プログラムの状態(内部状態)を書き込んで、状態保存部812が保存している状態を更新する(ステップS1106)。その後、ステップS1103に戻って、行動検証シナリオを用いた行動計画が次に呼び出す定義動作についてのチェックを繰り返し実施する。
以降、行動検証シナリオの終端に到達するまで、上記と同様の処理を繰り返し実施する。そして、異常が検出されることなく、行動検証シナリオの終端に到達することができた場合には(ステップS1105のYes)、評価対象の行動計画は正常であると結論して、本処理を正常終了する。
図12には、上述した行動計画の評価・検証を含んだ行動計画の開発ワークフローの一例を示している。
開発者は、例えば開発装置200上で動作する開発ツール・プログラムを用いて、ロボットなどの自律動作装置100の行動計画の設計・開発を行なう。従来、設計・開発された行動計画をシミュレータに掛けたり実機を駆動させたりすることで評価・検証が行なわれていたが、行動計画単体での評価は難しかった。これに対し、本実施形態では、図8に示したような、行動検証ソフトウェアの単体動作モードを利用して、行動計画単体の評価・検証を行なうことができる。
次いで、物理エンジン機能などを利用した開発ツール・プログラム実行環境下で、自律動作装置100の行動計画の設計・開発を行なう。そして、図9に示したような、行動検証ソフトウェアのシミュレーション・モードを利用して、開発ツール・プログラム実行環境での行動計画の統合評価を実施する。
さらに、開発装置200に自律動作装置100の実機を接続して、実機動作環境下で、自律動作装置100の行動計画の設計・開発を行なう。そして、図10に示したような、行動検証ソフトウェアの実機動作モードを利用して、実機環境での行動計画の統合評価を実施する。
行動計画の開発スケジュールは、開発ツール・プログラム実行環境並びに実機環境での統合評価環境の開発速度の影響を受ける。本実施形態によれば、行動検証ソフトウェアの単体動作モードを利用することで行動計画の単体評価を行なうことが可能になるので、比較的他モジュールとは独立性の高い並行開発の実現を期待することができる。
一般的なソフトウェア開発では、プログラムを評価・検証に用いる検証用コードの作成は、プログラムの開発を担当したプログラマ自身が行なう。これに対し、本実施形態では、行動計画の設計・開発を担当したプログラマ以外のデザイナーなども行動検証シナリオを作成することを想定している。
図13には、行動検証シナリオの作成に適用されるGUIツール1300の構成例を模式的に示している。図示のGUIツール1300は、評価対象となる行動計画を表示する行動計画表示ペイン1301と、行動計画に評価・検証に用いる行動検証シナリオの設計に用いる行動検証シナリオ設計ペイン1302と、行動検証シナリオに関するプロパティを設定するためのプロパティ設定ペイン1303を含んでいる。
もちろん、GUIツール1300は、図示したペイン1301〜1303以外のペインを表示してもよいし、行動検証シナリオの設計作業に利用されるツール・ボタンなどのGUI部品を表示してもよいが、図面の簡素化のため省略している。
本実施形態では、ツリー構造の形式で表現した行動計画を想定している。したがって、行動計画表示ペイン1301内には、評価対象となる行動計画を表現したツリーが表示される。ツリー上の末端のノードA、B、C、…はそれぞれ定義動作に相当する。また、末端以外のノードは、すべて条件ノードであり、現在観測される外部環境と内部状態に応じていずれかの枝を選択する。行動計画を駆動する自律動作装置100は、例えば定義動作が完了したとき、外部環境の変化が観測されるなどのイベントが発生したとき、あるいは所定の制御周期毎に、ツリーのルートからツリー探索を開始して、現在観測される外部環境と内部状態に適合する末端ノードに該当する定義動作を選択する。
行動検証シナリオは、評価対象となる行動計画に対して定義される、望ましい(若しくは、理想的な)定義動作の順序を示す。行動検証シナリオ設計ペイン1302では、それぞれ定義動作に相当する複数のノードB、A、E、F、…をタイムライン方向に配置することによって、タイムライン方向の順番通りの定義動作からなる行動検証シナリオを設計することができる。デザイナーは、例えば行動景観表示ペイン1301に表示されているツリーの中から、所望する定義動作に対応する末端ノードを行動検証シナリオ設計ペイン1302内にドラッグ・アンド・ドロップ操作するという簡便で直感的な作業により、行動検証シナリオを設計することができる。また、ある定義動作から次の定義動作に移行する際の外部環境などの条件(Env data)を、行動検証シナリオ設計ペイン1302内で、該当するノード間を結ぶジョイント上に記述するという形式で定義することができる。
プロパティ設定ペイン1303では、行動検証シナリオ全般の設定値や、フォーカスされているオブジェクトの情報を表示する。例えば、行動検証シナリオ設定ペイン1302内で、定義動作のノードや、ノード間の遷移条件(Env data)のオブジェクトを選択すると、そのオブジェクトのプロパティに関する詳細な情報がプロパティ設定ペイン1303に表示され、編集することができる。
行動計画の設計には、ステートマシンやツリーなどを構築する手法がよく利用されており、ビジュアル・プログラミング・ツールにより作業分担も可能である。図13に示したGUIツール1300は、行動計画の評価・検証プログラムである行動検証シナリオの作成にまで拡張するものである。GUIツール1300を用いることにより、行動計画の設計・開発者は、行動計画の仕様策定、実装、評価に至るまでの一連の作業を行なうことが可能である。
行動検証シナリオの主な評価項目は定義動作の実行順序であるが、それ以外の評価を行動検証シナリオに組み込むことができる。例えば、下記のような項目を、定義動作の実行順序と並列して評価することが考えられる。
(A)選択した定義動作を実行した際、状態保存部812に保存される状態が期待通りか。
(B)検証は期待通りの時間内に終わるか。
(C)期待通りに、指定した以外の定義動作が選択されたか。
(B)検証は期待通りの時間内に終わるか。
(C)期待通りに、指定した以外の定義動作が選択されたか。
シナリオは、所定の事象を検出したときの情報をシナリオに関連付けて記録する機能を備えている(前述)。したがって、行動検証シナリオは、このような機能を利用して、上記(A)〜(C)のような評価項目を行動検証シナリオに関連付けて記録するようすればよい。また、行動検証シナリオにより記録されたデータを外部に取り出すAPIを定義すれば、シナリオ評価部801(又は、901、1001)は、このAPIを呼び出すことによって、定義動作の順序以外のさまざまな評価項目についても評価・検証することが可能になる。
図14には、上述した行動計画の評価・検証方法の応用例に係るシステム構成を示している。図示のシステムは、開発済みの行動計画を実機100上で駆動させる際に観測される外部環境や内部状態を認識ストリームのデータとして取り出して、開発装置200上において単体動作モードで動作する行動検証ソフトウェア1400に入力して、実機上の環境をソフトウェアで再現するという構成になっている。認識結果ストリームは、例えば図2に示したようなネットワーク環境において、無線又は有線の通信によって送信される。通信ネットワークは、P2P型、LAN、WAN、あるいはインターネットなどのいずれで構成されていてもよい。
実機ハードウェア(自律動作装置100)には、行動計画制御部1430と実環境認識部1435が配置される。行動計画制御部1430は、具体的には本体部のプロセッサ上で行動計画を実行する行動計画制御ソフトウェアであるが、行動計画保持部1431と、状態保存部1432と、外部環境入力部1433と、行動計画駆動部1434を備えている。
行動計画保持部1431は、本体部110のメモリ112又は各モジュール部120内のメモリ123に相当し、開発済みの1又はそれ以上の行動計画のプログラム及びデータを保持している。
実環境認識部1435は、各モジュール部120内に配置されるセンサ124及びプロセッサ122に相当し、プロセッサ122がセンサ124による検出信号に基づいて実機100の外部環境を認識する。外部環境入力部1433は、実環境認識部1435から実機100の外部環境のデータを受け取り、状態保存部1432への書き込み(更新)を行なう。
外部環境入力部1433は、実環境認識部1435から外部環境のデータを受け取り、状態保存部1432への書き込み(更新)を行なう。
行動計画駆動部1434は、実機100で駆動すべき行動計画のプログラム及びデータを行動計画保持部1431から読み込むとともに、状態保存部1432から現在の内部状態及び外部環境の情報を参照して、内部状態又は外部環境に応じて表出すべき定義動作を選択する。また、行動計画駆動部1434は、選択した定義動作に応じて更新されるアプリケーション・プログラムの状態を、状態保存部1432に書き込む。
ここで、実機100上で行動計画が期待通りに動かなかった場合(行動計画の不具合がユーザ環境下で発生した場合)などには、状態保存部1432に保存されている内部状態並びに外部環境を、認識結果ストリームとして取り出す。状態保存部1432からの認識結果ストリームの取り出しは、行動検証シナリオにより記録されたデータを外部に取り出すように定義したAPIを用いて実施することができる。ここで言う「認識結果ストリーム」は、単体動作モード(図8を参照のこと)における「擬似認識結果ストリーム」と同質のデータであり、行動検証ソフトウェアへの入力データとしてそのまま使用することができるデータである。
そして、開発装置200上において、実機100上の状態保存部1432から取り出した認識結果ストリームを、単体動作モードで動作する行動検証ソフトウェア1400に入力して、実機上の環境をソフトウェアで再現する。
行動検証ソフトウェア1400は、当該ソフトウェア1400内の行動計画制御部1410で駆動させている行動計画を評価・検証する構成となっている。行動計画制御部1410は、評価対象行動計画保持部1411と、状態保存部1412と、外部環境入力部1413と、行動計画駆動部1414を備えている。
外部環境入力部1433は、実機100から取り出された認識結果ストリームの受け取り、状態保存部1012への書き込み(更新)を行なう。
評価対象行動計画保持部1411は、行動検証ソフトウェア1400において評価対象となる1又はそれ以上の行動計画のプログラム及びデータを保持している。行動計画駆動部1434は、実機100側で不具合が発生した行動計画のプログラム及びデータを行動計画保持部1431から読み込むとともに、状態保存部1432から認識結果ストリームとして逐次入力される内部状態及び外部環境の情報を参照して、内部状態又は外部環境に応じて表出すべき定義動作を選択することで、同じ行動計画を駆動させていた実機100側で不具合が発生したときの環境を再現する。
行動検証シナリオ保持部1402は、行動計画毎の行動検証シナリオを保持している。行動検証シナリオは、想定される外部環境の変化に従って行動計画から選択される、望ましい(若しくは、理想的な)定義動作の順序を定義したプログラム及びデータである。行動検証シナリオは、例えば行動計画プログラムの開発者が、想定する外部環境の変化に対して理想的と考える定義動作の順序である。
シナリオ評価部1401は、不具合が発生した実機100において駆動していた行動計画に対応する行動検証シナリオを行動検証シナリオ保持部1402から読み出す。そして、シナリオ評価部1401は、行動計画駆動部1434が実機周辺の実環境に応じて順次選択する定義動作を、行動検証シナリオにおいて定義される定義動作の順序と比較した結果に基づいて、再現された不具合発生環境下において行動計画の評価・検証を実施する。
ソフトウェアの不具合を修復するためのファースト・ステップは、不具合を再現させることである。ユーザの環境で発生する問題を開発者の環境で再現できないケースも想定される。その理由として、ユーザの環境にのみ存在する特殊な状況で、開発者の環境には存在しないことが挙げられる。
本実施形態では、状態保存部に保存される情報のみを状態として扱って行動計画を駆動する構成となっている(例えば、図8〜図10を参照のこと)。したがって、図14に示したシステム構成では、実機100においてソフトウェアの不具合が発生したときの状態保存部1432に保存されている状態を認識結果ストリームとして取り出して、行動検証ソフトウェア1400を実行する開発装置200に転送することで、ユーザの環境で発生した不具合を開発者の環境でも確実に再現することが可能になる。その結果として、開発者において不具合の解析とソフトウェアの修復を容易に進めることが可能になる。
本明細書で開示する技術の利点を以下に挙げておく。
・検証開発容易性
行動計画を実行するための検証項目をまとめた行動検証シナリオを構築するGUI環境(図13を参照のこと)を提供することで、従来はプログラマ以外には難しかった検証項目開発の難易度を低減することができる。
行動計画を実行するための検証項目をまとめた行動検証シナリオを構築するGUI環境(図13を参照のこと)を提供することで、従来はプログラマ以外には難しかった検証項目開発の難易度を低減することができる。
・評価・検証の効率化、高速化
あらかじめ定義した認識結果を入力して行動計画を駆動させることで、非常に短時間で行動計画を評価・検証することが可能となる。
あらかじめ定義した認識結果を入力して行動計画を駆動させることで、非常に短時間で行動計画を評価・検証することが可能となる。
・再現性
単体動作モードの行動検証ソフトウェアでは、実機の外部環境を認識する実環境認識部などのモジュールを使用しないで、完全な理想環境で行動計画の評価・検証を実施するので、再現性のある評価結果を得ることができる。
単体動作モードの行動検証ソフトウェアでは、実機の外部環境を認識する実環境認識部などのモジュールを使用しないで、完全な理想環境で行動計画の評価・検証を実施するので、再現性のある評価結果を得ることができる。
・並行開発容易性
単体動作モードの行動検証ソフトウェアでは、行動検証シナリオとともに定義された理想的な擬似認識結果ストリームを用いて行動計画の評価・検証を実施することができる。すなわち、シミュレータ・モードで使用する仮想環境認識部や、実機動作モードで使用する実環境認識部などの他モジュールの開発を待たずに、行動計画の評価・検証を開始することができる。その結果として、行動計画のような認識結果に応じて行動を制御する認識系のプログラムの開発を、自律動作装置100の実機動作を制御する動作制御プログラムとは完全に独立して行なうことが可能となる。
単体動作モードの行動検証ソフトウェアでは、行動検証シナリオとともに定義された理想的な擬似認識結果ストリームを用いて行動計画の評価・検証を実施することができる。すなわち、シミュレータ・モードで使用する仮想環境認識部や、実機動作モードで使用する実環境認識部などの他モジュールの開発を待たずに、行動計画の評価・検証を開始することができる。その結果として、行動計画のような認識結果に応じて行動を制御する認識系のプログラムの開発を、自律動作装置100の実機動作を制御する動作制御プログラムとは完全に独立して行なうことが可能となる。
・不具合箇所の特定容易性
本明細書で開示する技術によれば、行動検証ソフトウェアの単体動作モードを利用して、行動計画を単体で評価・検証することができる。したがって、単体評価は通過していることを前提として、行動計画の統合評価を開始することができるので、不具合を発生した箇所の絞り込みが容易となる。
本明細書で開示する技術によれば、行動検証ソフトウェアの単体動作モードを利用して、行動計画を単体で評価・検証することができる。したがって、単体評価は通過していることを前提として、行動計画の統合評価を開始することができるので、不具合を発生した箇所の絞り込みが容易となる。
・行動検証シナリオの流用
行動検証ソフトウェアの単体動作モードにおいて用いた行動検証シナリオを、シミュレーション・モード及び実機動作モードでも一切変更することなく、使用することができる。したがって、行動計画制御ソフトウェアの実行環境が変わったとしても、新たに評価項目や検証用コードを書き起こすといった作業が不要となる。
行動検証ソフトウェアの単体動作モードにおいて用いた行動検証シナリオを、シミュレーション・モード及び実機動作モードでも一切変更することなく、使用することができる。したがって、行動計画制御ソフトウェアの実行環境が変わったとしても、新たに評価項目や検証用コードを書き起こすといった作業が不要となる。
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
本明細書で開示する技術は、ロボットや自動走行車、無人航空機(ドローン)などの自律動作装置の自律的若しくは適応的な行動を実現するアプリケーション・プログラムの動作の評価・検証に利用することができる。さまざまな車種やさまざまに機種に対してそれぞれ別の行動計画を開発するよりも、各車種や各機種の上で抽象化した実行環境において1つの行動計画を入念に評価するというモデルが現実的であり、図8〜図10に示したような行動計画の評価・検証方法が適していると考えられる。
また、本明細書で開示する技術は、行動計画を用いて動作を制御する、ビデオ・ゲームのキャラクターのAI開発に対しても適用することができる。ゲーム開発においては、実機動作環境での行動計画の評価・検証の工程が省かれるだけで、他はロボットなどの自律動作装置の行動計画の開発工程と基本的に同様である。
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
(1)適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理装置であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部と、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部と、
を具備する情報処理装置。
(2)外部から入力される環境情報に応じて、前記プログラムの駆動を制御するプログラム実行制御部をさらに備え、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが前記環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(1)に記載の情報処理装置。
(3)前記プログラム実行制御部は、外部から入力される擬似的な環境情報に応じた動作を呼び出し、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが前記擬似的な環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(2)に記載の情報処理装置。
(4)前記行動検証シナリオ通りの動作が順序で呼び出されるように想定して定義される前記擬似的な環境情報を前記プログラム実行制御部に対して出力する擬似環境情報出力部をさらに備える、
上記(3)に記載の情報処理装置。
(5)前記評価部は、前記適応制御装置のシミュレータにより駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(1)に記載の情報処理装置。
(6)前記シミュレータは、前記シミュレータ内の仮想環境を認識して得られる仮想的な環境情報に応じて前記プログラムを駆動し、
前記評価部は、前記シミュレータにより駆動される前記プログラムが前記仮想的な環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(5)に記載の情報処理装置。
(7)前記評価部は、前記適応制御装置上により実際に駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(1)に記載の情報処理装置。
(8)前記適応制御装置は環境情報を認識する認識部をさらに備え、
前記適応制御装置上で駆動する前記プログラムは、前記認識部において認識される現実の環境情報に応じて動作を呼び出し、
前記評価部は、前記適応制御装置により駆動される前記プログラムが前記認識部において認識された現実の環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(7)に記載の情報処理装置。
(9)前記プログラム実行制御部は、前記プログラムを駆動する適応制御装置において認識された環境情報を外部から入力して、前記プログラムの駆動を制御し、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが、前記プログラムを駆動する適応制御装置において認識された環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(2)に記載の情報処理装置。
(10)前記評価部は、評価対象となる前記プログラムが呼び出す動作の順序を前記行動検証シナリオに定義された順番と比較し、同一でない場合には前記プログラムの異常を検出する、
上記(1)乃至(9)のいずれかに記載の情報処理装置。
(11)適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理方法であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを読み出すステップと、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価ステップと、
を有する情報処理方法。
(12)呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部、
適応制御装置が環境に応じた動作を実行するように記述されたプログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部、
として機能するようにコンピュータ可読形式で記述されたコンピュータ・プログラム。
(13)適応制御装置が環境に応じた動作を制御する制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、呼び出されるべき動作の順序を定義する行動検証シナリオを設定する行動シナリオ設定ステップと、
前記制御プログラムに、前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して前記プログラムの評価又は検証を行なう条件を設定する検証条件設定ステップと、
を具備するプログラム製造方法。
(1)適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理装置であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部と、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部と、
を具備する情報処理装置。
(2)外部から入力される環境情報に応じて、前記プログラムの駆動を制御するプログラム実行制御部をさらに備え、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが前記環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(1)に記載の情報処理装置。
(3)前記プログラム実行制御部は、外部から入力される擬似的な環境情報に応じた動作を呼び出し、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが前記擬似的な環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(2)に記載の情報処理装置。
(4)前記行動検証シナリオ通りの動作が順序で呼び出されるように想定して定義される前記擬似的な環境情報を前記プログラム実行制御部に対して出力する擬似環境情報出力部をさらに備える、
上記(3)に記載の情報処理装置。
(5)前記評価部は、前記適応制御装置のシミュレータにより駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(1)に記載の情報処理装置。
(6)前記シミュレータは、前記シミュレータ内の仮想環境を認識して得られる仮想的な環境情報に応じて前記プログラムを駆動し、
前記評価部は、前記シミュレータにより駆動される前記プログラムが前記仮想的な環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(5)に記載の情報処理装置。
(7)前記評価部は、前記適応制御装置上により実際に駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(1)に記載の情報処理装置。
(8)前記適応制御装置は環境情報を認識する認識部をさらに備え、
前記適応制御装置上で駆動する前記プログラムは、前記認識部において認識される現実の環境情報に応じて動作を呼び出し、
前記評価部は、前記適応制御装置により駆動される前記プログラムが前記認識部において認識された現実の環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(7)に記載の情報処理装置。
(9)前記プログラム実行制御部は、前記プログラムを駆動する適応制御装置において認識された環境情報を外部から入力して、前記プログラムの駆動を制御し、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが、前記プログラムを駆動する適応制御装置において認識された環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
上記(2)に記載の情報処理装置。
(10)前記評価部は、評価対象となる前記プログラムが呼び出す動作の順序を前記行動検証シナリオに定義された順番と比較し、同一でない場合には前記プログラムの異常を検出する、
上記(1)乃至(9)のいずれかに記載の情報処理装置。
(11)適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理方法であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを読み出すステップと、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価ステップと、
を有する情報処理方法。
(12)呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部、
適応制御装置が環境に応じた動作を実行するように記述されたプログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部、
として機能するようにコンピュータ可読形式で記述されたコンピュータ・プログラム。
(13)適応制御装置が環境に応じた動作を制御する制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、呼び出されるべき動作の順序を定義する行動検証シナリオを設定する行動シナリオ設定ステップと、
前記制御プログラムに、前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して前記プログラムの評価又は検証を行なう条件を設定する検証条件設定ステップと、
を具備するプログラム製造方法。
100…自律動作装置(実機)
110…本体部
111…プロセッサ、112…メモリ、113…通信モデム
114…バッテリー、115…USBポート、116…GPS
120…モジュール部
121…アクチュエータ、122…プロセッサ
123…メモリ、124…センサ、125…通信モデム
200…開発装置、210…コンピュータ本体部
211…プロセッサ、212…GPU
213…メモリ、214…USBポート、215…通信モデム
220…ディスプレイ、230…ユーザ・インターフェース
800…行動検証ソフトウェア(単体動作モード)
801…シナリオ評価部、802…行動検証シナリオ保持部
803…擬似認識結果ストリーム出力部
810…行動計画制御部
811…評価対象行動計画保持部、812…状態保存部
813…外部環境入力部、814…行動計画駆動部
900…行動検証ソフトウェア(シミュレーション・モード)
901…シナリオ評価部、902…行動検証シナリオ保持部
903…仮想環境認識部
910…行動計画制御部
911…評価対象行動計画保持部、912…状態保存部
913…外部環境入力部、914…行動計画駆動部
1000…行動検証ソフトウェア(実機動作モード)
1001…シナリオ評価部、1002…行動検証シナリオ保持部
1003…実環境認識部
1010…行動計画制御部
1011…評価対象行動計画保持部、1012…状態保存部
1013…外部環境入力部、1014…行動計画駆動部
110…本体部
111…プロセッサ、112…メモリ、113…通信モデム
114…バッテリー、115…USBポート、116…GPS
120…モジュール部
121…アクチュエータ、122…プロセッサ
123…メモリ、124…センサ、125…通信モデム
200…開発装置、210…コンピュータ本体部
211…プロセッサ、212…GPU
213…メモリ、214…USBポート、215…通信モデム
220…ディスプレイ、230…ユーザ・インターフェース
800…行動検証ソフトウェア(単体動作モード)
801…シナリオ評価部、802…行動検証シナリオ保持部
803…擬似認識結果ストリーム出力部
810…行動計画制御部
811…評価対象行動計画保持部、812…状態保存部
813…外部環境入力部、814…行動計画駆動部
900…行動検証ソフトウェア(シミュレーション・モード)
901…シナリオ評価部、902…行動検証シナリオ保持部
903…仮想環境認識部
910…行動計画制御部
911…評価対象行動計画保持部、912…状態保存部
913…外部環境入力部、914…行動計画駆動部
1000…行動検証ソフトウェア(実機動作モード)
1001…シナリオ評価部、1002…行動検証シナリオ保持部
1003…実環境認識部
1010…行動計画制御部
1011…評価対象行動計画保持部、1012…状態保存部
1013…外部環境入力部、1014…行動計画駆動部
Claims (13)
- 適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理装置であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部と、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部と、
を具備する情報処理装置。 - 外部から入力される環境情報に応じて、前記プログラムの駆動を制御するプログラム実行制御部をさらに備え、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが前記環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
請求項1に記載の情報処理装置。 - 前記プログラム実行制御部は、外部から入力される擬似的な環境情報に応じた動作を呼び出し、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが前記擬似的な環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
請求項2に記載の情報処理装置。 - 前記行動検証シナリオ通りの動作が順序で呼び出されるように想定して定義される前記擬似的な環境情報を前記プログラム実行制御部に対して出力する擬似環境情報出力部をさらに備える、
請求項3に記載の情報処理装置。 - 前記評価部は、前記適応制御装置のシミュレータにより駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
請求項1に記載の情報処理装置。 - 前記シミュレータは、前記シミュレータ内の仮想環境を認識して得られる仮想的な環境情報に応じて前記プログラムを駆動し、
前記評価部は、前記シミュレータにより駆動される前記プログラムが前記仮想的な環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
請求項5に記載の情報処理装置。 - 前記評価部は、前記適応制御装置上により実際に駆動される前記プログラムが順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
請求項1に記載の情報処理装置。 - 前記適応制御装置は環境情報を認識する認識部をさらに備え、
前記適応制御装置上で駆動する前記プログラムは、前記認識部において認識される現実の環境情報に応じて動作を呼び出し、
前記評価部は、前記適応制御装置により駆動される前記プログラムが前記認識部において認識された現実の環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
請求項7に記載の情報処理装置。 - 前記プログラム実行制御部は、前記プログラムを駆動する適応制御装置において認識された環境情報を外部から入力して、前記プログラムの駆動を制御し、
前記評価部は、前記プログラム実行制御部により駆動される前記プログラムが、前記プログラムを駆動する適応制御装置において認識された環境情報に応じて順次呼び出す動作と前記行動検証シナリオで定義される動作の順序とを比較して、前記プログラムの評価又は検証を行なう、
請求項2に記載の情報処理装置。 - 前記評価部は、評価対象となる前記プログラムが呼び出す動作の順序を前記行動検証シナリオに定義された順番と比較し、同一でない場合には前記プログラムの異常を検出する、
請求項1に記載の情報処理装置。 - 適応制御装置が環境に応じた動作を実行するように記述されたプログラムを処理する情報処理方法であって、
呼び出されるべき動作の順序を定義する行動検証シナリオを読み出すステップと、
前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価ステップと、
を有する情報処理方法。 - 呼び出されるべき動作の順序を定義する行動検証シナリオを保持する保持部、
適応制御装置が環境に応じた動作を実行するように記述されたプログラムが順次呼び出す動作と前記行動検証シナリオを比較して、前記プログラムの評価又は検証を行なう評価部、
として機能するようにコンピュータ可読形式で記述されたコンピュータ・プログラム。 - 適応制御装置が環境に応じた動作を制御する制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、呼び出されるべき動作の順序を定義する行動検証シナリオを設定する行動シナリオ設定ステップと、
前記制御プログラムに、前記プログラムが順次呼び出す動作と前記行動検証シナリオを比較して前記プログラムの評価又は検証を行なう条件を設定する検証条件設定ステップと、
を具備するプログラム製造方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017070633 | 2017-03-31 | ||
JP2017070633 | 2017-03-31 | ||
PCT/JP2018/007452 WO2018180143A1 (ja) | 2017-03-31 | 2018-02-28 | 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2018180143A1 true JPWO2018180143A1 (ja) | 2020-02-06 |
Family
ID=63675438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019509029A Pending JPWO2018180143A1 (ja) | 2017-03-31 | 2018-02-28 | 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200012239A1 (ja) |
EP (1) | EP3605248A4 (ja) |
JP (1) | JPWO2018180143A1 (ja) |
CN (1) | CN110462530A (ja) |
WO (1) | WO2018180143A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831636B2 (en) | 2018-01-08 | 2020-11-10 | Waymo Llc | Software validation for autonomous vehicles |
CN110825121B (zh) * | 2018-08-08 | 2023-02-17 | 纬创资通股份有限公司 | 控制装置与无人机控制方法 |
US10878082B2 (en) | 2019-03-25 | 2020-12-29 | Aurora Labs Ltd. | Dynamic CFI using line-of-code behavior and relation models |
US11368471B2 (en) * | 2019-07-01 | 2022-06-21 | Beijing Voyager Technology Co., Ltd. | Security gateway for autonomous or connected vehicles |
KR102259855B1 (ko) * | 2019-11-04 | 2021-06-01 | 충북대학교 산학협력단 | 자율 드론 비행 안전성 검사를 위한 위협 분석 기법 및 시스템 |
US11797016B2 (en) * | 2020-04-13 | 2023-10-24 | Boston Dynamics, Inc. | Online authoring of robot autonomy applications |
US11645397B2 (en) | 2020-04-15 | 2023-05-09 | Crowd Strike, Inc. | Distributed digital security system |
US11616790B2 (en) * | 2020-04-15 | 2023-03-28 | Crowdstrike, Inc. | Distributed digital security system |
US11563756B2 (en) * | 2020-04-15 | 2023-01-24 | Crowdstrike, Inc. | Distributed digital security system |
US11861019B2 (en) | 2020-04-15 | 2024-01-02 | Crowdstrike, Inc. | Distributed digital security system |
US11711379B2 (en) * | 2020-04-15 | 2023-07-25 | Crowdstrike, Inc. | Distributed digital security system |
EP3926422A1 (en) * | 2020-06-17 | 2021-12-22 | Siemens Aktiengesellschaft | Method for programming at least one machine in an industrial automation system |
US20240013542A1 (en) | 2020-10-30 | 2024-01-11 | Nec Corporation | Information processing system, information processing device, information processing method, and recording medium |
KR20230160807A (ko) * | 2021-02-12 | 2023-11-24 | 파이브 에이아이 리미티드 | 모바일 로봇 궤적 계획기들에 대한 성능 테스트 |
US11836137B2 (en) | 2021-05-19 | 2023-12-05 | Crowdstrike, Inc. | Real-time streaming graph queries |
JP2023038697A (ja) | 2021-09-07 | 2023-03-17 | 日立Astemo株式会社 | 車両制御システム及び車両制御方法 |
DE102022213262A1 (de) * | 2022-12-08 | 2024-06-13 | Förderverein FZI Forschungszentrum Informatik Karlsruhe e. V. | System und Verfahren zum Erstellen einer virtuellen Prüfungsumgebung anhand einer erkannten Häufigkeit von gleichen oder ähnlichen Szenarien |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003216234A (ja) * | 2002-01-18 | 2003-07-31 | Mitsubishi Heavy Ind Ltd | ソフトウェア設計支援システム |
JP2004114242A (ja) * | 2002-09-26 | 2004-04-15 | Advanced Telecommunication Research Institute International | コミュニケーションロボットおよびその開発支援装置 |
JP2006123153A (ja) * | 2004-11-01 | 2006-05-18 | Advanced Telecommunication Research Institute International | コミュニケーションロボット用開発支援装置および開発支援プログラム |
JP2006272537A (ja) * | 2005-03-30 | 2006-10-12 | Advanced Telecommunication Research Institute International | ロボットシミュレータおよびシミュレーションプログラム |
JP2008100315A (ja) * | 2006-10-19 | 2008-05-01 | Mitsubishi Heavy Ind Ltd | 制御シミュレーションシステム |
JP2013242638A (ja) * | 2012-05-18 | 2013-12-05 | Hitachi Automotive Systems Ltd | テスト支援システム、テスト支援方法、及びプログラム |
JP2015204006A (ja) * | 2014-04-15 | 2015-11-16 | ピコもん株式会社 | コンテンツ提供サーバ及びコンテンツ提供方法 |
US20160379519A1 (en) * | 2014-06-12 | 2016-12-29 | Play-i, Inc. | System and method for toy visual programming |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3558222B2 (ja) | 2002-03-15 | 2004-08-25 | ソニー株式会社 | ロボットの行動制御システム及び行動制御方法、並びにロボット装置 |
JP4544246B2 (ja) * | 2006-12-28 | 2010-09-15 | ソニー株式会社 | 制御装置および方法、プログラム、並びに記録媒体 |
JP4256440B2 (ja) * | 2007-08-10 | 2009-04-22 | ファナック株式会社 | ロボットプログラム調整装置 |
CN101286058B (zh) * | 2008-04-24 | 2010-09-29 | 上海交通大学 | 机器人模块化分布式自适应控制系统及方法 |
JP2011224672A (ja) * | 2010-04-15 | 2011-11-10 | Kobe Steel Ltd | ロボットのツールベクトルの導出方法及び較正方法 |
CN102567198B (zh) * | 2010-12-30 | 2014-12-10 | 中国移动通信集团公司 | 对应用程序在物理系统环境中进行测试的系统及其方法 |
JP5966372B2 (ja) * | 2012-01-17 | 2016-08-10 | セイコーエプソン株式会社 | ロボット制御装置、ロボットシステム、ロボット制御方法及びロボット |
JP2014038502A (ja) * | 2012-08-17 | 2014-02-27 | Sony Corp | 情報処理装置、情報処理方法、およびプログラム |
JP6476662B2 (ja) * | 2013-09-20 | 2019-03-06 | 株式会社デンソーウェーブ | ロボット操作装置、ロボットシステム、及びロボット操作プログラム |
JP2017506169A (ja) * | 2014-02-20 | 2017-03-02 | マーク オレイニク | ロボット調理キッチン内の食品調製のための方法及びシステム |
-
2018
- 2018-02-28 CN CN201880020346.4A patent/CN110462530A/zh not_active Withdrawn
- 2018-02-28 WO PCT/JP2018/007452 patent/WO2018180143A1/ja active Application Filing
- 2018-02-28 EP EP18774948.6A patent/EP3605248A4/en not_active Withdrawn
- 2018-02-28 US US16/489,887 patent/US20200012239A1/en not_active Abandoned
- 2018-02-28 JP JP2019509029A patent/JPWO2018180143A1/ja active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003216234A (ja) * | 2002-01-18 | 2003-07-31 | Mitsubishi Heavy Ind Ltd | ソフトウェア設計支援システム |
JP2004114242A (ja) * | 2002-09-26 | 2004-04-15 | Advanced Telecommunication Research Institute International | コミュニケーションロボットおよびその開発支援装置 |
JP2006123153A (ja) * | 2004-11-01 | 2006-05-18 | Advanced Telecommunication Research Institute International | コミュニケーションロボット用開発支援装置および開発支援プログラム |
JP2006272537A (ja) * | 2005-03-30 | 2006-10-12 | Advanced Telecommunication Research Institute International | ロボットシミュレータおよびシミュレーションプログラム |
JP2008100315A (ja) * | 2006-10-19 | 2008-05-01 | Mitsubishi Heavy Ind Ltd | 制御シミュレーションシステム |
JP2013242638A (ja) * | 2012-05-18 | 2013-12-05 | Hitachi Automotive Systems Ltd | テスト支援システム、テスト支援方法、及びプログラム |
JP2015204006A (ja) * | 2014-04-15 | 2015-11-16 | ピコもん株式会社 | コンテンツ提供サーバ及びコンテンツ提供方法 |
US20160379519A1 (en) * | 2014-06-12 | 2016-12-29 | Play-i, Inc. | System and method for toy visual programming |
Non-Patent Citations (2)
Title |
---|
JANNIK LAVAL, LUC FABRESSE AND NOURY BOURAQADI: "A Methodology for Testing Mobile Autonomous Robots", 2013 IEEE/RSJ INTERNATIONAL CONFERENCE ON INTELLIGENT ROBOTS AND SYSTEMS, JPN6022012834, 3 November 2013 (2013-11-03), ISSN: 0004742807 * |
SEBASTIAN PETTERS, DIRK THOMAS, MARTIN FRIEDMANN, AND OSKAR VON STRYK: "Multilevel Testing of Control Software for Teams of Autonomous Mobile Robots", PROCEEDINGS OF THE 2008 INTERNATIONAL CONFERENCE ON SIMULATION, MODELLING AND PROGRAMMING FOR AUTONO, JPN7022001592, 3 November 2008 (2008-11-03), ISSN: 0004742806 * |
Also Published As
Publication number | Publication date |
---|---|
EP3605248A4 (en) | 2020-04-29 |
WO2018180143A1 (ja) | 2018-10-04 |
US20200012239A1 (en) | 2020-01-09 |
CN110462530A (zh) | 2019-11-15 |
EP3605248A1 (en) | 2020-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2018180143A1 (ja) | 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 | |
US10817134B2 (en) | Systems and methods for training robots using augmented reality and machine learning | |
EP3002646B1 (en) | Virtual design engineering | |
US9436172B2 (en) | Test installation for testing control programs for a robot installation | |
US20190325672A1 (en) | X-in-the-loop tests for self-driving motor vehicles | |
EP3711906A1 (en) | Information processing device and information processing method, computer program, and program production method | |
WO2019227330A1 (zh) | 一种无人机的仿真方法及装置 | |
US20190377312A1 (en) | Information processing apparatus and information processing method, computer program, and program manufacturing method | |
JP2019098949A (ja) | 学習方法、学習装置及び学習プログラム | |
KR20140058889A (ko) | 비행체 관제 훈련시스템 및 방법 | |
EP4242854A1 (en) | System and method for providing autonomous driving simulation architecture with switchable models | |
Neumeier et al. | Yet another driving simulator openrouts3d: The driving simulator for teleoperated driving | |
US20170220712A1 (en) | Computer-implemented method for simulating a restbus control unit network | |
Kim et al. | Human-interactive hardware-in-the-loop simulation framework for cyber-physical systems | |
US10488835B2 (en) | Method for configuring a tester equipped for testing an electronic control unit | |
CN113625595A (zh) | 一种无人机推演及故障诊断方法、系统 | |
WO2019061022A1 (zh) | 一种仿真方法、终端设备及无人机的飞行控制器 | |
Vahrenkamp et al. | High-level robot control with ArmarX | |
Seifert et al. | ARCS: A unified environment for autonomous robot control and simulation | |
Beneder et al. | A Model-Based Approach for Remote Development of Embedded Software for Object Avoidance Applications | |
US20240193073A1 (en) | Configuring a launch of components of a hardware-in-the-loop simulation environment | |
US20240221438A1 (en) | Data processing apparatus and non-transitory recording medium | |
WO2024159492A1 (zh) | 自动驾驶测试方法、自动驾驶测试设备、车辆和存储介质 | |
Li | Modeling, Controlling, and Flight Testing of a Small Quadcopter | |
KR20240021636A (ko) | 자율주행 구동체 및 그 자율주행 구동체를 위한 관제시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220405 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20221004 |