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

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

Info

Publication number
JPWO2018180148A1
JPWO2018180148A1 JP2019509031A JP2019509031A JPWO2018180148A1 JP WO2018180148 A1 JPWO2018180148 A1 JP WO2018180148A1 JP 2019509031 A JP2019509031 A JP 2019509031A JP 2019509031 A JP2019509031 A JP 2019509031A JP WO2018180148 A1 JPWO2018180148 A1 JP WO2018180148A1
Authority
JP
Japan
Prior art keywords
control
unit
program
information processing
movable unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019509031A
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 JPWO2018180148A1 publication Critical patent/JPWO2018180148A1/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • 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
    • 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/0423Input/output
    • 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/10Programme control other than numerical control, i.e. in sequence controllers or logic controllers using selector switches
    • G05B19/102Programme control other than numerical control, i.e. in sequence controllers or logic controllers using selector switches for input of programme steps, i.e. setting up sequence
    • 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/26Pc applications
    • G05B2219/2609Process control

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)
  • Manipulator (AREA)
  • Programmable Controllers (AREA)

Abstract

可動部を有する制御装置の動作制御プログラムの開発に利用され又は開発を支援する情報処理装置を提供する。制御対象装置の可動部に対する目標値を含む動作制御プログラムを処理する情報処理装置は、制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持部と、前記第1の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部を具備する。

Description

