JPWO2019097793A1 - 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 - Google Patents

情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 Download PDF

Info

Publication number
JPWO2019097793A1
JPWO2019097793A1 JP2019553696A JP2019553696A JPWO2019097793A1 JP WO2019097793 A1 JPWO2019097793 A1 JP WO2019097793A1 JP 2019553696 A JP2019553696 A JP 2019553696A JP 2019553696 A JP2019553696 A JP 2019553696A JP WO2019097793 A1 JPWO2019097793 A1 JP WO2019097793A1
Authority
JP
Japan
Prior art keywords
state
unit
control program
information processing
program
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.)
Abandoned
Application number
JP2019553696A
Other languages
English (en)
Inventor
中井 幹夫
幹夫 中井
邦在 鳥居
邦在 鳥居
祐介 工藤
祐介 工藤
佐藤 直之
直之 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of JPWO2019097793A1 publication Critical patent/JPWO2019097793A1/ja
Abandoned legal-status Critical Current

Links

Classifications

    • 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/1605Simulation of manipulator lay-out, design, modelling of manipulator
    • 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/1671Programme 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • 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
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • 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
    • 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/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23008Computer aided software engineering, program generation, case tools, CASE
    • 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/40298Manipulator on vehicle, wheels, mobile
    • 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/40323Modeling robot environment for sensor based robot system

Abstract

可動部を有する自律動作装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置を提供する。可動部を含む制御対象装置の制御プログラムを処理する情報処理装置は、前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算部と、前記演算部による演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持部と、を具備し、前記理想状態を付加して前記制御プログラムを出力する。

Description

本明細書で開示する技術は、可動部を有する自律動作装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法に関する。
近年のロボティクス技術の進歩は目覚ましく、さまざまな産業分野の作業現場に広く浸透してきている。ロボットは、例えば複数のリンクとリンク間を接続する関節で構成される。そして、モータなどの関節駆動用のアクチュエータを用いて各節を駆動することによって、ロボットは動作する。
例えば、キーフレームを用いたロボットやアニメーションのキャラクターの動作編集方法が知られている。具体的には、ある区間の動作の開始時並びに終了時などのキーフレームにおける関節部などの各可動部の位置(関節角度)や速度などの目標値からなるデータセットをGUI(Graphical User Interface)画面上で指定し、「X秒かけて関節をY度からZまで動かす」というような、直感的で分かり易い動作の編集を行なうことができる。
キーフレームなどを利用したロボットのモーション・データには、基本的には、各関節角度などのアクチュエータの動きや制御情報のみが定義されている。言い換えれば、ロボットの実機上でモーション・データを再生させた結果として引き起こされる状態に関する情報はモーション・データには含まれていない。
例えば、実機上でモーション・データを再生して、その結果得られるセンサ情報をツール上にフィードバックしてモーション・データの修正に活用するモーション編集装置について提案がなされている(例えば、特許文献1を参照のこと)。
また、実機に対する各関節角度の指令値と実際のアクチュエータの角度との差に基づいて外力を検出するロボット装置についても提案がなされている(例えば、特許文献2を参照のこと)。
特開2004−148492号公報 特開2003−159674号公報
本明細書で開示する技術の目的は、可動部を有する自律動作装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することにある。
本明細書で開示する技術の第1の側面は、可動部を含む制御対象装置の制御プログラムを処理する情報処理装置であって、
前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算部と、
前記演算部による演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持部と、
を具備し、前記理想状態を付加して前記制御プログラムを出力する、情報処理装置である。
理想状態は、前記制御対象装置の状態を示す複数の状態パラメータからなる。前記制御対象装置が床上を移動する移動装置の場合、前記移動装置の理想状態は、前記移動装置本体の姿勢又は傾き、移動方向、移動距離、又は移動速度のうち少なくとも1つの状態パラメータを含む。また、前記情報処理装置は、時間毎の理想状態の各状態パラメータの変更の指示を受け付ける入力部をさらに備え、前記入力部が受け付けた指示に従って状態パラメータを修正した後の前記理想状態を付加して前記制御プログラムを出力する。
また、本明細書で開示する技術の第2の側面は、可動部を含む制御対象装置を制御プログラムに従って制御する情報処理装置であって、
前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得部と、
前記状態取得部が取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価部と、
を具備する情報処理装置である。
前記状態取得部は、理想状態の状態パラメータ毎の前記制御対象装置の状態を取得する。そして、前記評価部は、状態パラメータ毎の前記制御対象装置の実際の状態と前記理想状態を比較した結果に基づいて、前記差異の原因を特定する。前記情報処理装置は状態パラメータ毎の前記制御対象装置の実際の状態と前記理想状態の差異をその原因と関連付けて記憶するデータベースをさらに備え、前記評価部は、前記データベースを参照して、前記制御対象装置の実際の状態と前記理想状態の差異の原因を特定するようにしてもよい。
また、前記情報処理装置は、前記制御対象装置の実際の状態と前記理想状態の差異の原因をユーザに通知する通知部をさらに備えている。前記情報処理装置は、前記制御対象装置の実際の状態と前記理想状態の差異の原因をユーザへの通知内容を関連付けて記憶するデータベースをさらに備えている。そして、前記通知部は、前記データベースを参照して、前記評価部が特定した原因に関連付けて記憶された通知内容を用いてユーザへの通知を行なう。
また、前記通知部は、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知内容、通知タイミング、又は通知頻度を制御する。前記制御対象装置に関連付けられた属性情報は、前記制御対象装置に関連付けられたキャラクター性、個性、性格、内部状態又は感情、ユーザの状態、周囲環境などである。前記通知部は、複数のモダリティを有し、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知に使用するモダリティを選択するようにしてもよい。
また、本明細書で開示する技術の第3の側面は、可動部を含む制御対象装置を制御プログラムに従って制御する情報処理方法であって、
前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得ステップと、
前記状態取得ステップにおいて取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価ステップと、
を有する情報処理方法である。
また、本明細書で開示する技術の第4の側面は、可動部を含む制御対象装置を制御プログラムに従って制御するための処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得部、
前記状態取得部が取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価部、
として機能させるコンピュータ・プログラムである。
本明細書で開示する技術の第4の側面に係るコンピュータ・プログラムは、コンピュータ上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本明細書で開示する技術の第4の側面に係るコンピュータ・プログラムをコンピュータにインストールすることによって、コンピュータ上では協働的作用が発揮され、本明細書で開示する技術の第2の側面に係る情報処理装置と同様の作用効果を得ることができる。
また、本明細書で開示する技術の第5の側面は、可動部を含む制御対象装置の制御プログラムを製造するプログラム製造方法であって、
前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算ステップと、
前記演算ステップによる演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持ステップと、
を有し、前記理想状態を付加して前記制御プログラムを出力する、プログラム製造方法である。
本明細書で開示する技術によれば、可動部を有する自律動作装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することができる。
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
図1は、制御プログラムの開発環境の一例を模式的に示した図である。 図2は、ネットワークを介した制御プログラムの分散開発環境を例示した図である。 図3は、ロボットを開発対象とする制御プログラムの開発環境を例示した図である。 図4は、自動走行車を開発対象とする制御プログラムの開発環境を例示した図である。 図5は、無人航空機(ドローン)を開発対象とする制御プログラムの開発環境を例示した図である。 図6は、自律動作装置100の実機に搭載されるハードウェア並びにソフトウェアのアーキテクチャーの構成例を示した図である。 図7は、アプリケーション・プログラムの構成例を模式的に示した図である。 図8は、アプリケーション・プログラムに含まれる行動計画並びに定義動作の各データ・ファイルの構成例を模式的に示した図である。 図9は、本明細書で提案する仕組みを導入したプログラム開発及び実行環境を模式的に示した図である。 図10は、図9に示したプログラム開発環境においてモーション・データを作成するための処理手順を示したフローチャートである。 図11は、理想状態を付加したモーション・データを編集するための開発装置200の機能的構成例を模式的に示した図である。 図12は、理想状態付きのモーション・データの構成例を模式的に示した図である。 図13は、理想状態のデータ構成例(自律動作装置100がロボットの場合)を示した図である。 図14は、理想状態の確認と修正を行なうための入力画面の構成例を示した図である。 図15は、モーション・データを評価するための処理手順を示したフローチャート図である。 図16は、モーション評価用知識データベース902に格納されているデータの構成例を示した図である。 図17は、モーション評価によって得られた原因候補のリストを例示した図である。 図18は、自律動作装置100の実機動作が想定外であったことを通知するための処理手順を示したフローチャートである。 図19は、モーション評価用知識データベース902に格納されているデータの構成例を示した図である。 図20は、原因候補に対する通知内容の決定例を示した図である。
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
A.プログラム開発環境
図1には、制御プログラムの開発環境の一例を模式的に示している。開発環境下には、開発対象となる自律動作装置(実機)100と、この自律動作装置100における制御プログラムを作成する開発装置200が配置されている。
ここで、自律動作装置100は、当該開発環境下で開発された制御プログラムを実行して、自律的若しくは適応制御により自らの行動を制御する装置のことである。自律動作装置100は、1以上の可動部を有しており、後述するように、ロボット、無人航空機、自律運転する自動車などさまざまな形態を含むものとする。
自律動作装置100は、当該システム100全体の動作を統括的にコントロールする本体部110と、複数のモジュール部120−1、120−2、…で構成される。各モジュール部120は、制御プログラムによって駆動が制御される可動部を有している。図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と他のモジュール部の間で相互通信を行なうためのハードウェアであり、無線モデム又は有線モデムのいずれでもよい。例えばプロセッサ122は、通信モデム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内でのセンサ124の検出値に基づく認識結果を受信したりする。また、本体部110は、通信モデム113を介して、開発装置200などの外部装置とも通信を行なうことができる。
USBポート115は、USBバス(ケーブル)を使って本体部110に外部機器を接続するために使用される。本実施形態では、USBポート115を使って本体部110に開発装置200を接続することを想定している。例えば、開発装置200上で作成した制御プログラムを、USBポート115を介して自律動作装置100にインストールすることができる。なお、USBは自律動作装置100に外部装置を接続するインターフェース規格の一例であり、他のインターフェース規格に則って外部装置を接続するように構成することもできる。
なお、図示を省略したが、本体部110と各モジュール部120−1、120−2、…などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
開発装置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のプロセッサ124においてアクチュエータ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グラフィックス空間上で動作させるために、仮想機械の制御プログラムは、実機のモジュール部120毎のプロセッサ(例えば、モータ・コントローラ)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内のメモリ123にアップロードすることもできる。同様に、別のモジュール部120−2のみハードウェア及び制御プログラムの開発を担当している開発者は、自分の開発装置200を通信モデム215経由で自律動作装置100の対応するモジュール部120−2に接続して、作成したプログラムやデータをモジュール部120−1内のメモリ123にアップロードすることができる。
モジュール部単位でハードウェア及びプログラムの開発を複数の開発者又は複数の開発ベンダーで分担することで、分散開発環境下で自律動作装置100全体の開発を進めることができる。
図2には、ネットワークを介した制御プログラムの分散開発環境を例示している。図2に示す分散開発環境下では、モジュール毎に個別の開発者又は開発ベンダーに開発が委ねられている。但し、図2で言うモジュールは、図1に示した自律動作装置100のハードウェア構成要素であるモジュール部の他に、自律動作装置100の制御ソフトウェアのモジュールを指す場合もある。
自律動作装置100の本体部又はモジュール部単位で制御プログラムの開発を任された各プログラム開発者は、それぞれモジュール開発用コンピュータを用いて、自分が担当する本体部又はモジュール部の制御プログラムを作成する。モジュール開発用コンピュータ上では、例えば上述した開発ツール・プログラムが動作している。各モジュール開発用コンピュータは、ネットワークに接続されている。そして、各プログラム開発者は、それぞれクラウド・サーバ上の共有ストレージ、自分専用のストレージ(すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ)、あるいは専用サーバが備えるストレージにおいて、自己が開発した制御プログラムなどを提供してもよい。また、サーバなどのストレージにアカウントを有する管理者、開発者、顧客、あるいはユーザによって制御プログラムなどが共有されるようにしてもよい。
自律動作装置100の実機全体の制御プログラム開発を担当若しくは統括する開発者は、ネットワーク経由で本体部及び各モジュール部の制御プログラムの提供を受ける。具体的には、実機全体の開発者が使用する実機プログラム開発用コンピュータは、クラウド・サーバ上の共有ストレージ又は開発者ストレージ、専用サーバ、あるいは各開発者のモジュール開発用コンピュータとの直接通信によって、各々の制御プログラムを受信する。但し、制御プログラムの提供を受けるネットワークは、有線又は無線のいずれで構成されていてもよい。
実機全体の開発者が使用する実機プログラム開発用コンピュータは、図1に示した開発装置200に相当し、開発ツール・プログラム上で物理エンジンを用いた演算を行ない、且つ3Dグラフィックス・アニメーションにより実機に相当する仮想機械の動作を表示できる機能を備えている。したがって、実機プログラム開発用コンピュータは、本体部110及びすべてのモジュール部120の制御プログラムを、開発ツール・プログラムが備える物理エンジン機能を利用して、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
さらに、実機プログラム開発用コンピュータ上では開発された制御プログラムの実行と並行して、各々の制御プログラムの修正を行なうことができる。したがって、実機全体の開発者と各モジュール部を担当する開発者とで、実機全体の制御プログラムを効率的に共同開発することにもなる。また、実機プログラム開発用コンピュータ上で修正した制御プログラムを、そのモジュール部を担当する開発者に再度提供して、最終的なプログラム製品を完成してもらうことが可能である。例えばクラウド・サーバ上に本体部並びに各モジュール部専用のストレージを配置するなどモジュール部単位で制御プログラムを管理するようにすることで、共同開発を円滑に進めることができる。
実機全体の開発者が使用する実機プログラム開発用コンピュータ上で動作が確認・検証された(すなわち、完成した)制御プログラムは、USBポート214を介して開発装置200から実機の自律動作装置100に直接アップロードすることができる。あるいは、有線又は無線で構成されるネットワーク経由で、実機全体又はモジュール部毎の制御プログラムを実機にアップロードすることもできる。
また、制御プログラムを専用サーバから実機へアップロードするという形態も想定される。例えば、ある実機のユーザが自分のユーザ端末のユーザ・インターフェース(キーボード、マウス、タッチパネルなど)を介して自分が持つアカウントを用いて専用サーバにログインして、さらに実機にダウンロード又はアップロードする制御プログラムを選択して、ダウンロード又はアップロードを実施するようにしてもよい。
A−1.ロボット用のプログラム開発環境
図3には、自律動作装置100の具体例として脚式のロボットを開発対象とする場合の制御プログラムの開発環境を例示している。図3では、単一の開発装置200を用いてプログラム開発が行なわれるが、勿論、図2に示したようなネットワークを介した分散開発環境を利用することも可能である。
図3に示す脚式ロボット100は、本体部110と、頭部や左右の脚部に相当する複数のモジュール部120−1、102−2、…を有している。各モジュール部120−1、102−2、…は、制御プログラムによって駆動が制御される可動部を有している。図示を省略するが、本体部110と、頭部や左右の脚部などの各モジュール部120−1、102−2、…などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
なお、脚式ロボット100は、上肢など図示しないモジュール部をさらに有していてもよい。また、少なくとも一部のモジュール部内のプロセッサやメモリなど機能が本体部110と一体となって、本体部110のプロセッサ111によってコントロールされるという実機構成の変形例も考えられる。
本体部110は、プロセッサ111と、メモリ112と、無線又は有線の通信モデム113と、バッテリー114と、USBポート115と、GPS116を備えている。
左右の脚のモジュール部120−2及び120−3は、アクチュエータ121として、股関節や膝関節、足首などの関節駆動用(若しくは、歩行用)のモータを備え、プロセッサ122としてモータの駆動を制御するモータ・コントローラをそれぞれ備えている。また、センサ124として、モータの出力側に発生する外力を検知するトルク・センサや、モータの出力側の回転角度を検出するエンコーダー、足裏部の接地センサなどを備えている。また、頭部のモジュール部120−1は、アクチュエータ121としての頭部回転用のモータと、センサ124としての周囲を撮像するイメージ・センサを備えている。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記のロボット100の本体部110並びに各モジュール部120の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機100全体の制御プログラムやモジュール部120毎の制御プログラムは、本体部110のUSBポート115や各モジュール部120の通信モデム125を介した有線又は無線の通信によって、本体部110のメモリ112又は各モジュール部120−1、102−2、…のメモリ123にアップロードされる。そして、アップロードされたプログラムは、ロボット100の起動時などに適宜動作するようになっている。
A−2.自動走行車用のプログラム開発環境
図4には、自律動作装置100の他の具体例として自動走行車を開発対象とする場合の制御プログラムの開発環境を例示している。自動走行車100は、自動運転技術が導入された自動車(あるいは、作業用又は輸送用などの無人運転車両)のことであるが、完全自動運転車の他、自動運転モードと手動運転モードを切り替え可能な自動車における自動運転モードで走行中の自動車や、ステアリング又は加減速など一部の操作を自動化した運転支援モードで走行中の自動車も含むものとする。図4では、単一の開発装置200を用いてプログラム開発が行なわれるが、勿論、図2に示したようなネットワークを介した分散開発環境を利用することも可能である。
図4に示す自動走行車100は、主制御部110と、可動部を有するモジュール部としてのトランスミッション制御モジュール部120−2並びに室内空調制御モジュール部を120−1有している。図示を省略するが、主制御部110と各モジュール部120などのハードウェア間を結合するデータ・バス並びに制御バス(CAN(Controller Area Network)バスなど)が存在する。また、自動走行車は、通常、トランスミッション制御モジュール部120−2、室内空調制御モジュール部120−1以外にも図示しない多くのモジュール部を備えているが、説明の簡素化のため省略する。
主制御部110は、プロセッサ111としてのECU(Electronic Control Unit:電子制御装置)と、メモリ112と、通信モデム113と、ECUインターフェース115と、GPS116と、バッテリー114を備えている。通信モデム113は、Wi−Fi(Wireless Fidelity)、LTE(Long Term Evolution)、近距離無線通信などを想定している。また、ECUインターフェース115は、CANバスへのインターフェースを想定している。また、開発装置200側とはイーサネット(登録商標)などの通信規格を利用して接続され、開発された制御プログラムのアップロードが行なわれる。
室内空調モジュール部120−1は、アクチュエータ121としての空調と、プロセッサとしての空調制御ECUと、メモリ123と、センサ124としての室内温度センサと、Bluetooth(登録商標)通信などの通信モデム125を備えている。例えば搭乗者が携帯するスマートフォンなどの情報端末とBluetooth(登録商標)通信により接続して、空調を制御することを想定している。
トランスミッション制御モジュール部120−2は、アクチュエータ121としての駆動輪用モータと、プロセッサ122としてのトランスミッション制御ECUと、メモリ123と、センサ124として速度・加速度センサや操舵角センサなどを備えている。
なお、図4に示した構成例では、主制御部110並びに各モジュール部120にECUが配置されているが、主制御部110内のECU111ですべてのモジュール部を集中管理するように構成することも可能である。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記の自動走行車の主制御部110、室内空調制御モジュール部120−1、並びにトランスミッション制御モジュール部120−2の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機100全体の制御プログラムやモジュール部120毎の制御プログラムは、主制御部110のECUインターフェース115や各モジュール部120の通信モデムを介した有線又は無線の通信によって、主制御部110のメモリ112又は各モジュール部120のメモリ123にアップロードされる。そして、アップロードされたプログラムは、自動走行車100の起動時などに適宜動作するようになっている。
A−3.無人航空機用のプログラム開発環境
図5には、自律動作装置100の他の具体例として無人航空機(ドローン)を開発対象とする場合の制御プログラムの開発環境を例示している。図5では、単一の開発装置200を用いてプログラム開発が行なわれるが、勿論、図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を備えている。カメラ部回転用モータ121は、例えば水平方向に360度の範囲で回転が可能であり、さらにチルト回転が可能であってもよい。また、通信モデム125は、Wi−Fi、LTE、近距離無線通信などの無線モデムを想定しており、操縦者が操作するリモート・コントローラやスマートフォンからのコマンドに従ってカメラ部の回転や撮影を行なう。
プロペラ制御モジュール部120−2は、アクチュエータ121として例えば3つのプロペラ(回転用モータを含む)と、プロペラの回転用モータの制御などを行なうプロセッサ122と、メモリ123と、センサ124としてのプロペラ回転検出センサを備えている。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記の無人航空機100の主制御部110、カメラ制御モジュール部120−1、並びにプロペラ制御モジュール部120−2の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機100全体の制御プログラムやモジュール部120毎の制御プログラムは、主制御部110や各モジュール部120の通信モデム113などを介した有線又は無線の通信によって、主制御部110のメモリ112又は各モジュール部120のメモリ123にアップロードされる。そして、アップロードされたプログラムは、無人航空機100の起動時などに適宜動作するようになっている。
B.ハードウェア並びにソフトウェアのアーキテクチャー
図6には、自律動作装置100の実機に搭載されるハードウェア並びにソフトウェアのアーキテクチャーの構成例を示している。
実機は、図1並びに図3〜図5にも示したように、本体部(若しくは主制御部)と、それぞれ可動部を有する複数のモジュール部などの複数のハードウェア・モジュール(HW1、HW2、…、HWL)が筐体内に組み込まれて構成される。また、各ハードウェア・モジュールを2以上の筐体に分散して配置して構成される実機も存在し得る。
OSは、これらハードウェア・モジュール(HW1、HW2、…、HWL)を直接的に制御する。また、OSではなく、ハードウェア・モジュール内のメモリにアップロードされた制御プログラムがハードウェア・モジュールなどを直接的に制御する場合もある(具体的には、プロセッサがメモリにロードされた制御プログラムを実行して、アクチュエータの駆動を制御する)。
図1並びに図3〜図5に示したように、本体部110と複数のモジュール部120−1、120−2、…でハードウェア・アーキテクチャーが構成される自律動作装置100においては、本体部110(若しくは、本体部110内のプロセッサ111)において当該システム100全体を制御するメインOSが動作して、各モジュール部120−1、120−2、…内で実行中の制御プログラムを直接的又は間接的に制御するように構成される。
図6では、メインOS以外にも複数のサブOS(例えば、OS1、OS2、…)が動作し、各OSがアプリケーション・プログラムの実行環境を提供する例を示している。図6において、例えば、OS1がメインOSの管理下にあるハードウェア・モジュールを駆動したい場合には、まずOS1がメインOSと通信を行なうことによって、間接的に所望のモジュール部の制御プログラムを制御するようにすることができる。また、OS1とメインOS間の通信には、RPC(Remote Procedure Call)などのプロセス間通信技術を利用して実現することができる。
また、図6には、仮想化技術(Virtualization)を用いて構築したアーキテクチャーも併せて示している。すなわち、複数の異なるオペレーティング・システム(例えば、OS1、OS2、…、並びにメインOSの一部)を仮想化OS上で動作させている。異なるOSを想定して開発された各アプリケーション・プログラム(例えば、OS1を想定して開発されたAP1と、OS2を想定して開発されたAP2)を、同じ実機上で混在させることが可能である。
図6中のアプリケーション・プログラム(AP)のうち少なくとも一部は、図1並びに図3〜図5に示したような開発環境下で開発された制御プログラムに相当する。
例えば、図4に示した自動走行車100において開発されるアプリケーション・プログラムを、駆動系制御(DSU(Driver Sensing Unit)など)のように高い信頼性が要求されるアプリケーション・プログラムと、ユーザに対するサービスに関わるインフォテインメント(オーディオ機器や空調など)のように汎用性の高いアプリケーション・プログラムの2種類に大別することができる。前者の高い信頼性が要求されるAP1は、より信頼性の高いOS1を想定して開発される一方、後者の汎用性の高いAP2はより汎用性が高く多くの開発者によって開発可能なOS2を想定して開発される。このように異なるOSを想定して開発された駆動系制御用アプリケーション・プログラムAP1及びインフォテインメント・アプリケーション・プログラムAP2は、仮想化OSの介在により各々に該当するハードウェアに対する制御が容易となるので、同一の自律動作装置(自動走行車など)上で混在することが可能となる。
アプリケーション・プログラムの開発者は、システム(例えば、ミドルウェア)が提供するAPIを用いてアプリケーション・プログラムを開発することができる。例えば、APIとして、「地図表示」、「音声対話モードへの切り替え」、「周囲の人間の認識」といった機能の利用が考えられる。図6に示す例では、ミドルウェア1が提供するAPI1、ミドルウェア2が提供するAPI2、…、ミドルウェアMが提供するAPIMを用いてアプリケーション・プログラムを開発することができる。
また、アプリケーション・プログラムの開発者は、システム・コールを利用してOSに対して指示を行なうようなプログラムを含めてアプリケーション・プログラムを開発することができる。ここで言うシステム・コールは、システム制御に関わる機能を利用するためのインターフェースである。システム・コールの例として、モジュール部120内のプロセッサ122(例えば、モータ・コントローラ)のパラメータを変更する、通信モデムにおけるネットワーク・アドレスの設定を行なう、といったものを挙げることができる。図6に示す例では、OS1に対して指示を行なうシステム・コール1、OS2に対して指示を行なうシステム・コール2、OSMに対して指示を行なうシステム・コールMを利用するプログラムを含めてアプリケーション・プログラムを開発することができる。
図7には、アプリケーション・プログラムの構成例を模式的に示している。図示のアプリケーション・プログラムは、自律動作装置を制御する制御プログラムに相当し、例えば図1又は図3〜図5に示した開発環境下で(すなわち、開発装置200上で開発ツール・プログラムを用いて)開発される。
アプリケーション・プログラムは、1又はそれ以上の定義動作と、1又はそれ以上の行動計画を含んでいる。定義動作並びに行動計画はいずれも、自律動作装置100の制御プログラムである。
定義動作は、ハードウェアのうち、モータなどに代表されるアクチュエータのコントローラに対して指示する目標値からなり、「モーション」若しくは、「モーション・データ」とも呼ばれる。1つの定義動作が、ある時点においてコントローラに対して指示する目標値のみからなる場合や、ある区間においてコントローラに対して時系列的に指示する一連の目標値からなる場合がある。後述するように、本実施形態では、定義動作はキーフレーム(後述)を用いて作成されることを想定している。
また、定義動作は、コントローラに対して基本パラメータの設定を指示するプログラム及びデータでもある。基本パラメータの一例として、P(比例制御)、I(積分制御)、D(微分制御)を含めることができる(例えば、本出願人に既に譲渡されている特願2017−70634号明細書を参照のこと)。また、モータなど制御対象となるアクチュエータの特性に基づいてコントローラ(プロセッサ)に設定することができるその他のパラメータを、基本パラメータとして定義動作の中で設定することができる。
行動計画は、1又はそれ以上の定義動作の機能を呼び出すプログラム及びデータからなる。ロボットなどの自律動作装置100は、行動計画に従って呼び出された1又はそれ以上の定義動作を再生することによって、1つの「ビヘイビア」を実現する。
また、行動計画は、状況毎に起動すべき定義動作を取り決めることで、自律動作装置100の一連の動作を記述するプログラム及びデータである。例えば、定義動作を選択するための条件分岐をツリー構造の形式で記述する行動計画を挙げることができる。行動計画は、認識結果に基づいて自律動作装置100を制御することから、環境(状況)認識に基づく行動制御プログラムに位置付けることができる。この意味で、行動計画は、広義のAI(人工知能)の機能の一部にも相当する。
アプリケーション・プログラムは、また、OS又はミドルウェアの機能を利用するためのプログラム及びデータを含むことができる。
アプリケーション・プログラムは、さらに、自律動作装置100の実機のアプリケーション機能を、外部から利用させるためのAPIを定義している。したがって、アプリケーション・プログラムの作成に利用した開発装置200や、ユーザ端末、サーバなどの外部装置は、実機が動作中あるいは試験動作中に、通信を介してAPIを呼び出すことによってアプリケーション・プログラムの機能を利用することができる。
また、アプリケーション・プログラムは、実機動作中に、行動計画又は定義動作のプログラム及びデータを学習によって変更させるためのプログラム及びデータを含むこともできる。
なお、図7に示すように、アプリケーション・プログラムは複数のコンポーネントで構成されるが、すべてのコンポーネントを一体化して1つのファイルで構成してもよいが、各コンポーネントをそれぞれ別のファイルとして構成してもよい。また、これらのファイルは、図2におけるクラウド・サーバ上の共有ストレージ、各自専用のストレージ(すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ)、あるいは専用サーバが備えるストレージなどに格納され、サーバなどのストレージに対するアクセス権を有する管理者、開発者、顧客、あるいはユーザによって共有することが可能であってもよい。
図8には、アプリケーション・プログラムに含まれる行動計画並びに定義動作の各データ・ファイルの構成例を模式的に示している。同図では、説明の便宜上、ファイル内のデータを、特定のプログラム言語に依らない、自然言語の形式で記述している。但し、図示するようなデータ・ファイルを、何らかのプログラム言語を用いてコーディングできることは、当業者であれば容易に理解できることである。
行動計画のデータ・ファイル801は、定義動作を選択するための条件分岐をツリー構造の形式で記述したデータの集合である。図8に示す例では、IF文(IF 状況=「人を検出」 then 「寝そべる」、IF 状況=「人がいない」 then 「歩き回る」)の形式で、定義動作を選択するための条件を記述している。なお、図8では、説明の便宜上、簡単なIF文からなる行動計画のデータ・ファイル801を示しているが、入れ子構造などを含んだ複雑な条件文になってもよい。
定義動作のデータ・ファイル802は、行動計画801において使用する複数の定義動作のデータ集合とともに、ハードウェア・コンポーネント毎の制御パラメータの初期値を含んでいる。
図8に示す例では、定義動作データ・ファイル802は、制御パラメータの初期値として、モータ1用のPIDパラメータ値(P=X1,I=Y1、D=Z1)と、モータ2用のPIDパラメータ値(P=X2,I=Y2,D=Z2)を含んでいる。
また、図8に示す例では、定義動作データ・ファイル802は、「歩き回る」、「寝そべる」、「停止する」の定義動作のデータを含んでいる。各定義動作のデータは、キーフレームのデータセットと、ハードウェア・コンポーネント毎の制御パラメータ(例えば、モータ・コントローラに設定すべきPIDパラメータ)からなる。
キーフレームは、各モジュール部120−1、120−2、…に設定する目標値(例えば、アクチュエータ121としてのモータに対する回転位置や回転角度などの目標値)のデータからなる。1つの定義動作は、1又は複数のキーフレームのデータ集合からなる。また、定義動作で指定する制御パラメータは、その定義動作で設定すべき制御パラメータである。また、定義動作「停止する」のキーフレーム・データ及びコントローラ特性データはともにNULLとする。NULLは初期値であってもよい。
アプリケーション・プログラムの開発者は、上述したようなアプリケーション・プログラムを、開発装置200上で開発ツール・プログラムを利用して作成することができる。開発ツール・プログラムは、コンパイラ、デバッガ、物理エンジンと連携した3Dグラフィックス・アニメーションなどの機能を備え、アプリケーション・プログラムの開発者はGUI画面上でこれらの機能の実行指示を行なうことができる。
本実施形態では、アプリケーション・プログラムの開発に使用される開発ツール・プログラムが物理エンジンと呼ばれる機能を備えていることを想定している。物理エンジンは、現実の自律動作装置100の動作を物理法則に基づく現象をコンピュータ上で再現する機能である。自律動作装置100の実機動作を制御するアプリケーション・プログラムのシミュレーションを、物理エンジンを用いて実施することにより、自律動作装置100が持つ物理的な特性やさらには現実的な外部環境を考慮しながら、実機動作を仮想機械で再現することができる。昨今、物理エンジンの精度は向上しており、物理エンジンを用いたシミュレーションにより、アプリケーション・プログラムを実行する実機の動作を仮想機械上でより正確に再現することが可能になってきている。
また、開発ツール・プログラムが物理エンジンに3Dグラフィックス・アニメーションの機能を組み合わせることで、現実の実機と同様の動作を表す3Dグラフィックス・アニメーションを生成して、その結果を表示することができる。アプリケーション・プログラムの開発者は、3Dグラフィックス・アニメーションを見ながら実機の動作を検証し、さらにアプリケーション・プログラムの適切に修正することができる。特に、高機能の物理演算を行なう物理エンジンが、実機のハードウェア(例えば、モータ・コントローラ)に相当する役割を果たすので、実機を用いることなく制御プログラムを検証することができるので、開発の効率が向上するとともに開発コストが低減する。また、このようにして作成された制御プログラムを含むアプリケーション・プログラムを、実機上で動作させたときに、実機上でも期待した動作を再現することが期待される。
したがって、制御プログラムの開発過程で、定義動作などの制御プログラムの開発過程で、物理エンジンの演算結果と3Dグラフィックス・アニメーションの表示結果などに基づいて、各定義動作で指定すべき最適な制御パラメータを導出することができる。図8に示したデータ構成例によれば、プログラムの開発者などが、プログラムの開発者は定義動作毎の最適な制御パラメータを、定義動作内に記述することができるようになっている。
C.プログラムの開発環境並びに実行環境に関する提案
キーフレームなどを利用したモーション・データには、各関節角度など自律動作装置の可動部の動きや制御パラメータが定義されているが(例えば、図8を参照のこと)、そのモーション・データを再生した結果として実機(若しくは、実機を構成する一部のモジュール部)にどのような状態が引き起こされるかという情報は含まれていない。
このため、制御プログラムを実機上で実行した際に、可動部(関節角度)が想定通りに動いたかどうかを観察することはできても、可動部の動きが想定通りでない場合に、実機全体としてどのような挙動のずれが発生したかや、挙動のずれの原因として何が考えられるか、というより高度なレベルで実機動作を判断することは難しい。
例えば、脚式ロボットの実機上で「前進する」というモーションを、路面が非常に滑る(摩擦係数が低い)という環境下で再生させて、想定通りの実機動作が実現しなかったとする。脚式ロボットの設計者や制御プログラムの開発者といったエキスパートなら実機が想定外の動作となった原因を把握することはできても、一般のユーザは、実機が「前進する」ことを目的としたモーションを再生したことさえも認識していないため、何がおかしいのか(すなわち、想定外の実機動作を引き起こした原因)が分からないという状況に陥るであろう。仮にユーザが実機の動作が何であったかを分かったとしても、その実機動作が想定外となった原因(例えば、「前進する」モーションを再生して想定外の動作となった原因が床の摩擦であったこと)まで突き止めるには専門的な知識が必要である。専門的な知識に乏しい一般ユーザが、実機の想定動作の原因を突き止め、さらに適切な処置を自発的に行なうことは極めて困難である。
産業用途のロボットであれば、特定の作業現場に適したようにロボットを製作し、又は、導入するロボットを稼働させるに適した作業環境を整えることができる。他方、エンタテイメントロボットなどの一般家庭向け用途のロボットは、さまざまな環境下で動作することが想定され、このため、想定外の環境で実機を動作させた際にプログラマなどが意図した通りの実機動作を実現できないといった事態が頻繁に発生することが想定される。専門的な知識に乏しい一般家庭のユーザが、実機動作が想定外であったことを認識し、さらにその原因を突き止めて適切な処置を自発的に行なうことは極めて困難である。
そこで、制御プログラムを実行する自律動作装置自身が、実機動作を分析して、想定外の動作となったときにその原因を突き止め、原因及び適切な処置を自発的にユーザに通知することが重要である。
また、エンタテイメントロボットの場合、人間的な個性を与えられるが、ユーザにその個性を認識させるには、ユーザとのインターフェース(会話やジェスチャーなど)のほとんどすべてを個性に基づく形態にすることが重要である。この種のロボットがユーザへの通知を、機械的すなわち思考や意思を働かさず型にはまった形態で行なうと、ロボットが持つべきキャラクター性や個性を大きく損ない、ユーザがそれまでロボットに抱いていたイメージを壊してしまうおそれがある。したがって、エンタテイメントロボットなどの自律動作装置は、制御プログラムを実行した際の実機動作が想定外となった原因及び適切な処置(解決策)に関する情報を、キャラクター性や個性を踏まえて個性豊かにユーザに提示する仕組みが求められる。
そこで、本明細書では、制御プログラムを実行した自律動作装置自身が、実機動作を評価し、実機動作が想定外となった原因を究明して、その解決策とともにユーザに自発的に通知することを可能にするための仕組みについて、以下で提案する。
さらに、本明細書では、制御プログラムを実行した自律動作装置が、実機動作が想定外となった原因及び解決策を、個性豊かにユーザに通知するための仕組みについても、以下で提案する。
まず、制御プログラムの開発環境において、開発する制御プログラムに、開発対象とする自律動作装置が制御プログラムを実行したときの理想状態に関する情報を付加する仕組みを導入する。
また、制御プログラムの実行環境において、自律動作装置は、制御プログラムを実行したときに、実機上に配設された各センサの検出値などに基づく実機状態と、制御プログラムに付加された理想状態とを比較して、自律動作装置自身が実機動作を評価して、実機動作が想定外となった原因の候補とその解決策を特定する仕組みを導入する。
さらに、制御プログラムの実行環境において、ロボットに与えられたキャラクター性や個性といった、自律動作装置100に関連付けて記憶された属性情報に基づいて特定された通知方法を用いて、実機動作が想定外となった原因の候補とその解決策をユーザに通知する仕組みを導入する。例えば、ロボットが自身の個性に基づいて、ユーザへの通知内容(原因や解決策の表現方法や、通知に使用するデバイスなどを含む)と通知タイミング、通知頻度などを決定して、ユーザへの通知を実施する。
図9には、上記の提案する仕組みを導入したプログラム開発環境及び実行環境を模式的に示している。
自律動作装置の制御プログラムは、例えば、定義動作とも呼ばれる、各関節角度の時間的な変化を記述したキーフレームの集合からなるモーション・データとして作成される。物理エンジン及び3Dグラフィックス・アニメーションの機能を装備する開発装置200を用いて制御プログラムを開発する場合、自律動作装置の実機がモーション・データを再生したときの実際の物理現象を物理シミュレーションにより仮想機械で再現し、さらにモーション・データを再生する仮想機械の動作を3Dグラフィックス表示することができる。
制御プログラムの開発者(若しくは、モーション作成者)は、開発装置200上で、3Dグラフィックス表示を通じて仮想機械が理想状態であるかどうかを確認しながら、キーフレームや理想状態の各データを適宜修正し、モーション・データを完成させることができる。
そして、開発装置200は、完成したモーション・データを再生する自律動作装置の機体(ロボットの全身)の傾き、移動速度、移動方向などの理想的な値を物理シミュレーションにより生成して、モーション・データを再生する自律動作装置の「理想状態」を示すデータとしてモーション・データに付加して、出力する。
なお、モーション・データとその理想状態のデータは、1つのファイルとして一体となっていなくても、例えば互いに関連付けられた個別のファイルとして構成されていてもよい。
自律動作装置100の実機上では、モーション・データを再生した際に、各モジュール部120に配設されたセンサの検出値に基づいて、実機100の傾き、移動速度、移動方向などの実機の状態を取得する。自律動作装置100は、このような自身の実際の状態を取得するために、各関節の回転角度を検出するエンコーダー、ジャイロセンサ又はIMU(Inertial Measurement Unit:慣性計測装置)、カメラなどの複数のセンサを備えているものとする。また、実機の状態として移動距離や移動方向を取得するために、SLAM(Simultaneous Localization and Mapping)やToF(Time of Flight)といった技術を適用してもよい。
自律動作装置100上では、モーション評価部901が、モーション・データを再生したときに上記の各種センサから取得した実際の実機状態と、再生中のモーション・データに付加された理想状態とを比較して、自律動作装置100自身が実機動作を評価する。モーション評価部901は、例えば自律動作装置100のプロセッサ111上で実行されるアプリケーション・プログラムの1つであってもよい。また、モーション・データの理想状態と、実機100から取得される実際の状態との差分をその原因や解決策と関連付けて記憶するデータベース(以下、「モーション評価用知識データベース」とも言う)902を自律動作装置100上に装備しておいてもよい。そして、モーション評価部901は、モーション・データを再生したときの実機状態が理想状態からかけ離れ、実機動作が想定外であったと判定する場合には、モーション評価用知識データベース902を参照して、複数の原因候補とその解決策を特定する。なお、モーション評価部901は、モーション・データの理想状態と実機100の実際の状態との差分との関係を機械学習するようにしてもよい。
また、自律動作装置100上では、ユーザ通知部903が、自律動作装置100に関連付けて記憶された属性情報を考慮した結果特定された、実機動作が想定外となった原因の候補とその解決策をユーザに通知する。ユーザ通知部903は、通知内容生成部904と、通知タイミング制御部905を備えている。ユーザ通知部903は、例えば自律動作装置100上で実行されるアプリケーション・プログラムの1つであってもよい(モーション評価部901と同じアプリケーション・プログラムであってもよいし、別のアプリケーション・プログラムであってもよい)。
自律動作装置100に関連付けて記憶された属性情報とは、例えば、自律動作装置100としてのエンタテイメントロボットに与えられたキャラクター性や個性である。また、このような属性情報は、キャラクター性や個性・性格といった静的若しくは固定的な情報だけには限定されず、本能や感情などからなり時々刻々と変化する内部状態若しくは情動をさらに含んでいてもよい。自律動作装置100に関連付けて記憶された属性情報は、例えば本体部110内のメモリ112に格納されている。
通知内容生成部904は、キャラクター性や個性といった自律動作装置100に関連付けて記憶された属性情報を考慮して、モーション・データの実機動作が想定外となった複数の原因候補及びその解決策を通知する内容を生成する。例えば、真面目又は几帳面な性格であれば、より多くの原因候補及びその解決策を含む通知内容とするが、不真面目又は横着な性格であれば少数の原因候補及びその解決策のみを含む通知内容とする。また、通知内容生成部904は、音声メッセージ(発話)による通知方法を利用する場合には、自律動作装置100に関連付けられたキャラクター性や個性、性格に基づいた言葉遣いの音声メッセージを生成するようにしてもよい。
なお、変形例として、通知内容生成部904は、通知対象となるユーザの状態(忙しい、暇など)や、周囲環境(家の中、屋外など)を考慮して、ユーザに通知する内容、タイミング、頻度を変更するようにしてもよい。
そして、通知タイミング制御部905は、キャラクター性や個性といった自律動作装置100に関連付けて記憶された属性情報を考慮して、通知内容生成部904が生成した内容で通知するタイミングを制御する。例えば、真面目又は几帳面な性格であればより高い頻度で通知を行なうが、不真面目又は横着な性格であれば低い頻度で通知を行なうようにする。
図9に示したプログラム開発環境及び実行環境によれば、モーション・データを再生する自律動作装置100は、実機動作が想定外となったときの原因と解決策を、以下に例示するように、個性豊かにユーザに通知することができる。
●ツルツルの床でロボット歩行の進みが悪いときに、「床が滑るから」と伝えてくれる。
●ロボットが重いものを持ち上げる際、「倒れそうだから後ろを抑えておいて」と伝える。
自律動作装置100の各関節部などの動作を規定するモーション・データに、機体全体の動きを示す「理想状態」のデータを付加することによって、ユーザは、各関節の動きを見ているだけといった局所的な視点では分かり難い実機の想定外の動作やその原因を把握することが容易になる。理想状態と相違する想定外の実機動作と、その原因との関係として、以下のような例を挙げることができる。
また、自律動作装置100は、自らの動作が想定外であった場合に、キャラクター性や個性といった自身に関連付けて記憶された属性情報を考慮した通知内容及び通知タイミングで想定外の実機動作の原因とその解決策をユーザに通知する。したがって、ユーザと自律動作装置100の間でコミュニケーションが発生し、ユーザは自律動作装置100に対して愛着を持つことができる。また、自律動作装置100の全体的な振る舞いという視点で想定外の実機動作の原因がわかる。したがって、関節毎といった局部に対するフィードバック制御ではなく、実機全体のフィードバック制御が可能となり、自律動作装置100の自律動作を実現することができる。
C−1.プログラム開発環境の詳細
プログラム開発に使用する開発装置は、物理エンジン及び3Dグラフィックス・アニメーションの機能を装備している。したがって、自律動作装置の実機がモーション・データを再生したときの実際の物理現象を物理シミュレーションにより仮想機械で再現し、さらにモーション・データを再生する仮想機械の動作を3Dグラフィックス表示することができる。
そして、制御プログラムの開発者(若しくは、モーション作成者)は、開発装置200上で、3Dグラフィックス表示を通じて仮想機械が理想状態であるかどうかを確認しながら、キーフレームや理想状態の各データを適宜修正することができる。
図10には、図9に示したプログラム開発環境においてモーション・データを作成するための処理手順をフローチャートの形式で示している。図示の処理手順は、プログラムの開発者が図1又は図3〜図5に示した開発装置200を用いてモーション編集を行なう際に実行される。
プログラムの開発者は、例えばディスプレイ220に表示されたモーション・データ編集用のGUI画面を通じて、キーフレーム形式でモーション・データを作成する(ステップS1001)。具体的には、プログラムの開発者は、モーション・データ編集用のGUI画面上で、開発対象とする自律動作装置100の各モジュール部120に設定する目標値(例えば、アクチュエータ121としてのモータに対する回転位置や回転角度などの目標値)のデータ入力を行なう。
そして、プログラムの開発者は、ステップS1001でプログラムの開発者が作成したモーションのシミュレーションの実行を、開発装置200に対して指示する(ステップS1002)。次いで、開発装置200は、モーションのシミュレーションを開始する(ステップS1003)。開発装置200は、物理エンジンを用いて、自律動作装置100が持つ物理的な特性やさらには現実的な外部環境を考慮しながら、モーションの実機動作を仮想機械で再現する。
ステップS1003では、開発装置200は、物理シミュレーションを実行し、3Dグラフィックスに自律動作装置100の動きを表示しながら、モーション・データを再生する自律動作装置100の機体(ロボットの全身)の傾き、移動速度、移動方向などの理想的な値を物理シミュレーションにより生成して、モーション・データを再生する自律動作装置の「理想状態」を示すデータとして、メモリ213上に一時的に保持する(ステップS1004)。
そして、開発装置200は、モーション・データの物理シミュレーションの実行が終了すると(ステップS1005)、モーション・データを再生する仮想機械の動作すなわち実機の理想状態を、ディスプレイ220の画面上に表示する(ステップS1006)。なお、画面表示については、例えば図14(後述)を参照されたい。
プログラムの開発者は、画面上に表示された内容を見ながら、理想状態の修正が必要であるかどうかを確認する(ステップS1007)。そして、プログラムの開発者は、理想状態の修正が必要であると判断したときには(ステップS1007のYes)、ディスプレイ220のモーション・データ編集用のGUI画面を通じて理想状態の修正を行なう(ステップS1008)。なお、画面表示については、例えば図14(後述)を参照されたい。
そして、開発装置200は、作成及び物理シミュレーションにより検証したキーフレームの理想状態のデータを、モーション・データと併せて出力する(ステップS1009)。その後、理想状態が付加されたモーション・データは自律動作装置100に転送され、自律動作装置100上で再生されることになる。
図11には、理想状態を付加したモーション・データを編集するための開発装置200の機能的構成例を模式的に示している。図示の機能的構成は、例えば開発装置200として利用されるパーソナル・コンピュータ上で所定の開発ツール・プログラムを起動することによって具現化される。また、同図中の各機能ブロックは、例えば開発ツール・プログラムに含まれるソフトウェア・モジュールとして実装される。
モーション作成部1101は、制御対象となる自律動作装置100のキーフレームを編集する。モーション作成部1101は、例えばディスプレイ220にモーション・データ編集用のGUI画面を提示し、このGUI画面に対するプログラムの開発者からの入力に基づいて、キーフレーム形式のモーション・データを作成する。
キーフレームを作成するためのGUIの画面構成は任意である。キーフレームは、ある区間の動作の開始時並びに終了時などおける可動部の位置や速度といった目標値を指定するデータの集合である。例えば、キーフレーム毎の各可動部の目標値を入力するGUIでもよい。また、制御対象の3Dモデルを利用して、頭部や左右の手足などの特定の部位における位置や姿勢を指定し、IK(インバース・キネマティクス)演算を利用してキーフレームを作成する方法を適用してもよい。
また、モーション作成部1101は、GUIにより、制御対象となる自律動作装置100の各可動部を駆動するモータの制御パラメータ及びモータのハードウェア特性値の入力を受け付けて、メモリ213上に、「制御パラメータデータセット」の形式(例えば、図8(前述)を参照のこと)で保持してもよい。また、モーション作成部1101は、制御対象となる自律動作装置100の実機ハードウェア特性値を記述した3Dモデル・データの入力も受け付けて、メモリ213上に保持してもよい。モータの制御パラメータ及びモータのハードウェア特性値の入力を行なう画面構成は任意である。
シミュレーション部1102は、開発装置200が装備する物理エンジン機能を利用して、自律動作装置100をモーション作成部1101で作成したモーション・データに従って現実に動作させたときの物理現象を、物理法則に基づいて演算する。その演算の際、シミュレーション部1102は、自律動作装置100が持つ物理的な特性やさらには現実的な外部環境を考慮することによって、現実と同様の仮想機械全体の動作を生成し、その結果から自律動作装置100の理想状態も生成する。
例えば自律動作装置100がロボットの場合、シミュレーション部1102は、物理エンジン機能を利用して、ロボットのアームの各リンクや関節の重量やモーメント、関節駆動用のアクチュエータなどの特性を考慮しつつ、ロボットを模して造られた仮想ロボットがモーション・データに従って動作する際の、開発ツール・プログラム上で表現された仮想的な物理環境と仮想ロボットとの物理作用(地面との接地や障害物との衝突など)を物理法則に基づいて計算することによって、あたかもロボットのアクチュエータが実際に駆動しているかのように、仮想ロボット全体の動作を計算して、機体の傾き、移動距離、移動方向といったロボットの理想状態を生成する。
なお、モータの制御パラメータ及びモータのハードウェア特性値といった「制御パラメータデータセット」をシミュレーションに利用する場合、シミュレーション部1102は、モータ制御出力部1111と物理演算部1112を装備する。
モータ制御出力部1111は、モーション作成部1101で作成されたモーション・データとして、モータの目標値(関節角度)を物理演算部1112に入力する。モータ制御出力部1111は、物理演算部1112から演算結果として変更されたモータの現在値を受け取り、目標値と現在値の偏差を求める。そして、モータ制御出力部1111は、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDの各々に基づくP制御入力、I制御入力、D制御入力を合算して、モータへの制御入力値を得ると、この制御入力値に対するモータの出力値として力若しくはトルクを計算する。但し、自律動作装置100の実機で採用するモータの制御方式に基づいて、PID計算以外のロジックに変更することができる。そして、モータ制御出力部1111は、モータが持つ力学的又は電気的なハードウェア特性値(前述)のうち有意なものがあれば、出力値に対して修正などの処理を施す。
物理演算部1112は、アームや関節モータなどの各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数といったハードウェア上の特性値を考慮して、モータ制御出力部1111で算出された出力値(力若しくはトルク)に基づいて、モータを駆動させたときの実機の物理的な挙動に相当する計算を行なうようにAPIを通じて物理エンジンに指示する。また、物理演算部1112によって計算されたモータの現在値は、モータ制御出力部1111にフィードバックされる。
シミュレーション部1102は、上記のシミュレーション結果に基づいて、自律動作装置100の理想状態の動作を仮想機械によって再現する。そして、表示部1103は、3Dグラフィックス・アニメーション空間中で動作する仮想機械の動作をディスプレイ220上に表示する。
プログラムの開発者は、画面上に表示された内容を見ながら、理想状態の修正が必要であるかどうかを確認することができる。そして、プログラムの開発者は、理想状態の修正が必要であると判断したときには、ディスプレイ220のモーション・データ編集用のGUI画面を通じて理想状態の修正を行なう。
そして、出力部1104は、作成及び物理シミュレーションにより検証したキーフレームの理想状態のデータを、モーション・データと併せて出力する。その後、理想状態が付加されたモーション・データは自律動作装置100に転送され、自律動作装置100上で再生されることになる。
図12には、図9に示したプログラム開発環境において作成される、理想状態付きのモーション・データの構成例を模式的に示している。モーション・データは、キーフレームと理想状態からなる。
キーフレームは、例えば、アクチュエータのパラメータの時系列の値からなる。アクチュエータのパラメータは、各関節の角度情報と、各関節駆動用のモータなどの制御パラメータを含む。前者の各関節の角度情報は、時刻毎の各関節の角度など、時系列に沿ったキーフレームの配列として記述される。また、後者のモータの制御パラメータは、時刻毎にモータに設定すべきPIDパラメータ値など、時系列に沿ったPIDパラメータの配列として記述される。
一方、理想状態は、キーフレームを再生する自律動作装置100の実機の移動速度、姿勢、移動方向などからなる。移動速度は、時刻毎の実機の速度ベクトルなど、時系列に沿った移動速度の配列として記述される。また、姿勢は、時刻毎の実機(若しくは、本体部110)、ロール(roll)、ピッチ(pitch)、及びヨー(yaw)の各軸回りの回転角など、時系列に沿った実機の傾きの配列として記述される。また、移動方向は、時刻毎の実機のxyz空間上の位置など、時系列に沿った実機の位置の配列として記述される。
モーション・データを評価するという観点から、理想状態として保持する値は、自律動作装置100が動作中(すなわち、キーフレームの再生中)に、センサなどで計測できる情報である必要がある。また、最終的にキーフレームなどのモーション・データと一緒に理想状態を出力することになるので、理想状態の時間軸をモーション・データと一致させておく必要がある。
一方、自律動作装置100は、モーション・データを評価するためには、理想状態として保持する値と比較する実機の状態を取得するためのセンサを装備する必要がある。このため、自律動作装置100は、各関節の回転角度を検出するエンコーダー、ジャイロセンサ又はIMU、カメラなどの複数のセンサを備えているものとする。また、実機の状態として移動距離や移動方向を取得するために、SLAMやToFといった技術を適用してもよい。
図13には、自律動作装置100がロボットの場合の理想状態のデータ構成例を示している。図示の例では、ロボットの理想状態は、ロボットの移動距離と、移動速度と、機体の姿勢(傾き)の各項目(状態パラメータ)で構成される。
理想状態のロボットの移動距離は、ロボットが移動した相対距離の時系列に沿った配列、ロボットが移動した相対距離の合計、ロボットが移動した相対距離の分散、などの形式で記述することができる。
また、理想状態のロボットの移動速度は、ロボットの移動速度の時系列に沿った配列、ロボットの移動速度の平均、ロボットの移動速度の分散、などの形式で記述することができる。
また、理想状態のロボットの姿勢(傾き)は、ロボットの機体の傾きの時系列に沿った配列、ロボットの機体の傾きの平均、ロボットの機体の傾きの分散、などの形式で記述することができる。
いずれの項目(状態パラメータ)においても、理想状態の値は時間軸の情報を含むので、モーション・データと時間軸を一致させることができる。また、値としては、基本的に、モーション開始時点からの相対値を記録しておく。
また、図9に示したプログラム開発環境においてモーション・データを作成する過程において、モーション・データを用いてシミュレーションを行なうことにより、例えば図14に示したような表示画面上で自律動作装置100の理想状態を確認した結果、理想状態の修正が必要であると判断したときには、プログラムの開発者は、GUI画面を通じて理想状態の修正を行なうことができる。
図14には、理想状態の確認と修正を行なうための入力画面の構成例を示している。図示の入力画面1400は、再生指示部1410と、理想状態修正指示部1420を備えている。
上述したように、開発装置200上で、シミュレーション部1102は、作成したモーション・データを再生する自律動作装置100をシミュレーションし、表示部1103は、そのシミュレーション結果に基づいて、理想状態の動作を再現する仮想機械の3Dグラフィックス・アニメーションをディスプレイ220の画面に表示する。
再生指示部1410は、仮想機械の3Dグラフィックス・アニメーションの再生動作に関する指示を行なうための各種ボタンを備えている。参照番号1411は再生ボタン、参照番号1412は早送りボタン、参照番号1413は巻き戻しボタン、参照番号1414は早巻き戻しボタンである。また、参照番号1415で示すシークバー上でスライダ1416をスライドさせることによって、モーション・データを再生する仮想機械の3Dグラフィックス・アニメーションの再生位置を移動させることができる。また、参照番号1417は、現在の再生位置を示す再生位置表示領域であり、当該領域に時刻を直接書き込んで再生位置を指定することもできる。
理想状態修正指示部1420には、再生位置表示領域1417で示されている再生位置における自律動作装置100の理想状態を示す各項目のデータが表示されている。図14に示す入力画面1400は、自律動作装置100としてロボットを想定しており、その理想状態はロボットの移動距離と、移動速度と、機体の姿勢(傾き)の各項目(状態パラメータ)で構成される。
項目名「移動距離」の欄では、再生位置表示領域1417で示されている再生位置における、理想状態のロボットが移動した相対距離、相対距離の合計、並びに相対距離の分散の各データが表示され、各欄の値を直接書き換えることで理想状態の各データを修正することができる。
また、項目名「移動速度」の欄では、再生位置表示領域1417で示されている再生位置における、理想状態のロボットの移動速度、移動速度の平均、並びに移動速度の分散の各データが表示され、各欄の値を直接書き換えることで理想状態の各データを修正することができる。
また、項目名「姿勢(傾き)」の欄では、再生位置表示領域1417で示されている再生位置における、理想状態のロボットの傾き、傾きの平均、並びに傾きの分散の各データが表示され、各欄の値を直接書き換えることで理想状態の各データを修正することができる。
入力画面1400の左下の、参照番号1431で示す「モーション出力」ボタンが選択されると、入力画面1400で確認並びに修正された理想状態の各データが、作成されたモーション・データと併せて出力される。また、参照番号1432で示す「Cancel」ボタンが先端されると、入力画面1400を介して修正された理想状態のデータが取り消される。
開発装置200は、モーション・データを再生する自律動作装置の「理想状態」を示す各項目(状態パラメータ)のデータを、モーション・データに付加して出力する。
C−2.プログラム実行環境の詳細
自律動作装置100がモーション・データを再生するプログラム実行環境では、モーション・データを再生する実機動作が想定通りであったか(すなわち、理想状態であったか)を評価するとともに、実機動作が想定外であった場合に、想定外となった原因とその解決策をユーザに通知する。
C−2−1.モーション・データの評価
自律動作装置100の実機上では、モーション・データを再生した際に、各モジュール部120に配設されたセンサの検出値に基づいて、実機100の傾き、移動速度、移動方向などの実機の状態を取得する。自律動作装置100は、このような自身の実際の状態を取得するために、各関節の回転角度を検出するエンコーダー、ジャイロセンサ又はIMU、カメラなどの複数のセンサを備えているものとする。また、実機の状態として移動距離や移動方向を取得するために、SLAMやToFといった技術を適用してもよい。
図9に示したように、自律動作装置100上では、モーション評価部901が、モーション・データを再生したときに上記の各種センサから取得した実際の実機状態と、モーション・データに付加された理想状態とを比較して、自律動作装置自身が実機動作を評価する。そして、モーション評価部901は、モーション・データを再生したときの実機状態が理想状態からかけ離れ、実機動作が想定外であったと判定する場合には、モーション評価用知識データベース902を参照して、複数の原因候補とその解決策を特定する。
図15には、図9に示したプログラム実行環境においてモーション・データを評価するための処理手順をフローチャートの形式で示している。図示の処理手順は、基本的には、自律動作装置100の実機上でモーション・データを再生させる際に並行して実施される。
自律動作装置100の実機上でモーション・データの再生を開始すると(ステップS1501)、一定間隔でモーションの評価が実行される。
自律動作装置100の実機上では、モーション・データを再生した際に、各モジュール部120に配設されたセンサの検出値に基づいて、実機100の傾き、移動速度、移動方向などの理想状態の各項目に対応する実機の状態を取得する(ステップS1502)。
自律動作装置100は、実機動作の状態を取得するために、各関節の回転角度を検出するエンコーダー、ジャイロセンサ又はIMU、カメラなどの複数のセンサの出力を取得する。また、実機の状態として移動距離や移動方向を取得するために、SLAMやToFといった技術を適用してもよい。
モーション評価部901は、モーション・データを再生したときに上記の各種センサから取得した実際の実機状態と、モーション・データに付加された理想状態とを比較して、自律動作装置自身が実機動作を評価する(ステップS1503)。
そして、モーション評価部901は、モーション・データを再生したときの実機状態が理想状態からかけ離れ、実機動作が想定外であったと判定する場合には、モーション評価用知識データベース902を参照して、複数の原因候補とその解決策を特定する(ステップS1504)。特定された原因候補並びに解決策のデータは、本体部110のメモリ112上などに一時的に保持される。
自律動作装置100の実機上で、評価対象となるモーション・データの再生が終了しなければ(ステップS1505のNo)、上記の処理ステップS1502〜S1504が繰り返し実行される。
そして、自律動作装置100の実機上でモーション・データの再生が終了すると(ステップS1505のYes)、モーション・データの評価が終了する。本体部110のメモリ112上などに一時的に保持されている、実機の想定外動作の原因候補並びに解決策のデータは、モーション評価部901からユーザ通知部903に出力される。ユーザ通知部903では、モーション評価部901から入力するデータを、ユーザ通知内容の生成に利用する(後述)。
図16には、モーション評価用知識データベース902に格納されている、実機の想定外動作と原因候補の対応関係を記述したデータの構成例を示している。図示の例では、モーション評価用知識データベース902は、理想状態と比較する各項目(状態パラメータ)に対して、値の大小や方向などの理想状態に対する差異(ガイドワード)と、その差異が生じる1以上の原因候補をテーブルとして保持している。但し、同テーブルは、自律動作装置100が床上を移動する移動装置(例えば、脚式ロボットや搬送車など)であることを想定した内容となっている。
各状態パラメータについて、モーション・データを再生する実機の状態が理想状態に対して差異を生じる際に、2以上の原因候補が挙げられる場合がある。例えば、モーション・データを再生する実機の移動距離が理想状態よりも大きくなる原因候補として、理想状態で(若しくは、モーション・データの作成時に)想定される作業環境に対して「床に傾斜がある」及び「床の摩擦が違う」という2つが挙げられる。また、モーション・データを再生する実機の移動距離が理想状態よりも小さくなる原因候補として、「床に傾斜がある」、「床の摩擦が違う」、「(実機が)重いものを持っている」という3つが挙げられる。また、モーション・データを再生する実機の移動方向が右(左)に曲がる原因候補として、「床の凹凸」及び「床に付着物(装着物)がある」という2つが挙げられる。
また、実機でモーション・データを再生したときに、同じ原因候補により、2以上の状態パラメータについて、実機の状態が理想状態と差異を生じることもある。例えば、「床に傾斜がある」という1つの原因候補のために、実機の「移動距離」が理想状態よりも大きく又は小さくなるとともに、実機の「姿勢傾き」が理想状態よりも前傾し又は左右に傾くことがある。
図16に示すテーブルでは、各原因候補に、識別情報としての原因IDを与えている。したがって、同じ原因候補が複数の状態パラメータに跨って出現する場合であっても、原因IDに基づいて同じ原因候補であることを特定することができる。
さらに、図16に示すテーブルでは、各状態パラメータについて、原因候補毎にスコアを与えている。例えば、スコアは、モーション・データを再生する実機の状態と理想状態とで差異を生じたときに、原因候補が状態パラメータに対して影響を及ぼす度合いを示す値である。具体的には、モーション・データを再生する実機の「移動距離」が理想状態よりも大きくなったとき、「床に傾斜がある」方が「床の摩擦が違う」よりも影響すると考えられる場合には、原因候補「床に傾斜がある」に対して高いスコア値0.9を与えるとともに、原因候補「床の摩擦が違う」に対しては低いスコア値0.1を与える。
また、図16に示すテーブルでは、同じ原因候補であっても、状態パラメータ毎に、並びに、状態パラメータにおいて理想状態に対する差異に基づいて、与えられるスコアが相違する。状態パラメータに基づいて原因候補が対して影響を及ぼす度合いが相違するからである。例えば、原因候補「床に傾斜がある」は、「移動距離」と「姿勢傾き」の各状態パラメータに対して及ぼす影響の度合いが相違することから、異なるスコア値が与えられている。また、原因候補「床に傾斜がある」は、「移動距離」が理想状態よりも大きくなることに対して影響を及ぼす度合いが高いことから高いスコア値0.9が与えられるが、「移動距離」が理想状態よりも小さくなることに対して影響を及ぼす度合いが低いことから低いスコア値0.2が与えられる。
各原因候補のスコアは、物理シミュレーションの結果や実機検証に基づく値としてあらかじめ設定しておく。変形例として、自律動作装置100の特性(個体差を含む)や行動などの目的に基づいて、各原因候補のスコアを変動させるようにしてもよい。例えば、まっすぐ歩くことが大切なロボット(若しくは、ロボットがまっすぐ歩くことが大切な行動計画を実行しているとき)には、その観点で、各原因候補の状態パラメータ毎のスコアを設定若しくは設定変更するようにする。なお、スコアではなく、状態パラメータ毎に各原因候補に割り当てた優先度という形式でテーブルに保持するようにしてもよい。スコア又は優先度のいずれの形式であれ、モーション・データの評価時、並びに後述する通知内容の生成時に、テーブルが利用される。モーション・データ単位で別々のテーブルを持ち、あるいは、複数のモーション・データを(目的などに応じて)グルーピングしてグループ単位でテーブルを持ち、モーション評価用知識データベース902に保持するようにしてもよい。
モーション評価部901は、自律動作装置100の実機上でモーション・データを再生中に、実機に装備された各種センサなどから取得した実際の実機状態と、再生中のモーション・データに付加された理想状態とを比較して、自律動作装置100自身が実機動作を評価する。そして、モーション評価部901は、モーション評価用知識データベース902に保持されているテーブル(図16を参照のこと)を参照して、実機の状態が理想状態と差異がある状態パラメータについては、該当する原因候補の原因IDとそのスコアを特定して、保持しておく。
例えば、モーション・データのある再生区間で実機の「移動距離」が理想状態よりも「大きい」という差異が観測されたときには、モーション評価部901は、当該再生区間の原因候補「床に傾斜がある」のスコア値0.9と原因候補「床の摩擦が違う」のスコア値0.1を保持する。また、同じ再生区間で実機の「姿勢傾き」が理想状態よりも「前傾」しているという差異が観測されたときには、当該同じ再生区間の原因候補「床に傾斜がある」のスコア値0.8と原因候補「重いものを持っている」のスコア値0.2を保持する。また、別の再生区間で実機の「移動距離」が理想状態よりも「小さい」という差異が観測されたときには、モーション評価部901は、当該別の再生区間の原因候補「床に傾斜がある」のスコア値0.2と原因候補「床の摩擦が違う」のスコア値0.6と原因候補「重いものを持っている」のスコア値0.2を保持する。
そして、実機上でモーション・データの再生が終了すると、モーション評価部901は、原因ID毎にスコアの時系列の合計を求めて、最終的なモーション評価を生成する。このスコアが、後述する通知内容の生成時に利用される。
図17には、モーション評価部901がモーション評価によって得た原因候補のリストを例示している。合計スコアの高い原因候補を、実機動作が想定外となった原因として突き止める。図示の例では、スコアの合計値が高い順に、原因候補及びその原因IDがリストアップされている。このリストのような情報が、例えば本体部110のメモリ112に保持される。後段の通知内容生成部904は、メモリ112から保持された情報を読み出して、ユーザへの通知内容の生成に利用する。
C−2−2.ユーザへの通知処理
ユーザ通知部903は、モーション評価部901によるモーション評価の結果を受け取ると、自律動作装置100に関連付けて記憶された属性情報を考慮した形態で、実機動作が想定外となった原因の候補とその解決策をユーザに通知する。ユーザ通知部903は、通知内容生成部904と、通知タイミング制御部905を備えている。
自律動作装置100に関連付けて記憶された属性情報とは、例えば、自律動作装置100としてのエンタテイメントロボットに与えられたキャラクター性や個性である。また、このような属性情報は、キャラクター性や個性・性格といった静的若しくは固定的な情報だけに限定されず、本能や感情などからなり時々刻々と変化する内部状態若しくは情動をさらに含んでいてもよい。自律動作装置100に関連付けて記憶された属性情報は、例えば本体部110内のメモリ112に格納されている。また、変形例として、属性情報は、通知対象となるユーザの状態(忙しい、暇など)や、周囲環境(家の中、屋外など)であってもよい。ユーザの状態や周囲環境は、例えばカメラの撮像画像やユーザとの対話状況などに基づいて認識することができる。
通知内容生成部904は、キャラクター性や個性といった自律動作装置100に関連付けて記憶された属性情報を考慮して、モーション・データの実機動作が想定外となった複数の原因候補のうち通知する原因候補の数と種類、通知するタイミング及び頻度を選択する。
例えば、自律動作装置100に真面目又は几帳面な性格が関連付けられている場合には、通知内容生成部904は、考え得るすべての原因候補を、一定間隔毎に通知することを選択する。また、自律動作装置100にせっかちな性格が関連付けられている場合には、通知内容生成部904は、スコア(若しくは、優先度)が最も高い原因候補を選択して、高頻度で通知することを決定する。また、自律動作装置100に大雑把、若しくは不真面目又は横着な性格が関連付けられている場合には、通知内容生成部904は、スコアや優先度に関係なくランダムに選択した1つの原因候補のみを、1回だけ通知することを決定する。このようにして、ユーザの原因候補の通知内容をベースにして、自律動作装置100のキャラクター性や個性を表現することができる。また、実機動作が想定外となった原因を個性的にユーザに提示することで、自律動作装置100とユーザとの間でコミュニケーションが発生し、ユーザは自律動作装置100に対して愛着を持つことができる。
また、変形例として、通知内容生成部904は、通知対象となるユーザの状態(忙しい、暇など)や、周囲環境(家の中、屋外など)を考慮して、ユーザに通知する内容、タイミング、頻度を変更するようにしてもよい。例えば、ユーザが忙しいときや屋外では、通知内容生成部904は、ユーザを邪魔したり周囲に迷惑がかったりしないように、スコアや優先度に関係なくランダムに選択した1つの原因候補のみを、1回だけ通知することを決定する。また、ユーザが家の中にいて暇なときには、通知内容生成部904は、考え得るすべての原因候補を一定間隔毎に通知し、あるいは、高スコア又は高優先度の複数の原因候補を高頻度で通知することを決定する。
また、通知内容生成部904は、音声メッセージや文字情報による通知方法を利用する場合には、自律動作装置100に関連付けられたキャラクター性や個性、性格に基づいた言葉遣いのテキスト・データからなる音声メッセージ又は文字情報を選択するようにしてもよい。このようにして、ユーザの原因候補の通知内容をベースにして、自律動作装置100のキャラクター性や個性を表現することができる。また、実機動作が想定外となった原因を個性的にユーザに提示することで、自律動作装置100とユーザとの間でコミュニケーションが発生し、ユーザは自律動作装置100に対して愛着を持つことができる。
そして、通知タイミング制御部905は、通知内容生成部904が自律動作装置100に関連付けて記憶された属性情報を考慮して選択した原因候補を、通知内容生成部904が選択したタイミングに従って、ユーザへの通知を制御する。
図18には、図9に示したプログラム実行環境において、ユーザ通知部903が、モーション評価部901による評価結果に基づいて、自律動作装置100の実機動作が想定外であったことを通知するための処理手順をフローチャートの形式で示している。図示の処理手順は、自律動作装置100の実機上でモーション・データの再生中に所定の間隔で実施され、又は任意のトリガー(例えばモーション・データの再生完了時)に実施される。
通知内容生成部904は、例えば本体部110のメモリ112から、高いスコアの順にリストアップされた原因候補のリスト(例えば、図17を参照のこと)を取得して、通知内容の生成処理を開始する(ステップS1801)。
通知内容生成部904は、例えば、自律動作装置100の実機上でモーション・データの再生中に、一定間隔又は任意のトリガー(例えばモーション・データの再生完了時)で、メモリ112にアクセスして、原因候補のリストの取得を試みる。原因候補のリストが存在しなければ、本処理を終了する。
原因候補のリストが存在する場合、通知内容生成部904は、キャラクター性や個性といった自律動作装置100に関連付けて記憶された属性情報を考慮して、モーション・データの実機動作が想定外となった複数の原因候補のうち通知する原因候補の数と種類、通知するタイミング及び頻度を選択する(ステップS1802)。
次いで、通知内容生成部904は、ステップS1802で選択した原因候補に対するユーザへの通知内容を、モーション評価用知識データベース902から取得する(ステップS1803)。
そして、通知タイミング制御部905は、モーション評価用知識データベース902から取得された通知内容を、通知内容生成部904が選択した通知タイミングと通知頻度に従って、ユーザへ通知する(ステップS1804)。
図19には、モーション評価用知識データベース902に格納されている、各原因候補に対する通知内容を記述したデータの構成例を示している。図示の例では、モーション評価用知識データベース902は、各原因候補に対する通知内容を、原因IDでインデックス化したテーブルとして保持している。テーブルは、ユーザに通知すべき原因候補の数だけエントリを持つ。図示の例では、通知内容は、「傾いているから早く歩けちゃった」、「滑ってうまく歩けない」、「重くて歩くのに時間がかかる」、「XXXがひっかかって足が開けない」、「床が凸凹しているから右に曲がっちゃう」、「よくわからないけどうまく歩けない」など、ユーザの支援を促す内容であり、自律動作装置100単体ではできない解決策をユーザの支援により実現することができる。
例えば、モーション評価部901がモーション・データの評価によって図17に示したような原因候補のリストを得た場合には、通知内容生成部904は、リストアップされた各原因候補に対する通知内容を、モーション評価用知識データベース902に保持されているテーブル(図19を参照のこと)から取得して、図20に示すような通知内容を決定することができる。
なお、図19に示したテーブルは、ユーザ通知部903が、音声メッセージや文字情報による通知方法を利用することを前提としている。自律動作装置100に関連付けられたキャラクター性や個性、性格に基づいて言葉遣いを切り替えたい場合には、想定するキャラクター性や個性、性格の種類毎にテーブルを用意して、モーション評価用知識データベース902に保持しておくようにしてもよい。
また、ユーザ通知部903は、画面表示やジェスチャなど、発話以外のさまざまなモダリティを用いてユーザに対する通知を行なうことも考えられる。ユーザ通知部903は、自律動作装置100に装備される複数のモダリティのうちいずれか1つ、又は2以上を組み合わせて、実機動作が想定外となった原因候補の通知を行なうことができる。
通知内容生成部904は、キャラクター性や個性といった自律動作装置100に関連付けて記憶された属性情報や、通知対象となるユーザの状態(忙しい、暇など)、周囲環境(家の中、屋外など)に基づいて、ユーザへの通知に用いるモダリティを選択するようにしてもよい。
上述したようなユーザの通知処理によれば、モーション・データを再生する実機の動作が、モーション・データの作成時に想定した理想状態から逸脱してしまった原因を、ユーザに個性豊かに通知することが可能となる。
D.まとめ
本明細書で開示する技術によれば、以下の事柄を実現することができる。
(1)モーション・データを再生する自律動作装置100の理想状態を、シミュレーションを通じて作成して、モーション・データに付加することができる。例えば、自律動作装置100がロボットの場合、モーション・データは、キーフレームなど各関節角度の時間的な変化を示すデータからなり、理想状態はロボット全体の傾き、移動速度、移動方向などの理想的な値からなる。
(2)プログラムの開発者(モーション・データの作成者)は、自律動作装置100の理想状態を、シミュレーション画面で確認し、必要に応じて適宜修正することができる。
(3)自律動作装置100は、理想状態付きのモーション・データを再生した際、実機の状態(全身の傾きや移動速度、移動方向など)をセンシングして、理想状態との差異を評価することができる。すなわち、自律動作装置100は、モーション・データの再生時の動作がモーション・データの作成者の意図から逸脱していることを、自身で検出することができる。
(4)自律動作装置100は、理想状態と実際の状態との差分と原因を関連付けて記憶する知識データベースを装備している。そして、自律動作装置100は、実機動作が理想状態から逸脱した想定外の状態となったときに、知識データベースから、複数の原因候補とその解決策を特定して、ユーザに通知することができる。実機動作を理想状態と比較することにより、関節毎のアクチュエータなど局所的な視点での挙動だけではなく、システム全体の視点で挙動の差異とその原因を特定することができる。したがって、システム全体としてのフィードバック制御が可能となり、自律動作装置100の高度な自律動作を実現することが可能になる。
(5)自律動作装置100は、キャラクター性や個性など自身に関連付けて記憶された属性情報を考慮して、複数の原因候補から、ユーザへの通知内容、通知タイミング、通知頻度を決定して、ユーザに通知することができる。
(6)自律動作装置100は、実機動作が想定外となった原因を、ユーザの支援を促す通知内容で通知することにより、自律動作装置100単体ではできない解決策をユーザの支援により実現することができる。また、ユーザの原因候補の通知内容をベースにして、自律動作装置100のキャラクター性や個性を表現することができる。また、実機動作が想定外となった原因を個性的にユーザに提示することで、自律動作装置100とユーザとの間でコミュニケーションが発生し、ユーザは自律動作装置100に対して愛着を持つことができる。
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
本明細書で開示する技術は、ロボットや自動走行車、無人航空機(ドローン)などの自律動作装置の自律的若しくは適応的な行動を実現するアプリケーション・プログラムの開発に利用することができる。また、本明細書で開示する技術は、行動計画を用いて動作を制御する、ビデオ・ゲームのキャラクターのAI開発に対しても適用することができる。
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
(1)可動部を含む制御対象装置の制御プログラムを処理する情報処理装置であって、
前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算部と、
前記演算部による演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持部と、
を具備し、前記理想状態を付加して前記制御プログラムを出力する、情報処理装置。
(2)前記演算部は、前記制御プログラムに従った前記制御対象装置の物理挙動を演算する、
上記(1)に記載の情報処理装置。
(3)時間毎の理想状態の前記制御対象装置を表示装置に表示させる表示部をさらに備える、
上記(1)又は(2)のいずれかに記載の情報処理装置。
(4)理想状態は、前記制御対象装置の状態を示す複数の状態パラメータからなり、
時間毎の理想状態の各状態パラメータの変更の指示を受け付ける入力部をさらに備え、
前記入力部が受け付けた指示に従って状態パラメータを修正した後の前記理想状態を付加して前記制御プログラムを出力する、
上記(1)乃至(3)のいずれかに記載の情報処理装置。
(5)前記制御対象装置は、床上を移動する移動装置であり、
前記移動装置の理想状態は、前記移動装置本体の姿勢又は傾き、移動方向、移動距離、又は移動速度のうち少なくとも1つの状態パラメータを含む、
上記(1)乃至(4)のいずれかに記載の情報処理装置。
(6)可動部を含む制御対象装置を制御プログラムに従って制御する情報処理装置であって、
前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得部と、
前記状態取得部が取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価部と、
を具備する情報処理装置。
(7)前記評価部は、前記制御対象装置の実際の状態と前記理想状態の差異の原因を特定する、
上記(6)に記載の情報処理装置。
(8)理想状態は、前記制御対象装置の状態を示す複数の状態パラメータからなり、
前記状態取得部は、状態パラメータ毎の前記制御対象装置の状態を取得し、
前記評価部は、状態パラメータ毎の前記制御対象装置の実際の状態と前記理想状態を比較した結果に基づいて、前記差異の原因を特定する、
上記(7)に記載の情報処理装置。
(9)前記制御対象装置は、床上を移動する移動装置であり、
前記状態パラメータは、前記移動装置本体の姿勢又は傾き、移動方向、移動距離、又は移動速度のうち少なくとも1つを含む、
上記(8)に記載の情報処理装置。
(10)状態パラメータ毎の前記制御対象装置の実際の状態と前記理想状態の差異をその原因と関連付けて記憶するデータベースをさらに備え、
前記評価部は、前記データベースを参照して、前記制御対象装置の実際の状態と前記理想状態の差異の原因を特定する、
上記(8)又は(9)のいずれかに記載の情報処理装置。
(11)前記評価部による評価結果をユーザに通知する通知部をさらに備える、
上記(6)乃至(10)のいずれかに記載の情報処理装置。
(12)前記通知部は、前記制御対象装置の実際の状態と前記理想状態の差異の原因をユーザに通知する、
上記(11)に記載の情報処理装置。
(13)前記制御対象装置の実際の状態と前記理想状態の差異の原因をユーザへの通知内容を関連付けて記憶するデータベースをさらに備え、
前記通知部は、前記データベースを参照して、前記評価部が特定した原因に関連付けられた通知内容を用いてユーザへの通知を行なう、
上記(12)に記載の情報処理装置。
(14)前記通知部は、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知方法を制御する、
上記(11)乃至(13)のいずれかに記載の情報処理装置。
(15)前記通知部は、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知内容、通知タイミング、又は通知頻度のうち少なくとも1つを制御する、
上記(11)乃至(14)のいずれかに記載の情報処理装置。
(16)前記通知部は、複数のモダリティを有し、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知に使用するモダリティを選択する、
上記(11)乃至(15)のいずれかに記載の情報処理装置。
(17)前記制御対象装置に関連付けられた属性情報は、前記制御対象装置に関連付けられたキャラクター性、個性、性格、内部状態又は感情、ユーザの状態、周囲環境のうち少なくとも1つを含む、
上記(14)乃至(16)のいずれかに記載の情報処理装置。
(18)可動部を含む制御対象装置を制御プログラムに従って制御する情報処理方法であって、
前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得ステップと、
前記状態取得ステップにおいて取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価ステップと、
を有する情報処理方法。
(19)可動部を含む制御対象装置を制御プログラムに従って制御するための処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得部、
前記状態取得部が取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価部、
として機能させるコンピュータ・プログラム。
(20)可動部を含む制御対象装置の制御プログラムを製造するプログラム製造方法であって、
前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算ステップと、
前記演算ステップによる演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持ステップと、
を有し、前記理想状態を付加して前記制御プログラムを出力する、プログラム製造方法。
(21)可動部を含む制御対象装置の制御プログラムを処理する情報処理方法であって、
前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算ステップと、
前記演算部による演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持ステップと、
前記理想状態を付加して前記制御プログラムを出力するステップと、
を有する情報処理方法。
(22)可動部を含む制御対象装置の制御プログラムの処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算部、
前記演算部による演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持部、
前記理想状態を付加して前記制御プログラムを出力する出力部、
として機能させるコンピュータ・プログラム。
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…ユーザ・インターフェース(UI)部
901…モーション評価部
902…モーション評価用知識データベース、903…ユーザ通知部
904…通知内容生成部、905…通知タイミング制御部
1101…モーション作成部、1102…シミュレーション部
1103…表示部、1104…出力部
1111…モータ制御出力部、1112…物理演算部