本明細書で開示する技術は、可動部を有する制御装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法に関する。
近年のロボティクス技術の進歩は目覚ましく、さまざまな産業分野の作業現場に広く浸透してきている。ロボットは、例えば複数のリンクとリンク間を接続する関節で構成され、モータなどの関節駆動用のアクチュエータを用いて各節を駆動することによってロボットは動作する。
例えば、キーフレームを用いたロボットやアニメーションのキャラクターの動作編集方法が知られている(例えば、特許文献1を参照のこと)。具体的には、ある区間の動作の開始時並びに終了時などのキーフレームにおける関節部などの各可動部の位置(関節角度)や速度などの目標値からなるデータセットをGUI(Graphical User Interface)画面上で指定し、「X秒かけて関節をY度からZまで動かす」というような、直感的で分かり易い動作の編集を行なうことができる。
ところが、各種の多関節ロボットの動作を作成する際には、さまざまな物理的要素を考慮する必要がある。例えば、2足歩行、4足歩行など脚式移動ロボットの動作を作成する際には、機体の転倒や、移動経路上の物体(障害物など)との衝突といった物理的要素を考慮しなければならない。作成した定義動作(モーションとも呼ばれる)を確認するには、実機で定義動作を実行してみるか、又は、高度な物理演算を行なうことができる物理エンジンを用いる必要がある。
特開2002−74382号公報
本明細書で開示する技術の目的は、可動部を有する制御装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することにある。
本明細書で開示する技術は、上記課題を参酌してなされたものであり、その第1の側面は、制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理装置であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持部と、
前記第1の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、
算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部と、
を具備する情報処理装置である。
前記制御出力部は、前記第1の保持部が保持する前記制御パラメータを用いて前記目標値と前記可動部の現在値の偏差に応じた制御入力値を計算するとともに、前記制御入力値に対する前記第1の保持部が保持する前記特性値に応じた前記可動部の出力値を計算する。
また、前記第1の保持部は、前記可動部の制御方式に応じて、比例ゲイン、積分ゲイン、又は微分ゲインのうち少なくとも1つの制御パラメータを保持するとともに、前記可動部を駆動するモータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能(モータ軸)(P/R)、検出器(エンコーダ)、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量のうち少なくとも1つの特性値を保持する。
また、情報処理装置は、前記制御対象装置の特性値を保持する第2の保持部をさらに備えている。前記第2の保持部は、前記制御対象装置を構成する各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数のうち少なくとも1つを保持する。そして、前記物理演算部は、前記第2の保持部が保持する前記特性値を用いて、前記制御対象装置に物理挙動を実行させる。
また、本明細書で開示する技術の第2の側面は、制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理方法であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持ステップと、
前記第1の保持ステップにより保持される前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力ステップと、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算ステップと、
を有する情報処理方法である。
また、本明細書で開示する技術の第3の側面は、制御対象装置の可動部に対する目標値を含む制御プログラムに対する処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持部、
前記第1の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に対する前記可動部の出力値を計算する制御出力部、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算部、
として機能させるコンピュータ・プログラムである。
本明細書で開示する技術の第3の側面に係るコンピュータ・プログラムは、コンピュータ上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、第3の側面に係るコンピュータ・プログラムをコンピュータにインストールすることによって、コンピュータ上では協働的作用が発揮され、第1の側面に係る情報処理装置と同様の作用効果を得ることができる。
また、本明細書で開示する技術の第4の側面は、可動部を有する制御対象装置を制御プログラムに従って制御するための処理を実施する情報処理装置であって、
前記制御プログラムに含まれる、制御方式に応じた前記可動部の制御パラメータを、前記制御対象装置内の前記可動部を駆動するコントローラに設定する設定部と、
前記制御プログラムで指定される前記可動部の目標値に従って、前記コントローラによる前記可動部の駆動を制御する動作制御部と、
を具備する情報処理装置である。
また、本明細書で開示する技術の第5の側面は、可動部を有する制御対象装置を制御するための制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部を制御させるために用いる制御パラメータを設定する制御パラメータ設定ステップと、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部の駆動を制御するために入力する目標値を設定する目標値設定ステップと、
を有するプログラム製造方法である。
本明細書で開示する技術によれば、可動部を有する制御装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することができる。
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
図1は、制御プログラムの開発環境の一例を模式的に示した図である。 図2は、ネットワークを介した制御プログラムの分散開発環境を例示した図である。 図3は、ロボットを開発対象とする制御プログラムの開発環境を例示した図である。 図4は、自動走行車を開発対象とする制御プログラムの開発環境を例示した図である。 図5は、無人航空機(ドローン)を開発対象とする制御プログラムの開発環境を例示した図である。 図6は、自律動作装置100の実機に搭載されるハードウェア並びにソフトウェアのアーキテクチャーの構成例を示した図である。 図7は、アプリケーション・プログラムの構成例を模式的に示した図である。 図8は、実機の制御用のアプリケーション・プログラムのプログラム及びデータを実機にインストールする際の処理手順を示したフローチャートである。 図9は、行動計画並びに定義動作の各データ・ファイルの構成例を模式的に示した図である。 図10は、アプリケーション・プログラムの実機動作の処理手順を示したフローチャートである。 図11は、定義動作を実行するための詳細な処理手順を示したフローチャートである。 図12は、自律動作装置100の定義動作を作成するための開発装置1200の機能的構成を模式的に示した図である。 図13は、モータ制御出力部1220と物理演算部1230の各々の内部動作を示した図である。 図14は、現実のモータの制御ブロック図を示した図である。 図15は、アプリケーション・プログラムの開発ツール・プログラム上において実行するための処理手順を示したフローチャートである。 図16は、仮想機械による定義動作を実現する処理手順及び定義動作の処理中にGUIを通じてデータ修正入力を行なう処理手順を示したフローチャートである。 図17は、定義動作を実行する途中で制御パラメータを変更する様子を示した図である。 図18は、定義動作のデータ・フォーマットの変形例を示した図である。
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
図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は、アクチュエータ121の制御情報やセンサの検出値などを格納するためにプロセッサ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と各モジュール部などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
開発装置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に格納されている。望ましくは、仮想機械の制御プログラムは、実機100の各モジュール部120のプロセッサ122で動作する単位で、制御プログラム及びデータがモジュール化されている。仮想機械をあたかも実機100のように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内のメモリ123にアップロードすることもできる。
モジュール部単位でハードウェア及びプログラムの開発を複数の開発者又は複数の開発ベンダーで分担することで、分散開発環境下で自律動作装置100全体の開発を進めることができる。
図2には、ネットワークを介した制御プログラムの分散開発環境を例示している。図2に示す分散開発環境下では、モジュール毎に個別の開発者又は開発ベンダーに開発が委ねられている。但し、図2で言うモジュールは、図1に示した自律動作装置100のハードウェア構成要素であるモジュール部120の他に、自律動作装置100の制御ソフトウェアのモジュールを指す場合もある。
自律動作装置100の本体部110又はモジュール部120単位で制御プログラムの開発を任された各プログラム開発者は、それぞれモジュール開発用コンピュータを用いて、自分が担当する本体部110又はモジュール部120の制御プログラムを作成する。モジュール開発用コンピュータ上では、例えば上述した開発ツール・プログラムが動作している。各モジュール開発用コンピュータは、ネットワークに接続されている。そして、各プログラム開発者は、それぞれクラウド・サーバ上の共有ストレージ、自分専用のストレージ(すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ)、あるいは専用サーバが備えるストレージにおいて、自己が開発した制御プログラムなどを提供してもよい。また、サーバなどのストレージにアカウントを有する管理者、開発者、顧客、あるいはユーザによって制御プログラムなどが共有されるようにしてもよい。
自律動作装置100の実機全体の制御プログラム開発を担当若しくは統括する開発者は、ネットワーク経由で本体部110及び各モジュール部120の制御プログラムの提供を受ける。具体的には、実機全体の開発者が使用する実機プログラム開発用コンピュータは、クラウド・サーバ上の共有ストレージ又は開発者ストレージ、専用サーバ、あるいは各開発者のモジュール開発用コンピュータとの直接通信によって、各々の制御プログラムを受信する。但し、制御プログラムの提供を受けるネットワークは、有線又は無線のいずれで構成されていてもよい。
実機全体の開発者が使用する実機プログラム開発用コンピュータは、図1に示した開発装置200に相当し、開発ツール・プログラム上で物理エンジンを用いた演算を行ない、且つ3Dグラフィックス・アニメーションにより実機に相当する仮想機械の動作を表示できる機能を備えている。したがって、実機プログラム開発用コンピュータは、本体部110及びすべてのモジュール部120の制御プログラムを、開発ツール・プログラムが備える物理エンジン機能を利用して、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
さらに、実機プログラム開発用コンピュータ上では開発された制御プログラムの実行と並行して、各々の制御プログラムの修正を行なうことができる。したがって、実機全体の開発者と各モジュール部を担当する開発者とで、実機全体の制御プログラムを効率的に共同開発することにもなる。また、実機プログラム開発用コンピュータ上で修正した制御プログラムを、そのモジュール部を担当する開発者に再度提供して、最終的なプログラム製品を完成してもらうことが可能である。例えばクラウド・サーバ上に本体部並びに各モジュール部専用のストレージを配置するなどモジュール部単位で制御プログラムを管理するようにすることで、共同開発を円滑に進めることができる。
実機全体の開発者が使用する実機プログラム開発用コンピュータ上で動作が確認・検証された(すなわち、完成した)制御プログラムは、USBポート214を介して開発装置200から実機の自律動作装置100に直接アップロードすることができる。あるいは、有線又は無線で構成されるネットワーク経由で、実機全体又はモジュール部毎の制御プログラムを実機にアップロードすることもできる。
また、制御プログラムを専用サーバから実機へアップロードするという形態も想定される。例えば、ある実機のユーザが自分のユーザ端末のユーザ・インターフェース(キーボード、マウス、タッチパネルなど)を介して自分が持つアカウントを用いて専用サーバにログインして、さらに実機にダウンロード又はアップロードする制御プログラムを選択して、ダウンロード又はアップロードを実施するようにしてもよい。
図3には、自律動作装置100の具体例として脚式のロボットを開発対象とする場合の制御プログラムの開発環境を例示している。図3では、単一の開発装置200を用いてプログラム開発が行なわれるが、勿論、図2に示したようなネットワークを介した分散開発環境を利用することも可能である。
脚式ロボット100は、本体部110と、頭部や左右の脚部に相当するモジュール部120を有している。図示を省略するが、本体部110と、頭部や左右の脚部などの各モジュール部120などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
なお、脚式ロボット100は、上肢など図示しないモジュール部をさらに有していてもよい。また、少なくとも一部のモジュール部内のプロセッサやメモリなど機能が本体部と一体となって、本体部のプロセッサによってコントロールされるという実機構成の変形例も考えられる。
本体部110は、プロセッサ111と、メモリ112と、無線又は有線の通信モデム113と、バッテリー114と、USBポート115と、GPS116を備えている。
左右の脚のモジュール部120−2及び120−3は、アクチュエータとして、股関節や膝関節、足首などの関節駆動用(若しくは、歩行用)のモータ121を備え、プロセッサとしてモータの駆動を制御するモータ・コントローラ122を備えている。また、センサ124として、モータ121の出力側に発生する外力を検知するトルク・センサや、モータ121の出力側の回転角度を検出するエンコーダー、足裏部の接地センサなどを備えている。また、頭部のモジュール部120−1は、アクチュエータとしての頭部回転用のモータ121と、センサとしての周囲を撮像するイメージ・センサ124を備えている。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記の脚式ロボット100の本体部110並びに各モジュール部120の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機100全体の制御プログラムやモジュール部120毎の制御プログラムは、本体部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(登録商標)通信により接続して、空調121を制御することを想定している。
トランスミッション制御モジュール部120−2は、アクチュエータとしての駆動輪用モータ121と、プロセッサとしてのトランスミッション制御ECU122と、メモリ123と、センサとして速度・加速度センサ124や操舵角センサなどを備えている。
なお、図4に示した構成例では、主制御部110並びに各モジュール部120にECUが配置されているが、主制御部110内のECU111ですべてのモジュール部120を集中管理するように構成することも可能である。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記の自動走行車100の主制御部110、室内空調制御モジュール部120−1、並びにトランスミッション制御モジュール部120−2の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機100全体の制御プログラムやモジュール部120毎の制御プログラムは、主制御部110のECUインターフェース115や各モジュール部120の通信モデム125を介した有線又は無線の通信によって、主制御部110のメモリ112又は各モジュール部120のメモリ123にアップロードされる。そして、アップロードされたプログラムは、自動走行車100の起動時などに適宜動作するようになっている。
図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、近距離無線通信などの無線モデムを想定しており、操縦者が操作するリモート・コントローラやスマートフォン(図示しない)からのコマンドに従ってカメラ部124の回転や撮影を行なう。
プロペラ制御モジュール120−2は、アクチュエータとして例えば3つのプロペラ(回転用モータを含む)121と、プロペラ121の回転用モータの制御などを行なうプロセッサ122と、メモリ123と、センサとしてのプロペラ回転検出センサ124を備えている。
図1と同様に、開発装置200上で動作する開発ツール・プログラムを用いて、上記の無人航空機100の主制御部110、カメラ制御モジュール120−1、並びにプロペラ制御モジュール部120−2の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の3Dグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
また、開発装置200を用いて作成された制御プログラム、あるいは図2に示したような開発環境(あるいはその他の開発環境)において開発された実機100全体の制御プログラムやモジュール部120毎の制御プログラムは、主制御部110や各モジュール部120の通信モデムを介した有線又は無線の通信によって、主制御部110のメモリ112又は各モジュール部120のメモリ123にアップロードされる。そして、アップロードされたプログラムは、無人航空機100の起動時などに適宜動作するようになっている。
図6には、自律動作装置100の実機に搭載されるハードウェア並びにソフトウェアのアーキテクチャーの構成例を示している。
実機は、図1などにも示したように、本体部(若しくは主制御部)と複数のモジュール部などの複数のハードウェア・モジュール(HW1、HW2、…)が筐体内に組み込まれて構成される。また、各ハードウェア・モジュールを2以上の筐体に分散して配置して構成される実機も存在し得る。
OSは、これらハードウェア・モジュール(HW1、HW2、…)を直接的に制御する。また、OSではなく、モジュール部120内のメモリ123にアップロードされた制御プログラムがハードウェア・モジュールを直接的に制御する場合もある(具体的には、プロセッサ122が制御プログラムを実行して、アクチュエータ121の駆動を制御する)。
図1などに示したように、本体部110と複数のモジュール部120でハードウェア・アーキテクチャーが構成される自律動作装置100においては、本体部110(のプロセッサ111)において当該システム100全体を制御する主OSが動作して、各モジュール部120内で実行中の制御プログラムを直接的又は間接的に制御するように構成される。
図6では、主OS以外にも複数のOS(例えば、OS1、OS2、…)が動作し、各OSがアプリケーション・プログラムの実行環境を提供する例を示している。図6において、例えば、OS1が主OSの管理下にあるハードウェア・モジュールを駆動したい場合には、まずOS1が主OSと通信を行なうことによって、間接的に所望のモジュール部120の制御プログラムを制御するようにすることができる。また、OS1と主OS間の通信には、RPC(Remote Procedure Call)などの技術を利用して実現することができる。
図6には、仮想化技術(Virtualization)を用いて構築したアーキテクチャーも併せて示している。すなわち、複数の異なるオペレーティング・システム(例えば、OS1、OS2、…)を仮想化OS上で動作させている。異なるOSを想定して開発された各アプリケーション・プログラム(例えば、OS1を想定して開発されたAP1と、OS2を想定して開発されたAP2)を、同じ実機100上で混在させることが可能である。
例えば、自動走行車において開発されるアプリケーション・プログラムを、駆動系制御(DSUなど)のように高い信頼性が要求されるアプリケーション・プログラムと、ユーザに対するサービスに関わるインフォテインメント(オーディオ機器や空調など)のように汎用性の高いアプリケーション・プログラムの2種類に大別すると、前者のAP1はより信頼性の高いOS1を想定して開発され、後者のAP2はより汎用性が高く多くの開発者によって開発可能なOS2を想定して開発される。このように異なるOSを想定して開発された駆動系制御用アプリケーション・プログラムAP1及びインフォテインメント・アプリケーション・プログラムAP2は、仮想化OSの介在により各々に該当するハードウェアに対する制御が容易となるので、同一の自動走行車上で混在することが可能となる。
アプリケーション・プログラムの開発者は、システム(例えば、ミドルウェア)が提供するAPIを用いてアプリケーション・プログラムを開発することができる。例えば、APIとして、「地図表示」、「音声対話モードへの切り替え」、「周囲の人間の認識」といった機能の利用が考えられる。
また、アプリケーション・プログラムの開発者は、システム・コールを利用してOSに対して指示を行なうようなプログラムを含めてアプリケーション・プログラムを開発することができる。ここで言うシステム・コールは、システム制御に関わる機能を利用するためのインターフェースである。システム・コールの例として、モジュール部120内のプロセッサ122(例えば、モータ・コントローラ)のパラメータを変更する、通信モデム125におけるネットワーク・アドレスの設定を行なう、といったものを挙げることができる。
図7には、アプリケーション・プログラムの構成例を模式的に示している。アプリケーション・プログラムは、例えば図1中の開発装置200上で(すなわち、開発ツール・プログラムを用いて)開発される。
アプリケーション・プログラムは、1又はそれ以上の定義動作と、1又はそれ以上の行動計画を含んでいる。定義動作並びに行動計画はいずれも、自律動作装置100の制御プログラムである。
定義動作は、ハードウェアのうち、モータなどに代表されるアクチュエータのコントローラに対して指示する目標値からなり、「モーション」とも呼ばれる。1つの定義動作が、ある時点においてコントローラに対して指示する目標値のみからなる場合や、ある区間においてコントローラに対して時系列的に指示する一連の目標値からなる場合がある。後述するように、本実施形態では、定義動作はキーフレーム(後述)を用いて作成されることを想定している。
また、定義動作は、コントローラに対して基本パラメータの設定を指示するプログラム及びデータでもある。パラメータの一例として、P(比例制御)、I(積分制御)、D(微分制御)が挙げられる。また、モータなど制御対象となるアクチュエータの特性に応じてコントローラ(プロセッサ)に設定することができるパラメータを、基本パラメータとして定義動作の中で設定することができる。
行動計画は、1又はそれ以上の定義動作の機能を呼び出すプログラム及びデータからなる。ロボットなどの自律動作装置100は、行動計画に従って呼び出された1又はそれ以上の定義動作を実行することによって、1つの「ビヘイビア」を実現する。
また、行動計画は、状況毎に起動すべき定義動作を取り決めることで、自律動作装置100の一連の動作を記述するプログラム及びデータである。例えば、定義動作を選択するための条件分岐をツリー構造の形式で記述する行動計画を挙げることができる。行動計画は、認識結果に応じて自律動作装置100を制御することから、環境(状況)認識に基づく行動制御プログラムに位置付けることができる。この意味で、行動計画は、広義のAI(人工知能)の機能の一部にも相当する。
アプリケーション・プログラムは、また、OS又はミドルウェアの機能を利用するためのプログラム及びデータを含むことができる。
アプリケーション・プログラムは、さらに、自律動作装置100の実機のアプリケーション機能を、外部から利用させるためのAPIを定義している。したがって、アプリケーション・プログラムの作成に利用した開発装置200や、ユーザ端末、サーバなどの外部装置は、実機が動作中あるいは試験動作中に、通信を介してAPIを呼び出すことによってアプリケーション・プログラムの機能を利用することができる。
また、アプリケーション・プログラムは、実機動作中に、行動計画又は定義動作のプログラム及びデータを学習によって変更させるためのプログラム及びデータを含むこともできる。
なお、図7に示すように、アプリケーション・プログラムは複数のコンポーネントで構成されるが、すべてのコンポーネントを一体化して1つのファイルで構成してもよいが、各コンポーネントをそれぞれ別のファイルとして構成してもよい。また、これらのファイルは、図2におけるクラウド・サーバ上の共有ストレージ、各自専用のストレージ(すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ)、あるいは専用サーバが備えるストレージなどに格納され、サーバなどのストレージに対するアクセス権を有する管理者、開発者、顧客、あるいはユーザによって共有することが可能であってもよい。
アプリケーション・プログラムは、アプリケーション・プログラムの開発者が、開発装置200上で開発ツール・プログラムを利用して作成することができる。開発ツール・プログラムは、コンパイラ、デバッガ、物理エンジンと連携した3Dグラフィックス・アニメーションなどの機能を備え、アプリケーション・プログラムの開発者はGUI画面上でこれらの機能の実行指示を行なうことができる。
また、本実施形態では、開発ツール・プログラムが物理エンジンと呼ばれる機能を備えていることを想定している。物理エンジンは、現実の自律動作装置100の動作を物理法則に基づく現象をコンピュータ上で再現する機能であり、自律動作装置100が持つ物理的な特性やさらには現実的な外部環境を考慮することによって、現実の実機と同様の動作を表す3Dグラフィックス・アニメーションを生成して、その結果を表示する。アプリケーション・プログラムの開発者は、3Dグラフィックス・アニメーションを見ながら実機の動作を検証し、さらにアプリケーション・プログラムの適切に修正することができる。
昨今、物理エンジンの精度は向上しており、自律動作装置100の実機動作を制御するアプリケーション・プログラムを、物理エンジンと3Dグラフィックス・アニメーションの機能を備えた開発ツール・プログラム上で動作させることにより、実機動作を仮想機械でより正確に再現することが可能になってきている。特に、高機能の物理演算を行なう物理エンジンが、実機のハードウェア(例えば、モータ・コントローラ)に相当する役割を果たすので、実機を用いることなく制御プログラムを検証することができるので、開発の効率が向上するとともに開発コストが低減する。また、このようにして作成された制御プログラムを含むアプリケーション・プログラムを、実機上で動作させたときに、実機上でも期待した動作を再現することができる。
このように実環境に近い物理現象を再現できる開発ツール・プログラムが利用可能な場合、実機に搭載されるハードウェアの力学的・電気的な特性などを開発対象となるアプリケーション・プログラムに反映させることが、以前にも増して意味を持つようになってきている。例えば、モータの制御においては、PID制御が使用されている。PID制御においては、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDが制御における特性を決定付けるパラメータであり、ハードウェアの動作を決める上で重要である。従来は、実機のモータ・コントローラのパラメータを、直接実機のプログラムの書き換えなどを行なうなどして調整する必要があった。一方、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムにおいて、KP、KI、KDのような制御パラメータを入力・変更できるようにすれば、開発ツール・プログラム上で制御パラメータなどを変更することにより、物理エンジンがこれらの制御パラメータを読み込んで計算を行ない、3Dグラフィックス・アニメーションを用いてディスプレイ上で表示することにより、実機において期待される動作の確認を容易に行なうことができる。このため、実機用のアプリケーション・プログラム開発の効率を大きく改善することができる。
実機の一例として、ロボット用のアプリケーション・プログラム(以下では、主として「制御プログラム」と称する)開発について説明する。従来からのロボット開発環境において、GUI画面などで、キーフレームを利用した定義動作の作成方法が用いられてきた。キーフレームの一例は、「X秒かけて関節をY度からZまで動かす」という定義動作である。しかしながら、ロボットの実際の物理的挙動は、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDのようなモータの制御パラメータや、モータのハードウェア特性に影響を受けてしまう。このため、開発ツール・プログラムにおいて、仮想機械を用いて、実機動作をより正確に再現するには、例えば、ロボットを構成する1つの関節などの可動部の動きを離散時間的に指定するキーフレームの情報だけでなく、モータの制御パラメータ並びにハードウェアの特性値を考慮して、時間的に連続して物理演算を実行することで、キーフレームの動作を、物理現象を考慮して補間する必要がある。但し、モータの制御パラメータやハードウェア特性値はロボット毎に異なる情報であるため、従来の開発環境ではこれらの情報を簡易に確認することが可能でない。
そこで、本明細書では、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムを用いて制御プログラムを開発する際に、制御対象とする自律動作装置100(ロボットなど)の実機上のハードウェア特性や制御パラメータを開発者が容易に入力・変更することができる手段を提供する技術について、以下で提案する。このような手段が提供された開発環境では、実機のハードウェア特性や制御パラメータを考慮した制御プログラムを開発し、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラム上での物理現象の再現が可能となり、実機動作をより正確に把握することができる。
開発者は、上記開発環境において入力・変更した制御パラメータが、所定の動作を実現するには有用であるかどうかを、開発ツール・プログラム上で動作する物理エンジンと3Dグラフィックス・アニメーションを通じて確認することができる。そこで、本明細書では、所定の動作を実現する上で有用であると開発者が判断する制御パラメータを、実機動作の際に選択することができるように開発環境において記録しておく手段を提供する技術についても、以下でさらに提案する。したがって、記録された制御パラメータを、開発ツール・プログラムを通じて開発された制御プログラムとともに実機に搭載して、実機の動作選択に利用することができる。
また、本明細書では、各可動部の角度などの目標値を指定するキーフレームのデータ集合からなる定義動作の開発環境において、キーフレームのモータ制御を物理エンジンによって提供される物理演算と併せて実施する方法についても、以下で提案する。このような物理エンジンと3Dグラフィックス・アニメーションを用いて制御プログラムを開発する方法によれば、キーフレームを用いて作成した定義動作による現実世界の挙動を、実機を用いることなく確認することができる。したがって、単一の開発環境で、開発者は、定義動作(若しくは定義動作に含まれるキーフレーム)を簡易に作成することができ、且つ、現実世界での挙動確認を行なうことができるようになる。
本明細書で提案する開発環境下で開発された制御プログラム(アプリケーション・プログラム)には、モータの制御パラメータのような、ハードウェア・コンポーネント毎のコントローラ特性データ集合を含めることができる(ハードウェア・コンポーネントは、図1中の各モジュール部120に相当)。開発者は、制御プログラムの作成・編集の過程で、モータの制御パラメータのような、ハードウェア・コンポーネント毎のコントローラ特性データを入力したり、開発ツール・プログラム上で動作する制御プログラムが表示する3Dグラフィックス・アニメーションを見て変更したりすることができる。
図8には、本明細書で提案する方法に従って開発ツール・プログラム上で開発された制御プログラムを含むアプリケーション・プログラムのプログラム及びデータを実機にインストールする際の処理手順をフローチャートの形式で示している。ここでは、図1中の開発装置200で開発した制御プログラムを含むアプリケーション・プログラムを、自律動作装置(実機)100へインストールする場合を想定している。開発ツール・プログラムが、実機上で動作するOS(ミドルウェアを含む)と同じAPIを提供するライブラリなどを装備することにより、実機には、開発ツール・プログラムで開発されたものと同じ制御プログラムを含むアプリケーション・プログラムをインストールすることができる。
開発装置200のメモリ213からUSBポート214などを介して、実機100に、アプリケーション・プログラムをアップロードする(ステップS801)。アプリケーション・プログラムは行動計画の集合並びに定義動作の集合などのプログラム(図7を参照のこと)と、ハードウェア・コンポーネント(モジュール部)毎のプロセッサ111用の制御パラメータ(例えば、モータ・コントローラ用のPIDデータなど)のデータ集合を含む。
実機100側では、開発装置200からアップロードしたアプリケーション・プログラムを、本体部110内のメモリ112内に格納する(ステップS802)。そして、アプリケーション・プログラムに記述されている、各モジュール部120用の制御パラメータの初期値を、アクチュエータ121(モータなど)をコントロールするプロセッサ122(モータ・コントローラなど)に設定して(ステップS803)、本処理ルーチンを終了する。
図9には、アプリケーション・プログラムに含まれる行動計画並びに定義動作の各データ・ファイルの構成例を模式的に示している。同図では、説明の便宜上、ファイル内のデータを、特定のプログラム言語に依らない、自然言語の形式で記述している。但し、図示するようなデータ・ファイルを、何らかのプログラム言語を用いてコーディングできることは、当業者であれば容易に理解できることである。
行動計画のデータ・ファイル901は、定義動作を選択するための条件分岐をツリー構造の形式で記述したデータの集合である。図9に示す例では、IF文(IF 状況=「人を検出」 then 「寝そべる」、IF 状況=「人がいない」 then 「歩き回る」)の形式で、定義動作を選択するための条件を記述している。なお、図9では、説明の便宜上、簡単なIF文からなる行動計画901のデータを示しているが、入れ子構造などを含んだ複雑な条件文になってもよい。
定義動作のデータ・ファイル902は、行動計画901において使用する複数の定義動作のデータ集合とともに、ハードウェア・コンポーネント毎の制御パラメータの初期値を含んでいる。図9に示す例では、定義動作データ・ファイル902は、制御パラメータの初期値として、モータ1用のPIDパラメータ値(P=X1,I=Y1、D=Z1)と、モータ2用のPIDパラメータ値(P=X2,I=Y2,D=Z2)を含んでいる。
また、図9に示す例では、定義動作データ・ファイル902は、「歩き回る」、「寝そべる」、「停止する」の定義動作のデータを含んでいる。各定義動作のデータは、キーフレームのデータセットと、ハードウェア・コンポーネント毎の制御パラメータ(例えば、モータ・コントローラに設定すべきPIDパラメータ)からなる。
キーフレームは、各モジュール部120に設定する目標値(例えば、アクチュエータ121としてのモータに対する回転位置や回転角度などの目標値)のデータからなる。1つの定義動作は、1又は複数のキーフレームのデータ集合からなる。
また、定義動作で指定する制御パラメータは、その定義動作で設定すべき制御パラメータである。後述するように、本実施形態では、定義動作などの制御プログラムの開発過程で、物理エンジンの演算結果と3Dグラフィックス・アニメーションの表示結果などに基づいて最適な制御パラメータを導出することができ、プログラムの開発者は定義動作毎の最適な制御パラメータを、定義動作内に記述することができる。なお、定義動作「停止する」のキーフレーム・データ及びコントローラ特性データはともにNULLとする。NULLは初期値であってもよい。
図10には、アプリケーション・プログラムを自律動作装置(実機)100上で動作させる際(すなわち、実機動作)の処理手順をフローチャートの形式で示している。実機100の本体部110のメモリ112には、図9に示したような、行動計画の集合並びに定義動作の集合からなるアプリケーション・プログラムがアップロードされているものとする。
実機100の電源を投入すると(ステップS1001)、プロセッサ111は、メモリ112から行動計画のデータ・ファイルを読み出す(ステップS1002)。
行動計画は、環境情報に応じて定義動作を選択するための条件分岐を記述している。プロセッサ111は、各モジュール部120のセンサ123の検出結果などに基づいて認識される環境情報に応じて、行動計画に従って、定義動作を選択する。そして、プロセッサ111は、選択した定義動作を実行するために必要とされるキーフレーム及び制御パラメータなどのデータをメモリ112から読み出す(ステップS1003)。
ここで、プロセッサ111は、定義動作実行のために読み出した制御パラメータがNULLか否かをチェックする(ステップS1004)。制御パラメータがNULLでない場合には(ステップS1004のNo)、プロセッサ111は、読み出した制御パラメータを、該当するモジュール部120のプロセッサ122に設定する(ステップS1005)。また、制御パラメータがNULLのときには(ステップS1004のYes)、設定処理(すなわち、制御パラメータの最適化)が不要なので、ステップS1005をスキップする。
そして、実機100上では、定義動作が実施される(ステップS1006)。各モジュール部120では、定義動作に適した制御パラメータ(モータの制御パラメータなど)を設定してから、定義動作で指示される目標値への駆動制御を行なうことができる。
図11には、図10に示したフローチャート中のステップS1006で実施される、定義動作を実行するための詳細な処理手順をフローチャートの形式で示している。
まず、プロセッサ111は、メモリ112から定義動作のデータを読み出し、次のキーフレームで指定されている各モジュール部120の目標値(例えば、モータの回転角度)を取得する(ステップS1101)。
次いで、プロセッサ111は、取得した目標値を各モジュール部120に転送して、各モジュール部120のプロセッサ122に目標値を入力する(ステップS1102)。例えば、モータ・コントローラに、モータの回転角度の目標値を入力する。
次いで、各モジュール部120では、プロセッサ122が、入力された目標値に従って、アクチュエータ121を駆動する(ステップS1103)。例えば、モータ・コントローラは、回転角度の目標値に従って、モータを駆動する。
そして、定義動作に含まれるすべてのキーフレームを実行し終わるまで(ステップS1104のNo)、上記の処理が繰り返し実施される。
図12には、本明細書で提案する、制御対象となる自律動作装置100の定義動作を作成するとともに検証するための開発装置1200の機能的構成を模式的に示している。ここでは、自律動作装置100として、ロボットのような、関節部などのモータで駆動する可動部を備えた実機を想定している。また、開発装置1200は、例えば図1中の開発ツール・プログラムを実行する開発装置200に相当し、図12に示した各機能ブロックは例えば開発ツール・プログラムに含まれるソフトウェア・モジュールとして実装される。
図示の開発装置1200は、開発者において制御対象の定義動作をキーフレームの形式で編集するモーション編集部1210と、入力又は設定された制御パラメータに基づき、入力されるキーフレームに従ってモータ・コントローラによる制御出力を計算するモータ制御出力部1220と、モータを駆動させたときの物理的な挙動を計算する物理エンジンのプログラム実行呼び出しAPIを通じて物理演算を行なう物理演算部1230を備えている。
モーション編集部1210は、制御対象のキーフレームを作成する。モーション編集部1210は、ロボットなどの制御対象の各可動部の関節角などの目標値を指定するためのGUIを開発者に提示して、開発者によりGUIを介した指示を通じてキーフレームを作成し、所定のメモリ(図示しない)上に、所定の形式(例えば、図18(後述)に示す定義動作における「キーフレーム・データ」の形式)で格納する。
キーフレームを作成するためのGUIの画面構成は任意である。キーフレームは、ある区間の動作の開始時並びに終了時などおける可動部の位置や速度といった目標値を指定するデータの集合である。例えば、キーフレーム毎の各可動部の目標値を入力するGUIでもよい。また、制御対象の3Dモデルを利用して、頭部や左右の手足などの特定の部位における位置や姿勢を指定し、IK(インバース・キネマティクス)演算を利用してキーフレームを作成する方法を適用してもよい。
また、モーション編集部1210は、GUIを介して、制御対象の各可動部を駆動するモータの制御パラメータ及びモータのハードウェア特性値の入力を受け付けて、所定のメモリ(図示しない)上に、所定の形式(例えば、図18(後述)に示す定義動作における「制御パラメータデータセット1」などの形式)で保持しておく。また、モーション編集部1210は、制御対象の実機のハードウェア特性値を記述した3Dモデル・データの入力も受け付けて、所定のメモリ(図示しない)上に保持しておく。モータの制御パラメータ及びモータのハードウェア特性値の入力を行なうGUI画面構成は任意である。
モータ制御出力部1220は、制御対象の各可動部における関節角などの目標値からなるキーフレーム、モータの制御パラメータ及びモータのハードウェア特性値などを所定のメモリ(前述)から読み出して、各可動部を駆動するモータが出力する力若しくはトルクを演算により算出する。次いで、物理演算部1230は、物理演算により得られたモータの力若しくはトルクに基づいて、各可動部の関節角度などの現在値を算出する。
そして、物理演算部1230の算出した各可動部の現在値に基づいて制御対象の現在の姿勢を3Dグラフィックスにより描画して、ディスプレイに表示出力することができる。例えば、所定のフレームレートで制御対象の現在姿勢を算出して描画処理を行なうことにより、キーフレームの形式で編集した定義動作に基づいて駆動させたときの制御対象の挙動のアニメーションを表示することができる。したがって、開発者は、アニメーションを見て、自分が編集した定義動作を確認することができる。
本実施形態に係る開発装置1200の特徴として、モータ制御出力部1220には、各可動部を駆動するモータ自体の特性値や、モータの制御方式に応じた制御パラメータをあらかじめ入力又は設定しておく(例えば、モーション編集部1210にて入力しておく)。また、物理演算部1230には、定義動作による制御対象となる実機のハードウェア上の特性値をあらかじめ入力又は設定しておく。また、モータ制御出力部1220による演算を、物理演算部1230の演算と併せて行なう。
モータ制御出力部1220と物理演算部1230は単一のアプリケーション・プログラム内の各ソフトウェア・モジュールとして構成される(ソフトウェア・モジュールには物理エンジンなど、開発ツール・プログラムが備えるソフトウェア・モジュールは含まず、APIにより物理エンジンなどの機能の呼び出しを行なう)。「単一のアプリケーション・プログラム内の各ソフトウェア・モジュールとして構成される」とは、開発ツール・プログラム上で、1つのアプリケーション・プログラムの動作に従って、モータ制御出力部1220がキーフレーム、ハードウェア特性値及び制御パラメータに基づいて計算したモータの制御出力を用いて物理演算部1230においてAPIで呼び出される演算を行なうことを意味する。また、上記のモータ自体の特性値やモータの制御パラメータ、制御対象となる実機のハードウェア特性値を同一の開発ツール・プログラム内でGUIを用いて設定することができる。
ここで、モータの制御方式に応じた制御パラメータは、例えば、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDである。もちろん、実機で採用するモータの制御方式に応じて、PID以外の制御パラメータとなる。また、モータのハードウェア特性値とは、例えば、モータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能(モータ軸)(P/R)、検出器(エンコーダ)、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量などである。これらのモータの制御パラメータや特性値を、設定ファイルなどの形式でツール内(開発装置1200)に取り込むことができる。また、定義動作の編集過程などにおいて、開発者がモータの制御パラメータを設定し又は変更するためのGUIを提供するようにしてもよい。
また、実機のハードウェア特性値は、上述したモータのハードウェア特性値の他には、例えば、各アームや関節モータなどの各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数などである。これらの実機(モータなど)ハードウェア上の特性値は、実機を模した仮想機械の3Dモデルとともに、データを記述した所定のファイルの形式で、ツール内(開発装置1200)に取り込むようにしてもよい。また、開発ツール・プログラム上で提供される所定のGUIを用いて、3Dモデルのモデリング(データ作成)を行なうとともに、ハードウェア上の特性値を入力又は編集するようにしてもよい。さらに、3Dモデルとハードウェア特性値は、別々に管理されてもよい。所定のフォーマットで提供される実機のハードウェア特性値と3Dモデルをファイルに格納し、ファイル名などのファイルの識別情報(ID)とともに、例えば、図2に示すクラウド・サーバ上の共有ストレージにおいて、データベース上で共有可能な情報として管理することができる。別の実施形態においては、ハードウェア特性値と3Dモデルは別々のファイルに格納して管理してもよい。また、各開発メーカーあるいは商取引のための情報提供者が、それぞれの保有する商取引用データベースにおいて、これらの共有可能な情報(すなわち、3Dモデルやハードウェア特性値など、開発ツール・プログラム上で利用可能な電子的なファイルとして管理される情報)を、メーカー名、型番、あるいはハードウェアのタイプ(モータ・タイプ(ステッピング・モータ、DCモータ、超音波モータなど)やセンサのタイプ(CMOSイメージ・センサ、CCDイメージ・センサ、測距イメージ・センサ、InGaAsイメージ・センサ、アンプ付フォトダイオード・アレイ、X線イメージ・センサなど)など)とともに管理し、ユーザや開発者などの情報取得者や購入者のための閲覧情報にすることで、オンラインの取引対象として提供するようにすることもできる。
図13には、モータ制御出力部1220と物理演算部1230の各々の内部動作を詳細に示している。
モータ制御出力部1220は、モーション編集部1210で編集されたキーフレームのデータとして、モータの目標値(関節角度)を物理演算部1230に入力する。モータ制御出力部1220は、物理演算部1230から演算結果として変更されたモータの現在値を受け取り、目標値と現在値の偏差を求めるように構成されている。そして、モータ制御出力部1220は、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDの各々に基づくP制御入力、I制御入力、D制御入力を合算して、モータへの制御入力値を得ると、この制御入力値に対するモータの出力値として力若しくはトルクを計算する。但し、実機で採用するモータの制御方式に応じて、PID計算以外のロジックに変更することができる。そして、モータ制御出力部1220は、モータが持つ力学的又は電気的なハードウェア特性値(前述)のうち有意なものがあれば、出力値に対して修正などの処理を施す。
物理演算部1230は、アームや関節モータなどの各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数といったハードウェア上の特性値を考慮して、モータ制御出力部1220で算出された出力値(力若しくはトルク)に基づいて、モータを駆動させたときの実機の物理的な挙動に相当する計算を行なうようにAPIを通じて物理エンジンに指示する。物理演算には、開発ツール・プログラムに組み込まれたライブラリを使用してもよいし、インターネットなどを通じて入手可能な外部ライブラリを組み込んで使用してもよい。また、物理演算部1230によって計算されたモータの現在値は、モータ制御出力部1220にフィードバックされる。
そして、物理演算部1230の算出した各可動部の現在値に基づいて、制御対象の現在の姿勢を描画処理して、ディスプレイに表示出力することができる。例えば、所定のフレームレートで制御対象の現在姿勢を算出して描画処理を行なうことにより、編集した定義動作に基づいて駆動させたときの制御対象の挙動の3Dグラフィックス・アニメーションを表示することができる。
開発者は、開発ツール・プログラム上でアプリケーション・プログラムを実行することによって再現される仮想機械の3Dグラフィックス・アニメーションを見て、自分が編集した定義動作を確認することができる。例えば、制御対象の挙動が、開発者が定義動作編集時に描いていたイメージとは異なる場合や、制御対象が転倒したり障害物と衝突したりしている場合には、モーション編集部1210において、キーフレームを変更するようにして、制御対象がイメージ通りの挙動となり、又は転倒や衝突を回避できるような定義動作を作成することができる。
また、開発者は、物理演算を実施した結果として得られる制御対象のアニメーションを観察しながら、動的にモータの目標値を更新することで、制御対象の挙動をリアルタイムで変更・再現・確認することができる。
また、開発者は、物理演算結果などに応じてキーフレームを修正する際に、モータの目標値を修正するだけでなく、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDといったモータの制御パラメータ値の変更も行ない、適切な制御パラメータを設定するようにすることもできる。図9を参照しながら既に説明したように、定義動作毎に制御パラメータを指定することができる。また、定義動作が複数のキーフレームで定義される場合には、開発者は、キーフレーム毎に適切な制御パラメータを指定できるようにしてもよい(後述)。
定義動作の編集が完了した際には、当該定義動作を実行する際のモータの最適な制御パラメータ値を定義動作に組み込んで取り出すことができる。図9に示したアプリケーション・プログラムの構成例では、定義動作のデータ・ファイル内に、制御パラメータの初期値と、定義動作毎の制御パラメータが記述されている。もちろん、定義動作データに紐付けされた別のファイル(属性ファイルなど)として制御パラメータを取り出すようにしてもよい。
そして、図8に示したアプリケーション・プログラムのインストール処理手順でも説明したように、アプリケーション・プログラムを実機100にインストールした際には、行動計画を実行する際の制御パラメータの初期値が各モジュール部120に設定される。また、図10に示したアプリケーション・プログラムの実機動作の処理手順でも説明したように、行動計画に従って定義動作を選択する度に、その定義動作で指定されている制御パラメータが各モジュール部120に設定される。したがって、実機100上では、モータ・コントローラ122は、開発ツール・プログラムにおいて定義動作との組み合わせで動作が確認された制御パラメータを用いて、定義動作で指定される目標値に従ってモータ121をコントロールすることができるので、物理開発ツール・プログラムで動作確認を行なった結果と同様の期待する挙動を実機で再現することができる。
図14には、図12並びに図13に示したモータ制御出力部1220及び物理演算部1230における処理との比較として、現実のモータの制御ブロック図を示している。
モータ・コントローラは、キーフレームで指定されるモータの目標値(関節角度)を入力するとともに、例えばモータの出力軸側に設置されたエンコーダーで計測されるモータの現在値を入力すると、目標値と現在値の偏差を求める。そして、モータ・コントローラは、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDの各々に基づくP制御、I制御、D制御を合算して、モータに対する制御入力となる電圧値又は電流値を計算する。モータは、モータ・コントローラが算出した電圧値又は電流値が供給されることにより駆動すると、モータ自身の力学的・電気的特性に応じた力若しくはトルクを出力する。現実世界では、モータの出力と周囲環境との相互作用が発生し、モータの現在値がエンコーダーなどのセンサにより測定される。
図15には、開発装置200において、開発したアプリケーション・プログラムを物理エンジンと3Dグラフィックス・アニメーション機能を含む開発ツール・プログラム上で実行するための処理手順をフローチャートの形式で示している。開発されたアプリケーション・プログラムによる仮想機械の挙動は、図12に示したモータ制御出力部1220及び物理演算部1230といったソフトウェア・モジュールにより再現される。
ここで、アプリケーション・プログラムは、図9に示したような行動計画データ・ファイルと定義動作データ・ファイルを含むが、開発装置200のメモリ213に既に格納されているものとする。開発装置200は、開発ツール・プログラムにおいて、自律動作装置100の実機のモータ121などの代わりに、物理エンジンを使って3Dグラフィックス空間中で動作する仮想機械を使用する。仮想機械は、3Dグラフィックス・アニメーション用のデータを含むコンピュータ・プログラム及びデータからなる(前述)。仮想機械は、実機(自律動作装置100)の各モジュール部120に対応するソフトウェア・コンポーネント(実機にダウンロードされた場合に、各ハードウェア・コンポーネントのプロセッサ(実機において1つのプロセッサで処理される場合には当該1つのプロセッサ)で動作する制御プログラム又はその一部に相当する)をアプリケーション・プログラム中に備えるものとする。
まず、プロセッサ211は、定義動作データ・ファイルで指定されているハードウェア・コンポーネント毎の制御パラメータの初期値をメモリ213から読み出して、仮想機械を構成する各モータを駆動制御するモータ・コントローラ(ソフトウェア・コンポーネント内のメモリ領域)に設定する(ステップS1501)。
次いで、プロセッサ211は、メモリ213から行動計画のデータ・ファイルを読み出す。行動計画は、環境情報に応じて定義動作を選択するための条件分岐を記述している。プロセッサ211は、想定される仮想環境などに応じて、行動計画に従って、定義動作を選択する。そして、プロセッサ211は、選択した定義動作を実行するために必要とされるキーフレーム及び制御パラメータなどのデータをメモリ213から読み出す(ステップS1503)。
ここで、プロセッサ211は、定義動作実行のために読み出した制御パラメータがNULLか否かをチェックする(ステップS1504)。制御パラメータがNULLでない場合には(ステップS1504のNo)、プロセッサ211は、読み出した制御パラメータを、該当するソフトウェア・コンポーネントのコントローラに設定する(ステップS1505)。また、制御パラメータがNULLのときには(ステップS1504のYes)、設定処理(すなわち、制御パラメータの最適化)が不要なので、ステップS1505をスキップする。
そして、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムを用いて、仮想機械による定義動作が実施される(ステップS1506)。各ソフトウェア・コンポーネントでは、定義動作で指定された制御パラメータ(モータの制御パラメータなど)を設定してから、定義動作で指示される目標値への駆動制御を行なうことができる。
図16には、図15に示したフローチャート中のステップS1506で実施される、物理エンジンと3Dグラフィックス・アニメーション機能を備えた開発ツール・プログラムを用いた、仮想機械による定義動作を実現するための詳細な処理手順をフローチャートの形式で示している。
なお、定義動作の処理実行中は、開発者が各モジュール部のアクチュエータ(モータなど)の目標値や、アクチュエータの駆動を制御するプロセッサ(モータ・コントローラなど)に設定する制御パラメータ(PIDパラメータなど)を随時修正入力するためのGUIが提示されているものとする。また、このようなGUIを介して入力された目標値や制御パラメータはメモリ213上で適宜書き換えられ、開発ツール・プログラム上で動作するアプリケーション・プログラムは、開発ツール・プログラムが提供するAPIを通じて、修正後の最新の目標値並びに制御パラメータを所定のメモリ(前述)から読み出すことができ、更新されたデータを用いて定義動作の処理を実行するものとする。
まず、プロセッサ211は、メモリ213から定義動作のデータを読み出し、次のキーフレームで指定されている各ソフトウェア・コンポーネントの目標値(例えば、モータの回転角度)を取得する(ステップS1601)。
また、プロセッサ211は、メモリ213から、各ソフトウェア・コンポーネントに指定されている制御パラメータを読み出す(ステップS1602)。
そして、プロセッサ211は、上述したモータ制御出力部1220に相当する処理として、各ソフトウェア・コンポーネントにおけるモータの目標値と現在値の偏差を求め、比例ゲインKP、積分ゲインKI、並びに微分ゲインKDなどの制御パラメータに基づいてモータに対する制御入力値を得ると、モータの出力値として力若しくはトルクを計算し、計算結果を物理演算部1230に出力する(ステップS1603)。
なお、このモータ制御用出力計算に際して、モータのハードウェア特性値も考慮する。モータのハードウェア特性値は、例えば、モータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能(モータ軸)(P/R)、検出器(エンコーダ)、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量などである。
次いで、プロセッサ211は、上述した物理演算部1230の処理として、モータ制御出力部1220からモータの出力値を入力すると、アームや関節モータなどの各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数といった実機のハードウェア上の特性値を考慮して物理エンジンにより演算させることにより(ステップS1604)、実機の物理的な挙動を算出する。
ステップS1604の物理演算には、開発ツール・プログラムに組み込まれたライブラリを使用してもよいし、インターネットなどを通じて入手可能な外部ライブラリを組み込んで使用してもよい。また、物理演算部1230によって計算されたモータの現在値は、モータ制御出力部1220にフィードバックされる。
そして、物理演算部1230の算出した各可動部の現在値に基づいて、制御対象の現在の姿勢を描画処理して、実機の3Dグラフィックス・アニメーションをディスプレイに表示出力する(ステップS1605)。物理エンジンによる演算結果の描画は、毎キーフレーム行なってもよいが、数キーフレーム間隔で行なうようにしてもよい。開発者は、物理エンジンの演算により再現される仮想機械の3Dグラフィックス・アニメーションを見て、自分が編集した定義動作が期待したものかどうかなどについて確認することができる。
定義動作の処理を実行中、各ソフトウェア・モジュール部のアクチュエータ(モータなど)の目標値や、アクチュエータの駆動を制御するプロセッサ(モータ・コントローラなど)に設定する制御パラメータ(PIDパラメータなど)を随時修正入力するためのGUIが提示されている(前述)。開発者は、このようなGUIを介して入力された目標値や制御パラメータを適宜修正することができる。また、モータの制御パラメータや目標値を書き換えた内容が開発ツール・プログラム上で動作するアプリケーション・プログラムの処理にリアルタイムで反映される。
開発者から停止操作が行なわれるなどの停止指示があるまで、又は、定義動作に含まれるすべてのキーフレームを実行し終わるまで(ステップS1606のNo)、モータ制御出力部1220及び物理演算部1230による定義動作の処理が継続して実施される。
開発者は、開発ツール・プログラム上で動作するアプリケーション・プログラムによる仮想機械の処理結果を確認して、満足する定義動作の編集が完了すると、アプリケーション・プログラムの停止指示を行ない(ステップS1606のYes)、これによってモータ制御出力部1220及び物理演算部1230を含むアプリケーション・プログラムを停止して、本処理が終了する。定義動作の編集が完了した際には、モータなどアクチュエータの制御パラメータ値を定義動作のデータ・ファイルに組み込んで取り出される。もちろん、定義動作のデータ・ファイルに紐付けされた別のファイルとしてアクチュエータの制御パラメータを取り出すようにしてもよい。
上記のような開発ツール・プログラム上で動作するアプリケーション・プログラムの定義動作の処理を実行中、各モジュール部のアクチュエータの目標値や、アクチュエータの駆動を制御するプロセッサに設定する制御パラメータを随時修正入力するためのGUIが提示されている(前述)。開発者は、このようなGUIを介して入力された目標値や制御パラメータを適宜修正することができ、また、修正した内容は、開発ツール・プログラム上で動作するアプリケーション・プログラムの処理にリアルタイムで反映される。
図16には、定義動作の処理を実行中に、GUIを通じて開発ツール・プログラムに制御パラメータや定義動作の目標値の修正結果を、GUIを通じて入出力するための処理手順のフローチャートを併せて示している。
定義動作の処理を実行中に、GUIを介して制御パラメータの修正入力が行なわれると(ステップS1611のYes)、修正入力された制御パラメータをメモリ213上の該当するアドレスに書き込む(ステップS1612)。
また、定義動作の処理を実行中に、GUIを介して定義動作の目標値の修正入力が行なわれると(ステップS1613のYes)、修正入力された制御パラメータをメモリ213上の該当するアドレスに書き込む(ステップS1614)。
したがって、本開発環境では、モータの制御パラメータや目標値を書き換えた内容が開発ツール・プログラム上で動作するアプリケーション・プログラムの処理にリアルタイムで反映されるので、開発者は制御パラメータや定義動作目標値を修正した直後の実機の動作を確認することができる、という点を十分理解されたい。
図9に示した定義動作のデータ・ファイルでは、定義動作毎に一組の制御パラメータだけを指定するデータ・フォーマットとなっている。また、図10に示したアプリケーション・プログラムの実機動作処理では、行動計画に従って定義動作が選択されたときには、最初に1回だけ各モジュール部に制御パラメータを設定するという処理手順となっている。言い換えれば、1つの定義動作の中では一組の制御パラメータしか指定されず、途中で制御パラメータを変更することは想定されていない。
上記の変形例として、図17に示すように、定義動作を実行する途中で制御パラメータを変更できるようにしてもよい。具体的には、複数のキーフレームからなる定義動作において、キーフレーム毎に制御パラメータを指定できるデータ・フォーマットにしてもよい。このようにすれば、1つの定義動作内でも、キーフレーム毎に関節が柔らかい動きとなる制御パラメータ、硬い動きとなる制御パラメータを指定することができる。また、実機がこのような定義動作を実行すると、経過時間に応じて、関節が軟らかい動きから硬い動きに移行していくという動作を実現することができる。
図18には、キーフレーム毎に制御パラメータを指定することができる定義動作のデータ・フォーマット例1800を示している。各キーフレームは、関節目標値を指定するデータセットと、制御パラメータを指定するデータセットを含んでいる。
また、1つの定義動作内でも、ハードウェア・コンポーネント毎に制御パラメータを設定するタイミングを個別に指定することができるようにしてもよい。図18に示す例では、例えば定義動作「歩き回る」において、モータ1の制御パラメータを設定する時刻をT1に指定し、モータ2の制御パラメータを設定する時刻をT2に指定している。なお、同図中、定義動作「寝そべる」において、実機のコントローラに制御パラメータの初期値が設定したい場合には、制御パラメータにNULLを指定すればよい。制御パラメータの初期値は、定義動作データ・ファイル1800の冒頭に記述されている。
このように本明細書で開示する技術によれば、ロボットを始めとする自律動作装置用の制御プログラムの開発環境において、モータの制御パラメータやモータの特性値、実機のハードウェア特性値を入力・変更するための手段を提供することにより、実機のハードウェア特性を反映した高い精度の物理エンジンを利用して定義動作の修正・変更を行なうことが可能になる。
また、本明細書で開示する技術によれば、実環境に近い物理現象を再現可能な物理エンジンと3Dグラフィックス・アニメーションの機能を備えた開発ツール・プログラムを用いて制御プログラム(アプリケーション・プログラム)を開発する際に、開発ツール・プログラム上で制御プログラムを動作させるために入力又は設定し、利用したモータの制御パラメータなどのハードウェア特性情報を記録しておき、記録されたハードウェア特性情報を制御プログラムとともに実機に搭載することができる。したがって、実機上では、モータ・コントローラは、開発ツール・プログラム上で制御プログラムとの組み合わせで動作が確認された制御パラメータを用いて、制御プログラムに従ってモータをコントロールすることができるので、開発ツール・プログラム上での結果と同様の期待する挙動を実機で再現することができる。また、実機上では、開発ツール・プログラム上で制御パラメータとの組み合わせで動作が確認された複数の制御プログラムを適宜選択して利用することができるようになる。したがって、本明細書で開示する技術によれば、行動計画プログラムを開発すると同時に、その行動計画において呼び出される定義動作に適合するハードウェア特性の開発も実現できるという効果がある。
また、本明細書で開示する技術によれば、キーフレームを用いて作成した各可動部の角度などの目標値と、モータの制御パラメータなどのハードウェア特性をともに入力することができる開発環境を提供することにより、モータ制御のプログラム開発と物理演算と3Dグラフィックス・アニメーションによる動作確認を併せて行なうことが可能になる。以って、作成した定義動作による現実世界の挙動を、実機を用いることなく確認することができるという効果がある。したがって、本明細書で開示する技術によれば、単一の開発環境で、定義動作のような簡易な制御プログラムの作成を、制御パラメータなどをリアルタイムに修正しながら行なうとともに、実環境に近い物理現象を再現できる物理エンジンと3Dグラフィックス・アニメーションを備えた開発ツール・プログラム上でアプリケーション・プログラムを開発することにより、実機を用いることなく、実機の動作に近い動作確認を実施することができるという効果がある。
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
本明細書で開示する技術は、ロボットや自動走行車、無人航空機(ドローン)などの自律動作装置の自律的若しくは適応的な行動を実現するアプリケーション・プログラムの動作の評価・検証に利用することができる。また、本明細書で開示する技術は、行動計画を用いて動作を制御する、ビデオ・ゲームのキャラクターのAI開発に対しても適用することができる。
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
(1)制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理装置であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持部と、
前記第1の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、
算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部と、
を具備する情報処理装置。
(2)前記制御出力部は、前記第1の保持部が保持する前記制御パラメータを用いて前記目標値と前記可動部の現在値の偏差に応じた制御入力値を計算するとともに、前記制御入力値に対する前記第1の保持部が保持する前記特性値に応じた前記可動部の出力値を計算する、
上記(1)に記載の情報処理装置。
(3)前記第1の保持部は、前記可動部の制御方式に応じて、比例ゲイン、積分ゲイン、又は微分ゲインのうち少なくとも1つの制御パラメータを保持する、
上記(1)又は(2)のいずれかに記載の情報処理装置。
(4)前記第1の保持部は、前記可動部を駆動するモータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能(モータ軸)(P/R)、検出器(エンコーダ)、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量のうち少なくとも1つの特性値を保持する、
上記(1)乃至(3)のいずれかに記載の情報処理装置。
(5)前記制御対象装置の特性値を保持する第2の保持部をさらに備え、
前記物理演算部は、前記第2の保持部が保持する前記特性値を用いて、前記制御対象装置に物理挙動を実行させる、
上記(1)乃至(4)のいずれかに記載の情報処理装置。
(6)前記第2の保持部は、前記制御対象装置を構成する各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数のうち少なくとも1つを保持する、
上記(5)に記載の情報処理装置。
(7)前記第1の保持部に保持する前記可動部の制御パラメータ又は前記可動部の特性値を取得する第1の取得部をさらに備える、
上記(1)乃至(6)のいずれかに記載の情報処理装置。
(8)前記第1の取得部は、前記制御プログラムの設定ファイルから前記可動部の制御パラメータ又は前記可動部の特性値を取得する、
上記(7)に記載の情報処理装置。
(9)前記第1の取得部は、ユーザの入力操作に応じて前記可動部の制御パラメータを取得する、
上記(7)又は(8)のいずれかに記載の情報処理装置。
(10)前記第2の保持部に保持する前記制御対象装置の特性値を取得する第2の取得部をさらに備える、
上記(5)乃至(9)のいずれかに記載の情報処理装置。
(11)前記第2の取得部は、前記制御対象装置の3次元モデルを記述したファイルから前記制御対象装置の特性値を取得する、
上記(10)に記載の情報処理装置。
(12)ユーザの入力操作に応じて前記制御プログラムを修正又は変更する編集部をさらに備える、
上記(1)乃至(11)のいずれかに記載の情報処理装置。
(13)前記物理演算部による物理挙動の計算を経た前記制御プログラムを出力する出力部をさらに備える、
上記(1)乃至(12)のいずれかに記載の情報処理装置。
(14)前記出力部は、前記第1の保持部に保持されている少なくとも一部の情報を組み込んだ前記制御プログラムを出力する、
上記(13)に記載の情報処理装置。
(15)前記出力部は、前記制御プログラムとは別ファイルで前記第1の保持部に保持されている少なくとも一部の情報を出力する、
上記(13)に記載の情報処理装置。
(16)制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理方法であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持ステップと、
前記第1の保持ステップにより保持される前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力ステップと、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算ステップと、
を有する情報処理方法。
(17)制御対象装置の可動部に対する目標値を含む制御プログラムに対する処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持部、
前記第1の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に対する前記可動部の出力値を計算する制御出力部、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算部、
として機能させるコンピュータ・プログラム。
(18)可動部を有する制御対象装置を制御プログラムに従って制御するための処理を実施する情報処理装置であって、
前記制御プログラムに含まれる、制御方式に応じた前記可動部の制御パラメータを、前記制御対象装置内の前記可動部を駆動するコントローラに設定する設定部と、
前記制御プログラムで指定される前記可動部の目標値に従って、前記コントローラによる前記可動部の駆動を制御する動作制御部と、
を具備する情報処理装置。
(19)可動部を有する制御対象装置を制御するための制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部を制御させるために用いる制御パラメータを設定する制御パラメータ設定ステップと、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部の駆動を制御するために入力する目標値を設定する目標値設定ステップと、
を有するプログラム製造方法。
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…ユーザ・インターフェース
1200…開発装置、1210…モーション編集部
1220…モータ制御出力部、1230…物理演算部

Claims (19)

  1. 制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理装置であって、
    制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持部と、
    前記第1の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、
    算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部と、
    を具備する情報処理装置。
  2. 前記制御出力部は、前記第1の保持部が保持する前記制御パラメータを用いて前記目標値と前記可動部の現在値の偏差に応じた制御入力値を計算するとともに、前記制御入力値に対する前記第1の保持部が保持する前記特性値に応じた前記可動部の出力値を計算する、
    請求項1に記載の情報処理装置。
  3. 前記第1の保持部は、前記可動部の制御方式に応じて、比例ゲイン、積分ゲイン、又は微分ゲインのうち少なくとも1つの制御パラメータを保持する、
    請求項1に記載の情報処理装置。
  4. 前記第1の保持部は、前記可動部を駆動するモータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能(モータ軸)(P/R)、検出器(エンコーダ)、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量のうち少なくとも1つの特性値を保持する、
    請求項1に記載の情報処理装置。
  5. 前記制御対象装置の特性値を保持する第2の保持部をさらに備え、
    前記物理演算部は、前記第2の保持部が保持する前記特性値を用いて、前記制御対象装置に物理挙動を実行させる、
    請求項1に記載の情報処理装置。
  6. 前記第2の保持部は、前記制御対象装置を構成する各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数のうち少なくとも1つを保持する、
    請求項5に記載の情報処理装置。
  7. 前記第1の保持部に保持する前記可動部の制御パラメータ又は前記可動部の特性値を取得する第1の取得部をさらに備える、
    請求項1に記載の情報処理装置。
  8. 前記第1の取得部は、前記制御プログラムの設定ファイルから前記可動部の制御パラメータ又は前記可動部の特性値を取得する、
    請求項7に記載の情報処理装置。
  9. 前記第1の取得部は、ユーザの入力操作に応じて前記可動部の制御パラメータを取得する、
    請求項7に記載の情報処理装置。
  10. 前記第2の保持部に保持する前記制御対象装置の特性値を取得する第2の取得部をさらに備える、
    請求項5に記載の情報処理装置。
  11. 前記第2の取得部は、前記制御対象装置の3次元モデルを記述したファイルから前記制御対象装置の特性値を取得する、
    請求項10に記載の情報処理装置。
  12. ユーザの入力操作に応じて前記制御プログラムを修正又は変更する編集部をさらに備える、
    請求項1に記載の情報処理装置。
  13. 前記物理演算部による物理挙動の計算を経た前記制御プログラムを出力する出力部をさらに備える、
    請求項1に記載の情報処理装置。
  14. 前記出力部は、前記第1の保持部に保持されている少なくとも一部の情報を組み込んだ前記制御プログラムを出力する、
    請求項13に記載の情報処理装置。
  15. 前記出力部は、前記制御プログラムとは別ファイルで前記第1の保持部に保持されている少なくとも一部の情報を出力する、
    請求項13に記載の情報処理装置。
  16. 制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理方法であって、
    制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持ステップと、
    前記第1の保持ステップにより保持される前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力ステップと、
    算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算ステップと、
    を有する情報処理方法。
  17. 制御対象装置の可動部に対する目標値を含む制御プログラムに対する処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
    制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第1の保持部、
    前記第1の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に対する前記可動部の出力値を計算する制御出力部、
    算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算部、
    として機能させるコンピュータ・プログラム。
  18. 可動部を有する制御対象装置を制御プログラムに従って制御するための処理を実施する情報処理装置であって、
    前記制御プログラムに含まれる、制御方式に応じた前記可動部の制御パラメータを、前記制御対象装置内の前記可動部を駆動するコントローラに設定する設定部と、
    前記制御プログラムで指定される前記可動部の目標値に従って、前記コントローラによる前記可動部の駆動を制御する動作制御部と、
    を具備する情報処理装置。
  19. 可動部を有する制御対象装置を制御するための制御プログラムを製造するプログラム製造方法であって、
    前記制御プログラムに、前記制御対象装置のコントローラに前記可動部を制御させるために用いる制御パラメータを設定する制御パラメータ設定ステップと、
    前記制御プログラムに、前記制御対象装置のコントローラに前記可動部の駆動を制御するために入力する目標値を設定する目標値設定ステップと、
    を有するプログラム製造方法。