Claims (20)

  1. 可動部を含む制御対象装置の制御プログラムを処理する情報処理装置であって、
    前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算部と、
    前記演算部による演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持部と、
    を具備し、前記理想状態を付加して前記制御プログラムを出力する、情報処理装置。
  2. 前記演算部は、前記制御プログラムに従った前記制御対象装置の物理挙動を演算する、
    請求項1に記載の情報処理装置。
  3. 時間毎の理想状態の前記制御対象装置を表示装置に表示させる表示部をさらに備える、
    請求項1に記載の情報処理装置。
  4. 理想状態は、前記制御対象装置の状態を示す複数の状態パラメータからなり、
    時間毎の理想状態の各状態パラメータの変更の指示を受け付ける入力部をさらに備え、
    前記入力部が受け付けた指示に従って状態パラメータを修正した後の前記理想状態を付加して前記制御プログラムを出力する、
    請求項1に記載の情報処理装置。
  5. 前記制御対象装置は、床上を移動する移動装置であり、
    前記移動装置の理想状態は、前記移動装置本体の姿勢又は傾き、移動方向、移動距離、又は移動速度のうち少なくとも1つの状態パラメータを含む、
    請求項1に記載の情報処理装置。
  6. 可動部を含む制御対象装置を制御プログラムに従って制御する情報処理装置であって、
    前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得部と、
    前記状態取得部が取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価部と、
    を具備する情報処理装置。
  7. 前記評価部は、前記制御対象装置の実際の状態と前記理想状態の差異の原因を特定する、
    請求項6に記載の情報処理装置。
  8. 理想状態は、前記制御対象装置の状態を示す複数の状態パラメータからなり、
    前記状態取得部は、状態パラメータ毎の前記制御対象装置の状態を取得し、
    前記評価部は、状態パラメータ毎の前記制御対象装置の実際の状態と前記理想状態を比較した結果に基づいて、前記差異の原因を特定する、
    請求項7に記載の情報処理装置。
  9. 前記制御対象装置は、床上を移動する移動装置であり、
    前記状態パラメータは、前記移動装置本体の姿勢又は傾き、移動方向、移動距離、又は移動速度のうち少なくとも1つを含む、
    請求項8に記載の情報処理装置。
  10. 状態パラメータ毎の前記制御対象装置の実際の状態と前記理想状態の差異をその原因と関連付けて記憶するデータベースをさらに備え、
    前記評価部は、前記データベースを参照して、前記制御対象装置の実際の状態と前記理想状態の差異の原因を特定する、
    請求項8又は9のいずれかに記載の情報処理装置。
  11. 前記評価部による評価結果をユーザに通知する通知部をさらに備える、
    請求項6に記載の情報処理装置。
  12. 前記通知部は、前記制御対象装置の実際の状態と前記理想状態の差異の原因をユーザに通知する、
    請求項11に記載の情報処理装置。
  13. 前記制御対象装置の実際の状態と前記理想状態の差異の原因をユーザへの通知内容を関連付けて記憶するデータベースをさらに備え、
    前記通知部は、前記データベースを参照して、前記評価部が特定した原因に関連付けられた通知内容を用いてユーザへの通知を行なう、
    請求項12に記載の情報処理装置。
  14. 前記通知部は、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知方法を制御する、
    請求項11に記載の情報処理装置。
  15. 前記通知部は、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知内容、通知タイミング、又は通知頻度のうち少なくとも1つを制御する、
    請求項11に記載の情報処理装置。
  16. 前記通知部は、複数のモダリティを有し、前記制御対象装置に関連付けられた属性情報に基づいて、ユーザへの通知に使用するモダリティを選択する、
    請求項11に記載の情報処理装置。
  17. 前記制御対象装置に関連付けられた属性情報は、前記制御対象装置に関連付けられたキャラクター性、個性、性格、内部状態又は感情、ユーザの状態、周囲環境のうち少なくとも1つを含む、
    請求項14に記載の情報処理装置。
  18. 可動部を含む制御対象装置を制御プログラムに従って制御する情報処理方法であって、
    前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得ステップと、
    前記状態取得ステップにおいて取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価ステップと、
    を有する情報処理方法。
  19. 可動部を含む制御対象装置を制御プログラムに従って制御するための処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
    前記制御プログラムに含まれる前記可動部に対する時間毎の指令値に従って動作する前記制御対象装置の状態を取得する状態取得部、
    前記状態取得部が取得した前記制御対象装置の実際の状態を、前記制御プログラムに付加された理想状態を比較して、前記制御対象装置の動作又は前記制御プログラムを評価する評価部、
    として機能させるコンピュータ・プログラム。
  20. 可動部を含む制御対象装置の制御プログラムを製造するプログラム製造方法であって、
    前記可動部に対する時間毎の指令値を含む前記制御プログラムに従った前記制御対象装置の動作を演算する演算ステップと、
    前記演算ステップによる演算結果として得られる前記制御プログラムに従って動作する前記制御対象装置の理想状態を保持する保持ステップと、
    を有し、前記理想状態を付加して前記制御プログラムを出力する、プログラム製造方法。