JP2019509031A 2017-03-31 2018-02-28 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法 Pending JPWO2018180148A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017070634 2017-03-31
JP2017070634 2017-03-31
PCT/JP2018/007482 WO2018180148A1 (ja) 2017-03-31 2018-02-28 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法

Publications (1)

Publication Number Publication Date
JPWO2018180148A1 true JPWO2018180148A1 (ja) 2020-02-06

Family

ID=63675441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019509031A Pending JPWO2018180148A1 (ja) 2017-03-31 2018-02-28 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法

Country Status (5)

Country Link
US (1) US20190377312A1 (ja)
EP (1) EP3605250A4 (ja)
JP (1) JPWO2018180148A1 (ja)
CN (1) CN110462533A (ja)
WO (1) WO2018180148A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825121B (zh) * 2018-08-08 2023-02-17 纬创资通股份有限公司 控制装置与无人机控制方法
JP7375632B2 (ja) 2020-03-13 2023-11-08 オムロン株式会社 制御システムおよびサポート装置
CN112636647B (zh) * 2020-12-29 2024-01-09 视田科技(天津)有限公司 一种扩大投影移动范围的电机精确控制方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069302A (ja) * 1996-08-27 1998-03-10 Matsushita Electric Works Ltd Pid命令を持つプログラマブルコントローラ
JP2003030251A (ja) * 2001-07-19 2003-01-31 Fujitsu Ltd シミュレーションシステム、方法、プログラム及び記録媒体
JP2004078729A (ja) * 2002-08-21 2004-03-11 Toshiba Mach Co Ltd Pid内部演算値のモニタリング機能を有するシーケンス制御装置
JP2016001358A (ja) * 2014-06-11 2016-01-07 アズビル株式会社 エンジニアリング装置、エンジニアリングシステム、およびダウンロード処理方法
JP2016189106A (ja) * 2015-03-30 2016-11-04 シャープ株式会社 Pid制御装置及びpid制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0973302A (ja) * 1995-09-01 1997-03-18 Fujitsu Ltd サーボモータの制御係数設定方法
US6445964B1 (en) * 1997-08-04 2002-09-03 Harris Corporation Virtual reality simulation-based training of telekinegenesis system for training sequential kinematic behavior of automated kinematic machine
JP4380042B2 (ja) 2000-09-04 2009-12-09 ソニー株式会社 アニメーション生成方法および装置
DE10354642A1 (de) * 2003-11-22 2005-06-16 Bayerische Motoren Werke Ag Vorrichtung und Verfahren zum Programmieren eines Industrieroboters
US8326469B2 (en) * 2006-07-14 2012-12-04 Irobot Corporation Autonomous behaviors for a remote vehicle
US7957583B2 (en) * 2007-08-02 2011-06-07 Roboticvisiontech Llc System and method of three-dimensional pose estimation
US8694296B2 (en) * 2010-10-22 2014-04-08 Agile Planet, Inc. Method and apparatus for integrated simulation
US20130150984A1 (en) * 2011-12-13 2013-06-13 Richard M. Nigro Test system with configurable closed loop
JP5966372B2 (ja) * 2012-01-17 2016-08-10 セイコーエプソン株式会社 ロボット制御装置、ロボットシステム、ロボット制御方法及びロボット
JP5898134B2 (ja) * 2013-06-27 2016-04-06 トヨタ自動車株式会社 リハビリテーション装置、制御方法及び制御プログラム
CN104669244A (zh) * 2013-12-02 2015-06-03 精工爱普生株式会社 机器人

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069302A (ja) * 1996-08-27 1998-03-10 Matsushita Electric Works Ltd Pid命令を持つプログラマブルコントローラ
JP2003030251A (ja) * 2001-07-19 2003-01-31 Fujitsu Ltd シミュレーションシステム、方法、プログラム及び記録媒体
JP2004078729A (ja) * 2002-08-21 2004-03-11 Toshiba Mach Co Ltd Pid内部演算値のモニタリング機能を有するシーケンス制御装置
JP2016001358A (ja) * 2014-06-11 2016-01-07 アズビル株式会社 エンジニアリング装置、エンジニアリングシステム、およびダウンロード処理方法
JP2016189106A (ja) * 2015-03-30 2016-11-04 シャープ株式会社 Pid制御装置及びpid制御方法

Also Published As

Publication number Publication date
US20190377312A1 (en) 2019-12-12
CN110462533A (zh) 2019-11-15
EP3605250A1 (en) 2020-02-05
WO2018180148A1 (ja) 2018-10-04
EP3605250A4 (en) 2020-07-29

Similar Documents

Publication Publication Date Title
WO2018180143A1 (ja) 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法
Harris et al. Survey of popular robotics simulators, frameworks, and toolkits
JP4592276B2 (ja) ロボット装置のためのモーション編集装置及びモーション編集方法、並びにコンピュータ・プログラム
JP2018514042A (ja) 自律車両シミュレーションシステム
US20080004749A1 (en) System and method for generating instructions for a robot
JPWO2018180148A1 (ja) 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法
WO2019097793A1 (ja) 情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法
WO2008069366A1 (en) Robot simulation system using the network
KR101363092B1 (ko) 로봇시스템의 rils 구현 방법 및 시스템
Zhang et al. A simulation system for testing robotic navigation based on coppeliasim and ROS
Thilderkvist et al. Motion control of hexapod robot using model-based design
Raje Evaluation of ros and gazebo simulation environment using turtlebot3 robot
Machado et al. CoopDynSim: a 3D robotics simulator
Koslosky et al. Designing fuzzy logic controllers for ros-based multirotors
JP2024509342A (ja) 別個の装置を使用してインテリジェント車両を操作するための装置、システム、および方法
Saraiji et al. Virtual Telesar-designing and implementation of a modular based immersive virtual telexistence platform
Harris Design and implementation of an autonomous robotics simulator
López et al. ROS2 and Unity based Simulation for telepresence robot
Salt et al. REACT-R and Unity integration
Thule et al. Considering abstraction levels on a case study
Ardiyanto et al. Rt components for using morse realistic simulator for robotics
Li Modeling, Controlling, and Flight Testing of a Small Quadcopter
Turnwald et al. A platform for experimental education of control science
Song et al. A Virtual Experiment Platform for 2D Robot Autonomous Navigation Algorithm System Based on ROS
Rubia Estruch Model and build robot in ROS environment

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: 20220322

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220920