JP2019553696A 2017-11-16 2018-08-21 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 Abandoned JPWO2019097793A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017221074 2017-11-16
JP2017221074 2017-11-16
PCT/JP2018/030869 WO2019097793A1 (ja) 2017-11-16 2018-08-21 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法

Publications (1)

Publication Number Publication Date
JPWO2019097793A1 true JPWO2019097793A1 (ja) 2020-11-19

Family

ID=66540114

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019553696A Abandoned JPWO2019097793A1 (ja) 2017-11-16 2018-08-21 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法

Country Status (5)

Country Link
US (1) US20210178578A1 (ja)
EP (1) EP3711906A4 (ja)
JP (1) JPWO2019097793A1 (ja)
CN (1) CN111344116A (ja)
WO (1) WO2019097793A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220012624A1 (en) * 2020-07-07 2022-01-13 Northrop Grumman Systems Corporation Systems and methods for evaluating a behavior of a machine-learning algorithm
CN112689190B (zh) * 2021-03-22 2022-07-01 游艺星际(北京)科技有限公司 弹幕显示方法、装置、终端及存储介质
CN113132530B (zh) * 2021-05-12 2022-06-17 江铃汽车股份有限公司 一种基于汽车蓝牙钥匙的空调控制方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4362977A (en) * 1980-06-30 1982-12-07 International Business Machines Corporation Method and apparatus for calibrating a robot to compensate for inaccuracy of the robot
US5049796A (en) * 1989-05-17 1991-09-17 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Robust high-performance control for robotic manipulators
US6505085B1 (en) * 1999-03-04 2003-01-07 Massachusetts Institute Of Technology Method and apparatus for creating time-optimal commands for linear systems
JP2003108220A (ja) * 2001-09-28 2003-04-11 Omron Corp 制御プログラム開発支援方法及び装置
JP2003159674A (ja) 2001-11-21 2003-06-03 Sony Corp ロボット装置、ロボット装置の外力検出方法及びロボット装置の外力検出プログラム、並びにロボット装置の外力検出のためのキャリブレーション方法及びロボット装置の外力検出のためのキャリブレーションプログラム
JP3555945B2 (ja) 2002-10-11 2004-08-18 ソニー株式会社 ロボット装置のためのモーション編集装置及びモーション編集方法、ロボット装置及びロボット装置の制御方法、並びにコンピュータ・プログラム
JP2004220566A (ja) * 2002-12-26 2004-08-05 Toshiba Corp 機構シミュレーション方法および機構シミュレーションプログラム
US9108316B2 (en) * 2008-12-10 2015-08-18 Abb Research Ltd. Method and system for in-production optimization of the parameters of a robot used for assembly
FR2946160B1 (fr) * 2009-05-26 2014-05-09 Aldebaran Robotics Systeme et procede pour editer et commander des comportements d'un robot mobile.
KR101075026B1 (ko) * 2009-12-02 2011-10-20 한국생산기술연구원 로봇 하드웨어 설계지원 시스템 및 그의 방법
US8781629B2 (en) * 2010-09-22 2014-07-15 Toyota Motor Engineering & Manufacturing North America, Inc. Human-robot interface apparatuses and methods of controlling robots
JP6550605B2 (ja) * 2014-12-02 2019-07-31 Soinn株式会社 動作の転移装置、動作の転移方法及びプログラム
JP2017070634A (ja) 2015-10-09 2017-04-13 株式会社平和 遊技機

Also Published As

Publication number Publication date
CN111344116A (zh) 2020-06-26
US20210178578A1 (en) 2021-06-17
WO2019097793A1 (ja) 2019-05-23
EP3711906A4 (en) 2021-08-18
EP3711906A1 (en) 2020-09-23

Similar Documents

Publication Publication Date Title
WO2018180143A1 (ja) 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法
JP6154057B2 (ja) ロボットシステムと1つ以上のモバイルコンピューティングデバイスとの統合
Harris et al. Survey of popular robotics simulators, frameworks, and toolkits
US11568265B2 (en) Continual selection of scenarios based on identified tags describing contextual environment of a user for execution by an artificial intelligence model of the user by an autonomous personal companion
JP2020535556A (ja) ユーザ用の人工知能(ai)モデルに基づく可動式の自律型パーソナルコンパニオン
KR20170020497A (ko) 물리 엔진을 이용한 물리적 장난감 제어
JPWO2019097793A1 (ja) 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法
Pajaziti Slam–map building and navigation via ros
Real et al. Unmanned aerial vehicle abstraction layer: An abstraction layer to operate unmanned aerial vehicles
KR20130055127A (ko) 통신망을 이용한 로봇 개발 플랫폼의 집단협업공간 제공시스템
TWI267806B (en) Vehicle control training system and its method
WO2018180148A1 (ja) 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法
Dobrokvashina et al. How to Create a New Model of a Mobile Robot in ROS/Gazebo Environment: An Extended Tutorial
Thai Exploring robotics with ROBOTIS Systems
Allspaw et al. Design of virtual reality for humanoid robots with inspiration from video games
Moshayedi et al. Unity in Embedded System Design and Robotics: A Step-by-step Guide
Indrawati et al. Comparison of two fuzzy logic controller schemes for position control of AR. Drone
JP3614824B2 (ja) 脚式移動ロボットのための動作編集装置及び動作編集方法
US10456682B2 (en) Augmentation of a gaming controller via projection system of an autonomous personal companion
Muecke et al. Darwin’s evolution: Development of a humanoid robot
US20190111563A1 (en) Custom Motion Trajectories for Robot Animation
Lapping-Carr et al. Wiimote Interfaces for Lifelong Robot Learning.
Machado et al. CoopDynSim: a 3D robotics simulator
Udugama Mini bot 3D: A ROS based Gazebo Simulation
Real Pérez et al. Unmanned aerial vehicle abstraction layer: An abstraction layer to operate unmanned aerial vehicles

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210708

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20220622