(57)【要約】  可動部を有する制御装置の動作制御プログラムの開発に利用され又は開発を支援する情報処理装置を提供する。  制御対象装置の可動部に対する目標値を含む動作制御プログラムを処理する情報処理装置は、制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持部と、前記第１の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部を具備する。
2018180148.tif 000002
【特許請求の範囲】
【請求項１】
制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理装置であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持部と、
前記第１の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、
算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部と、
を具備する情報処理装置。
【請求項２】
前記制御出力部は、前記第１の保持部が保持する前記制御パラメータを用いて前記目標値と前記可動部の現在値の偏差に応じた制御入力値を計算するとともに、前記制御入力値に対する前記第１の保持部が保持する前記特性値に応じた前記可動部の出力値を計算する、
請求項１に記載の情報処理装置。
【請求項３】
前記第１の保持部は、前記可動部の制御方式に応じて、比例ゲイン、積分ゲイン、又は微分ゲインのうち少なくとも１つの制御パラメータを保持する、
請求項１に記載の情報処理装置。
【請求項４】
前記第１の保持部は、前記可動部を駆動するモータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能（モータ軸）（Ｐ／Ｒ）、検出器（エンコーダ）、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量のうち少なくとも１つの特性値を保持する、
請求項１に記載の情報処理装置。
【請求項５】
前記制御対象装置の特性値を保持する第２の保持部をさらに備え、
前記物理演算部は、前記第２の保持部が保持する前記特性値を用いて、前記制御対象装置に物理挙動を実行させる、
請求項１に記載の情報処理装置。
【請求項６】
前記第２の保持部は、前記制御対象装置を構成する各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数のうち少なくとも１つを保持する、
請求項５に記載の情報処理装置。
【請求項７】
前記第１の保持部に保持する前記可動部の制御パラメータ又は前記可動部の特性値を取得する第１の取得部をさらに備える、
請求項１に記載の情報処理装置。
【請求項８】
前記第１の取得部は、前記制御プログラムの設定ファイルから前記可動部の制御パラメータ又は前記可動部の特性値を取得する、
請求項７に記載の情報処理装置。
【請求項９】
前記第１の取得部は、ユーザの入力操作に応じて前記可動部の制御パラメータを取得する、
請求項７に記載の情報処理装置。
【請求項１０】
前記第２の保持部に保持する前記制御対象装置の特性値を取得する第２の取得部をさらに備える、
請求項５に記載の情報処理装置。
【請求項１１】
前記第２の取得部は、前記制御対象装置の３次元モデルを記述したファイルから前記制御対象装置の特性値を取得する、
請求項１０に記載の情報処理装置。
【請求項１２】
ユーザの入力操作に応じて前記制御プログラムを修正又は変更する編集部をさらに備える、
請求項１に記載の情報処理装置。
【請求項１３】
前記物理演算部による物理挙動の計算を経た前記制御プログラムを出力する出力部をさらに備える、
請求項１に記載の情報処理装置。
【請求項１４】
前記出力部は、前記第１の保持部に保持されている少なくとも一部の情報を組み込んだ前記制御プログラムを出力する、
請求項１３に記載の情報処理装置。
【請求項１５】
前記出力部は、前記制御プログラムとは別ファイルで前記第１の保持部に保持されている少なくとも一部の情報を出力する、
請求項１３に記載の情報処理装置。
【請求項１６】
制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理方法であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持ステップと、
前記第１の保持ステップにより保持される前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力ステップと、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算ステップと、
を有する情報処理方法。
【請求項１７】
制御対象装置の可動部に対する目標値を含む制御プログラムに対する処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持部、
前記第１の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に対する前記可動部の出力値を計算する制御出力部、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算部、
として機能させるコンピュータ・プログラム。
【請求項１８】
可動部を有する制御対象装置を制御プログラムに従って制御するための処理を実施する情報処理装置であって、
前記制御プログラムに含まれる、制御方式に応じた前記可動部の制御パラメータを、前記制御対象装置内の前記可動部を駆動するコントローラに設定する設定部と、
前記制御プログラムで指定される前記可動部の目標値に従って、前記コントローラによる前記可動部の駆動を制御する動作制御部と、
を具備する情報処理装置。
【請求項１９】
可動部を有する制御対象装置を制御するための制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部を制御させるために用いる制御パラメータを設定する制御パラメータ設定ステップと、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部の駆動を制御するために入力する目標値を設定する目標値設定ステップと、
を有するプログラム製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する技術は、可動部を有する制御装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法に関する。
【背景技術】
【０００２】
近年のロボティクス技術の進歩は目覚ましく、さまざまな産業分野の作業現場に広く浸透してきている。ロボットは、例えば複数のリンクとリンク間を接続する関節で構成され、モータなどの関節駆動用のアクチュエータを用いて各節を駆動することによってロボットは動作する。【０００３】
例えば、キーフレームを用いたロボットやアニメーションのキャラクターの動作編集方法が知られている（例えば、特許文献１を参照のこと）。具体的には、ある区間の動作の開始時並びに終了時などのキーフレームにおける関節部などの各可動部の位置（関節角度）や速度などの目標値からなるデータセットをＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面上で指定し、「Ｘ秒かけて関節をＹ度からＺまで動かす」というような、直感的で分かり易い動作の編集を行なうことができる。【０００４】
ところが、各種の多関節ロボットの動作を作成する際には、さまざまな物理的要素を考慮する必要がある。例えば、２足歩行、４足歩行など脚式移動ロボットの動作を作成する際には、機体の転倒や、移動経路上の物体（障害物など）との衝突といった物理的要素を考慮しなければならない。作成した定義動作（モーションとも呼ばれる）を確認するには、実機で定義動作を実行してみるか、又は、高度な物理演算を行なうことができる物理エンジンを用いる必要がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−７４３８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本明細書で開示する技術の目的は、可動部を有する制御装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することにある。
【課題を解決するための手段】
【０００７】
本明細書で開示する技術は、上記課題を参酌してなされたものであり、その第１の側面は、制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理装置であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持部と、
前記第１の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、
算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部と、
を具備する情報処理装置である。【０００８】
前記制御出力部は、前記第１の保持部が保持する前記制御パラメータを用いて前記目標値と前記可動部の現在値の偏差に応じた制御入力値を計算するとともに、前記制御入力値に対する前記第１の保持部が保持する前記特性値に応じた前記可動部の出力値を計算する。【０００９】
また、前記第１の保持部は、前記可動部の制御方式に応じて、比例ゲイン、積分ゲイン、又は微分ゲインのうち少なくとも１つの制御パラメータを保持するとともに、前記可動部を駆動するモータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能（モータ軸）（Ｐ／Ｒ）、検出器（エンコーダ）、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量のうち少なくとも１つの特性値を保持する。【００１０】
また、情報処理装置は、前記制御対象装置の特性値を保持する第２の保持部をさらに備えている。前記第２の保持部は、前記制御対象装置を構成する各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数のうち少なくとも１つを保持する。そして、前記物理演算部は、前記第２の保持部が保持する前記特性値を用いて、前記制御対象装置に物理挙動を実行させる。【００１１】
また、本明細書で開示する技術の第２の側面は、制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理方法であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持ステップと、
前記第１の保持ステップにより保持される前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力ステップと、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算ステップと、
を有する情報処理方法である。【００１２】
また、本明細書で開示する技術の第３の側面は、制御対象装置の可動部に対する目標値を含む制御プログラムに対する処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持部、
前記第１の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に対する前記可動部の出力値を計算する制御出力部、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算部、
として機能させるコンピュータ・プログラムである。【００１３】
本明細書で開示する技術の第３の側面に係るコンピュータ・プログラムは、コンピュータ上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、第３の側面に係るコンピュータ・プログラムをコンピュータにインストールすることによって、コンピュータ上では協働的作用が発揮され、第１の側面に係る情報処理装置と同様の作用効果を得ることができる。【００１４】
また、本明細書で開示する技術の第４の側面は、可動部を有する制御対象装置を制御プログラムに従って制御するための処理を実施する情報処理装置であって、
前記制御プログラムに含まれる、制御方式に応じた前記可動部の制御パラメータを、前記制御対象装置内の前記可動部を駆動するコントローラに設定する設定部と、
前記制御プログラムで指定される前記可動部の目標値に従って、前記コントローラによる前記可動部の駆動を制御する動作制御部と、
を具備する情報処理装置である。【００１５】
また、本明細書で開示する技術の第５の側面は、可動部を有する制御対象装置を制御するための制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部を制御させるために用いる制御パラメータを設定する制御パラメータ設定ステップと、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部の駆動を制御するために入力する目標値を設定する目標値設定ステップと、
を有するプログラム製造方法である。
【発明の効果】
【００１６】
本明細書で開示する技術によれば、可動部を有する制御装置の制御プログラムの開発に利用され又は開発を支援する情報処理装置及び情報処理方法、コンピュータ・プログラム、並びにプログラム製造方法を提供することができる。【００１７】
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。【００１８】
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【図面の簡単な説明】
【００１９】
【図１】図１は、制御プログラムの開発環境の一例を模式的に示した図である。
【図２】図２は、ネットワークを介した制御プログラムの分散開発環境を例示した図である。
【図３】図３は、ロボットを開発対象とする制御プログラムの開発環境を例示した図である。
【図４】図４は、自動走行車を開発対象とする制御プログラムの開発環境を例示した図である。
【図５】図５は、無人航空機（ドローン）を開発対象とする制御プログラムの開発環境を例示した図である。
【図６】図６は、自律動作装置１００の実機に搭載されるハードウェア並びにソフトウェアのアーキテクチャーの構成例を示した図である。
【図７】図７は、アプリケーション・プログラムの構成例を模式的に示した図である。
【図８】図８は、実機の制御用のアプリケーション・プログラムのプログラム及びデータを実機にインストールする際の処理手順を示したフローチャートである。
【図９】図９は、行動計画並びに定義動作の各データ・ファイルの構成例を模式的に示した図である。
【図１０】図１０は、アプリケーション・プログラムの実機動作の処理手順を示したフローチャートである。
【図１１】図１１は、定義動作を実行するための詳細な処理手順を示したフローチャートである。
【図１２】図１２は、自律動作装置１００の定義動作を作成するための開発装置１２００の機能的構成を模式的に示した図である。
【図１３】図１３は、モータ制御出力部１２２０と物理演算部１２３０の各々の内部動作を示した図である。
【図１４】図１４は、現実のモータの制御ブロック図を示した図である。
【図１５】図１５は、アプリケーション・プログラムの開発ツール・プログラム上において実行するための処理手順を示したフローチャートである。
【図１６】図１６は、仮想機械による定義動作を実現する処理手順及び定義動作の処理中にＧＵＩを通じてデータ修正入力を行なう処理手順を示したフローチャートである。
【図１７】図１７は、定義動作を実行する途中で制御パラメータを変更する様子を示した図である。
【図１８】図１８は、定義動作のデータ・フォーマットの変形例を示した図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
【００２１】
図１には、制御プログラムの開発環境の一例を模式的に示している。開発環境下には、開発対象となる自律動作装置（実機）１００と、この自律動作装置１００における制御プログラムを作成する開発装置２００が配置されている。
【００２２】
ここで、自律動作装置１００は、自律的若しくは適応制御により自らの行動を制御する装置であり、ロボット、無人航空機、自律運転する自動車などさまざまな形態を含むものとする。
【００２３】
自律動作装置１００は、当該システム１００全体の動作を統括的にコントロールする本体部１１０と、複数のモジュール部１２０−１、１２０−２、…で構成される。図１では簡素化のため、３つのモジュール部しか描いていないが、４以上のモジュール部で構成される自律動作装置や、２以下のモジュール部しか備えていない自律動作装置も想定される。
【００２４】
１つのモジュール部１２０は、アクチュエータ１２１と、センサ１２４と、プロセッサ１２２と、メモリ１２３と、通信モデム１２５を含んでいる。なお、簡素化のため図示を省略しているが、モジュール部１２０内の各部１２１〜１２５は、内部バスにより相互接続されているものとする。
【００２５】
アクチュエータ１２１は、例えば、関節を回転駆動するためのモータや、スピーカ用のドライバーなどである。センサ１２４は、関節回転角度や角速度、スピーカの音量などのアクチュエータの出力状態を検出するセンサや、外力やその他の外部環境を検出するセンサなどである。
【００２６】
プロセッサ１２２は、アクチュエータ１２１の駆動制御（モータ・コントローラ）やセンサ１２４からの検出信号の認識処理を始めとするモジュール内の動作を制御する。メモリ１２３は、アクチュエータ１２１の制御情報やセンサの検出値などを格納するためにプロセッサ１２２が使用する。
【００２７】
通信モデム１２５は、当該モジュール部１２０と本体部１１０、又は当該モジュール部１２０と他のモジュール部の間で相互通信を行なうためのハードウェアであり、無線モデム又は有線モデムのいずれでもよい。例えばプロセッサ１２２は、通信モデム１２５を介して、本体部１１０からアクチュエータ１２１の駆動などの命令信号を受信したり、センサ１２４による検出データを本体部１１０に送信したりする。また、モジュール部１２０は、通信モデム１２５を介して、開発装置２００などの外部装置とも通信を行なうことができる。
【００２８】
本体部１１０は、プロセッサ１１１と、メモリ１１２と、通信モデム１１３と、バッテリー１１４と、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート１１５と、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）１１６を含んでいる。なお、簡素化のため図示を省略しているが、本体部１１０内の各部１１１〜１１６は、内部バスにより相互接続されているものとする。
【００２９】
プロセッサ１１１は、メモリ１１２に格納されているプログラムに従って、自律動作装置１００全体の動作を統括的にコントロールする。また、バッテリー１１４は、自律動作装置１００の駆動電源であり、本体部１１０並びに各モジュール部１２０に電源を供給する。
【００３０】
通信モデム１１３は、本体部１２０と各モジュール部１２０の間で相互通信を行なうためのハードウェアであり、無線モデム又は有線モデムのいずれでもよい。例えばプロセッサ１１１は、通信モデム１１３を介して、各モジュール部１２０に対してアクチュエータ１２１の駆動などの命令信号を送信したり、各モジュール部１２０内でのセンサ１２４の検出値に基づく認識結果を受信したりする。また、本体部１１０は、通信モデム１１３を介して、開発装置２００などの外部装置とも通信を行なうことができる。
【００３１】
ＵＳＢポート１１５は、ＵＳＢバス（ケーブル）を使って本体部１１０に外部機器を接続するために使用される。本実施形態では、ＵＳＢポート１１５を使って本体部１１０に開発装置２００を接続することを想定している。例えば、開発装置２００上で作成した制御プログラムを、ＵＳＢポート１１５を介して自律動作装置１００にインストールすることができる。なお、ＵＳＢは自律動作装置１００に外部装置を接続するインターフェース規格の一例であり、他のインターフェース規格に則って外部装置を接続するように構成することもできる。
【００３２】
なお、図示を省略したが、本体部１１０と各モジュール部などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
【００３３】
開発装置２００は、例えばパーソナル・コンピュータで構成され、コンピュータ本体部２１０と、液晶パネルなどのディスプレイ２２０と、マウスやキーボードなどからなるユーザ・インターフェース（ＵＩ）部２３０を備えている。また、コンピュータ本体部２１０は、プロセッサ２１１、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１２と、メモリ２１３と、ＵＳＢポート２１４と、通信モデム２１５を備えている。但し、ＧＰＵ２１２の機能がプロセッサ２１１内に含まれている構成例も考え得る。また、コンピュータ本体部２１０は、図示した以外のハードウェア構成要素を備えており、各部はバスにより相互接続されている。
【００３４】
開発装置２００上では、オペレーティング・システム（ＯＳ）が動作している。プロセッサ２１１は、所望のアプリケーション・プログラムをメモリ２１２にロードして、ＯＳによって提供される実行環境下でアプリケーション・プログラムを実行することができる。
【００３５】
本実施形態では、アプリケーション・プログラムの１つとして、自律動作装置１００の制御用プログラムを作成するための開発ツール・プログラムを想定している。この開発ツール・プログラムは、当該プログラムの実行に必要なデータとともに開発装置２００のメモリ２１３上に展開されている。
【００３６】
開発ツール・プログラムは、ディスプレイ２２０の画面にプログラム開発用のＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提示する。プログラムの開発者は、このＧＵＩ画面の内容を確認しながら、ユーザ・インターフェース２３０を介してデータやプログラムの入力を行なうことができる。また、開発ツール・プログラムは、作成した制御プログラムに関するコンパイラ、デバッガ、シミュレーション、３Ｄグラフィックス・アニメーションを用いた制御プログラムの動作確認のための機能などを備えているが、開発者はＧＵＩ画面上でこれらの機能の実行指示を行なうことができる。
【００３７】
開発ツール・プログラムを用いて作成される制御プログラムは、自律動作装置１００の実機上の本体部１１０のプロセッサ１１１上で実行されるコントロール・プログラム並びにコントロール・プログラムが使用するパラメータなどのデータと、各モジュール部１２０のプロセッサ１２２においてアクチュエータ１２１の駆動を制御するためのコントロール・プログラム並びにコントロール・プログラムが使用するパラメータなどのデータで構成される。コントロール・プログラムが使用するパラメータには、アクチュエータとしてのモータのＰ（比例制御）、Ｉ（積分制御）、Ｄ（微分制御）などの制御パラメータなどのデータを含む。本明細書ではプログラム部分とデータを併せて「制御（コントロール）プログラム」と呼ぶこともある。
【００３８】
開発ツール・プログラムを使って作成された制御プログラムは、メモリ２１３に格納される。また、メモリ２１３上の制御プログラムを、ＵＳＢポート２１４を介して自律動作装置１００側に転送することができる。あるいは、メモリ２１３上の制御プログラムを、通信モデム２１５を介して自律動作装置１００内のモジュール部１２０に転送することができる。
【００３９】
また、開発装置２００上で開発ツール・プログラムを使って作成された制御プログラムを、３Ｄグラフィックス・アニメーション機能を有する開発ツール・プログラムやデータ（以下、開発ツール用のプログラムとデータを併せて「開発ツール・プログラム」とも呼ぶ）を利用して、動作の検証や、制御用のデータやプログラムの修正を行なうことができる。一般に、この種の開発ツール・プログラムは、制御プログラムに従って自律動作装置１００の実機動作の３Ｄグラフィックス・アニメーションを生成する機能を備えており、開発者はディスプレイ２２０に表示される３Ｄグラフィックス・アニメーションを利用して、自身が開発した制御プログラムの動作の検証や、データやプログラムの修正を並行して行なうことができる。
【００４０】
本実施形態では、開発ツール・プログラムが物理エンジンと呼ばれる機能を備えていることを想定している。物理エンジンは、現実の自律動作装置１００の動作を物理法則に基づいて物理現象を演算する機能を持つコンピュータ・プログラムであり、自律動作装置１００が持つ物理的な特性やさらには現実的な外部環境を考慮することによって、現実と同様の動作を生成して、その結果をディスプレイ２２０上に表示する。自律動作装置１００の実機に対し、実機のモータなどの代わりに物理エンジンを使って３Ｄグラフィックス・アニメーション空間中で動作する仮想的な自律動作装置１００のことを仮想機械（３Ｄグラフィックス・アニメーション用のデータを含むコンピュータ・プログラム及びデータ）とも呼ぶ。
【００４１】
例えば、自律動作装置１００がロボットであれば、物理エンジンは、ロボットのアームの各リンクや関節の重量やモーメント、関節駆動用のアクチュエータなどの特性を考慮しつつ、ロボットを模して造られた仮想機械の制御プログラムの動作において、開発ツール・プログラム上で表現された仮想的な物理環境と仮想機械との物理作用（地面との接地や障害物との衝突など）を物理法則に基づいて計算することによって、あたかもロボットのアクチュエータが実際に駆動しているかのように、仮想機械全体の動作を計算し、ロボットの現実的な動作を仮想機械によって再現した３Ｄグラフィックス・アニメーションをディスプレイ２２０上に表示する。
【００４２】
仮想機械は、物理エンジンと３Ｄグラフィックス・アニメーションを含む開発ツール・プログラム上で動作するように構成された制御プログラム及びデータであり、メモリ２１３に格納されている。望ましくは、仮想機械の制御プログラムは、実機１００の各モジュール部１２０のプロセッサ１２２で動作する単位で、制御プログラム及びデータがモジュール化されている。仮想機械をあたかも実機１００のように３Ｄグラフィックス空間上で動作させるために、仮想機械の制御プログラムは、実機のプロセッサ（例えば、モータ・コントローラ）１２２の動作に相当する機能を、プログラムの一部として実現する。また、この仮想機械の制御プログラムは、実機のモジュール部１２０毎のアクチュエータ１２１（例えば、モータ）に相当する動作を３Ｄグラフィックス・アニメーションで再現する物理エンジン機能を、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）あるいは関数を使って呼び出すようにプログラムされている。さらに物理エンジンにおいて物理計算の際に使用されるデータ（アクチュエータに設定される制御パラメータや、リンクの重量、イナーシャなど）は、制御プログラムとともにメモリ２１３中に格納されており、制御プログラムの実行に伴って、メモリ２１３から読み出され、制御プログラム中で利用される。
【００４３】
また、物理エンジン機能を実現するためのプログラム・モジュールに対して指示を出すためのＡＰＩあるいは関数を、実機すなわち自律動作装置１００側で動作している基本ＯＳが提供するものと同じものとすることにより、開発ツール・プログラムで作成したプログラムを、そのまま実機上のＯＳで動作させることができる。さらに、物理エンジン機能によって実際の物理現象を再現することができるので、開発ツール・プログラムを用いて開発したプログラムを、そのままＵＳＢポート２１４などを介して自律動作装置１００にアップロードして実行させることにより、開発ツール・プログラムで確認した動作を実機上でも実現することができる。
【００４４】
また、開発ツール・プログラムを使って、モジュール部単位に分割して自律動作装置１００の制御プログラムを開発することもできる。この場合も同様に、モジュール部単位で制御プログラムを自律動作装置１００にアップロードすることができる。例えば、モジュール部１２０−１のみハードウェア及び制御プログラムの開発を担当している開発者は、自分の開発装置２００を通信モデム２１５経由で自律動作装置１００の対応するモジュール部１２０−１に接続して、作成したプログラムやデータをモジュール部１２０−１内のメモリ１２３にアップロードすることもできる。
【００４５】
モジュール部単位でハードウェア及びプログラムの開発を複数の開発者又は複数の開発ベンダーで分担することで、分散開発環境下で自律動作装置１００全体の開発を進めることができる。
【００４６】
図２には、ネットワークを介した制御プログラムの分散開発環境を例示している。図２に示す分散開発環境下では、モジュール毎に個別の開発者又は開発ベンダーに開発が委ねられている。但し、図２で言うモジュールは、図１に示した自律動作装置１００のハードウェア構成要素であるモジュール部１２０の他に、自律動作装置１００の制御ソフトウェアのモジュールを指す場合もある。
【００４７】
自律動作装置１００の本体部１１０又はモジュール部１２０単位で制御プログラムの開発を任された各プログラム開発者は、それぞれモジュール開発用コンピュータを用いて、自分が担当する本体部１１０又はモジュール部１２０の制御プログラムを作成する。モジュール開発用コンピュータ上では、例えば上述した開発ツール・プログラムが動作している。各モジュール開発用コンピュータは、ネットワークに接続されている。そして、各プログラム開発者は、それぞれクラウド・サーバ上の共有ストレージ、自分専用のストレージ（すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ）、あるいは専用サーバが備えるストレージにおいて、自己が開発した制御プログラムなどを提供してもよい。また、サーバなどのストレージにアカウントを有する管理者、開発者、顧客、あるいはユーザによって制御プログラムなどが共有されるようにしてもよい。
【００４８】
自律動作装置１００の実機全体の制御プログラム開発を担当若しくは統括する開発者は、ネットワーク経由で本体部１１０及び各モジュール部１２０の制御プログラムの提供を受ける。具体的には、実機全体の開発者が使用する実機プログラム開発用コンピュータは、クラウド・サーバ上の共有ストレージ又は開発者ストレージ、専用サーバ、あるいは各開発者のモジュール開発用コンピュータとの直接通信によって、各々の制御プログラムを受信する。但し、制御プログラムの提供を受けるネットワークは、有線又は無線のいずれで構成されていてもよい。
【００４９】
実機全体の開発者が使用する実機プログラム開発用コンピュータは、図１に示した開発装置２００に相当し、開発ツール・プログラム上で物理エンジンを用いた演算を行ない、且つ３Ｄグラフィックス・アニメーションにより実機に相当する仮想機械の動作を表示できる機能を備えている。したがって、実機プログラム開発用コンピュータは、本体部１１０及びすべてのモジュール部１２０の制御プログラムを、開発ツール・プログラムが備える物理エンジン機能を利用して、仮想機械の３Ｄグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
【００５０】
さらに、実機プログラム開発用コンピュータ上では開発された制御プログラムの実行と並行して、各々の制御プログラムの修正を行なうことができる。したがって、実機全体の開発者と各モジュール部を担当する開発者とで、実機全体の制御プログラムを効率的に共同開発することにもなる。また、実機プログラム開発用コンピュータ上で修正した制御プログラムを、そのモジュール部を担当する開発者に再度提供して、最終的なプログラム製品を完成してもらうことが可能である。例えばクラウド・サーバ上に本体部並びに各モジュール部専用のストレージを配置するなどモジュール部単位で制御プログラムを管理するようにすることで、共同開発を円滑に進めることができる。
【００５１】
実機全体の開発者が使用する実機プログラム開発用コンピュータ上で動作が確認・検証された（すなわち、完成した）制御プログラムは、ＵＳＢポート２１４を介して開発装置２００から実機の自律動作装置１００に直接アップロードすることができる。あるいは、有線又は無線で構成されるネットワーク経由で、実機全体又はモジュール部毎の制御プログラムを実機にアップロードすることもできる。
【００５２】
また、制御プログラムを専用サーバから実機へアップロードするという形態も想定される。例えば、ある実機のユーザが自分のユーザ端末のユーザ・インターフェース（キーボード、マウス、タッチパネルなど）を介して自分が持つアカウントを用いて専用サーバにログインして、さらに実機にダウンロード又はアップロードする制御プログラムを選択して、ダウンロード又はアップロードを実施するようにしてもよい。
【００５３】
図３には、自律動作装置１００の具体例として脚式のロボットを開発対象とする場合の制御プログラムの開発環境を例示している。図３では、単一の開発装置２００を用いてプログラム開発が行なわれるが、勿論、図２に示したようなネットワークを介した分散開発環境を利用することも可能である。
【００５４】
脚式ロボット１００は、本体部１１０と、頭部や左右の脚部に相当するモジュール部１２０を有している。図示を省略するが、本体部１１０と、頭部や左右の脚部などの各モジュール部１２０などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。
【００５５】
なお、脚式ロボット１００は、上肢など図示しないモジュール部をさらに有していてもよい。また、少なくとも一部のモジュール部内のプロセッサやメモリなど機能が本体部と一体となって、本体部のプロセッサによってコントロールされるという実機構成の変形例も考えられる。
【００５６】
本体部１１０は、プロセッサ１１１と、メモリ１１２と、無線又は有線の通信モデム１１３と、バッテリー１１４と、ＵＳＢポート１１５と、ＧＰＳ１１６を備えている。
【００５７】
左右の脚のモジュール部１２０−２及び１２０−３は、アクチュエータとして、股関節や膝関節、足首などの関節駆動用（若しくは、歩行用）のモータ１２１を備え、プロセッサとしてモータの駆動を制御するモータ・コントローラ１２２を備えている。また、センサ１２４として、モータ１２１の出力側に発生する外力を検知するトルク・センサや、モータ１２１の出力側の回転角度を検出するエンコーダー、足裏部の接地センサなどを備えている。また、頭部のモジュール部１２０−１は、アクチュエータとしての頭部回転用のモータ１２１と、センサとしての周囲を撮像するイメージ・センサ１２４を備えている。
【００５８】
図１と同様に、開発装置２００上で動作する開発ツール・プログラムを用いて、上記の脚式ロボット１００の本体部１１０並びに各モジュール部１２０の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の３Ｄグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
【００５９】
また、開発装置２００を用いて作成された制御プログラム、あるいは図２に示したような開発環境（あるいはその他の開発環境）において開発された実機１００全体の制御プログラムやモジュール部１２０毎の制御プログラムは、本体部１１０のＵＳＢポート１１５や各モジュール部１２０の通信モデム１２５を介した有線又は無線の通信によって、本体部１１０のメモリ１１２又は各モジュール部１２０のメモリ１２３にアップロードされる。そして、アップロードされたプログラムは、脚式ロボット１００の起動時などに適宜動作するようになっている。
【００６０】
図４には、自律動作装置１００の他の具体例として自動走行車を開発対象とする場合の制御プログラムの開発環境を例示している。自動走行車１００は、自動運転技術が導入された自動車（あるいは、作業用又は輸送用などの無人運転車両）のことであるが、完全自動運転車の他、自動運転モードと手動運転モードを切り替え可能な自動車における自動運転モードで走行中の自動車も含むものとする。図４では、単一の開発装置を用いてプログラム開発が行なわれるが、勿論、図２に示したようなネットワークを介した分散開発環境を利用することも可能である。
【００６１】
図４に示す自動走行車１００は、主制御部１１０と、モジュール部としてのトランスミッション制御モジュール部１２０−２並びに室内空調制御モジュール部１２０−１を有している。図示を省略するが、主制御部１１０と各モジュール部１２０などのハードウェア間を結合するデータ・バス並びに制御バス（ＣＡＮバスなど）が存在する。また、自動走行車１００は、通常、トランスミッション制御モジュール部１２０−２、室内空調制御モジュール部１２０−１以外にも図示しない多くのモジュール部を備えているが、説明の簡素化のため省略する。
【００６２】
主制御部１１０は、プロセッサとしてのＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：電子制御装置）１１１と、メモリ１１２と、通信モデム１１３と、ＥＣＵインターフェース１１５と、ＧＰＳ１１６と、バッテリー１１４を備えている。通信モデム１１３は、Ｗｉ−Ｆｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）、近距離無線通信などを想定している。また、ＥＣＵインターフェース１１５は、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バス（図示しない）へのインターフェースを想定しており、開発装置２００側とはイーサネット（登録商標）などの通信規格を利用して接続される。
【００６３】
室内空調モジュール部１２０−１は、アクチュエータとしての空調１２１と、プロセッサとしての空調制御ＥＣＵ１２２と、メモリ１２３と、センサとしての室内温度センサ１２４と、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信などの通信モデム１２５を備えている。例えば搭乗者が携帯するスマートフォンなどの情報端末（図示しない）とＢｌｕｅｔｏｏｔｈ（登録商標）通信により接続して、空調１２１を制御することを想定している。
【００６４】
トランスミッション制御モジュール部１２０−２は、アクチュエータとしての駆動輪用モータ１２１と、プロセッサとしてのトランスミッション制御ＥＣＵ１２２と、メモリ１２３と、センサとして速度・加速度センサ１２４や操舵角センサなどを備えている。
【００６５】
なお、図４に示した構成例では、主制御部１１０並びに各モジュール部１２０にＥＣＵが配置されているが、主制御部１１０内のＥＣＵ１１１ですべてのモジュール部１２０を集中管理するように構成することも可能である。
【００６６】
図１と同様に、開発装置２００上で動作する開発ツール・プログラムを用いて、上記の自動走行車１００の主制御部１１０、室内空調制御モジュール部１２０−１、並びにトランスミッション制御モジュール部１２０−２の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の３Ｄグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
【００６７】
また、開発装置２００を用いて作成された制御プログラム、あるいは図２に示したような開発環境（あるいはその他の開発環境）において開発された実機１００全体の制御プログラムやモジュール部１２０毎の制御プログラムは、主制御部１１０のＥＣＵインターフェース１１５や各モジュール部１２０の通信モデム１２５を介した有線又は無線の通信によって、主制御部１１０のメモリ１１２又は各モジュール部１２０のメモリ１２３にアップロードされる。そして、アップロードされたプログラムは、自動走行車１００の起動時などに適宜動作するようになっている。
【００６８】
図５には、自律動作装置１００の他の具体例として無人航空機（ドローン）を開発対象とする場合の制御プログラムの開発環境を例示している。図５では、単一の開発装置２００を用いてプログラム開発が行なわれるが、勿論、図２に示したようなネットワークを介した分散開発環境を利用することも可能である。
【００６９】
図５に示す無人航空機１００は、主制御部１１０と、モジュール部としてのカメラ制御モジュール部１２０−１並びにプロペラ制御モジュール部１２０−２を有している。図示を省略するが、主制御部１１０と各モジュール部１２０などのハードウェア間を結合するデータ・バス並びに制御バスが存在する。また、無線航空機１００には、カメラ制御モジュール部１２０−１並びにプロペラ制御モジュール部１２０−２以外のモジュール部が組み込まれていてもよい。
【００７０】
主制御部１１０は、プロセッサ１１１と、メモリ１１２と、通信モデム１１３と、ＵＳＢポート１１５と、ＧＰＳ１１６と、バッテリー１１４を備えている。通信モデム１１３は、Ｗｉ−Ｆｉ、ＬＴＥ、近距離無線通信などの無線モデムを想定しており、操縦者が操作するリモート・コントローラ（図示しない）と通信を行なうようになっている。また、開発装置２００側とはＵＳＢポート１１５を利用して接続され、開発された制御プログラムのアップロードが行なわれる。
【００７１】
カメラ制御モジュール部１２０−１は、センサとしてのカメラ部（イメージ・センサを含む）１２４と、アクチュエータとしてのカメラ部回転用モータ１２１と、プロセッサとしてのモータ・コントローラ１２２と、メモリ１２３と、通信モデム１２５を備えている。カメラ部回転用モータ１２１は、例えば水平方向に３６０度の範囲で回転が可能であり、さらにチルト回転が可能であってもよい。また、通信モデム１２５は、Ｗｉ−Ｆｉ、ＬＴＥ、近距離無線通信などの無線モデムを想定しており、操縦者が操作するリモート・コントローラやスマートフォン（図示しない）からのコマンドに従ってカメラ部１２４の回転や撮影を行なう。
【００７２】
プロペラ制御モジュール１２０−２は、アクチュエータとして例えば３つのプロペラ（回転用モータを含む）１２１と、プロペラ１２１の回転用モータの制御などを行なうプロセッサ１２２と、メモリ１２３と、センサとしてのプロペラ回転検出センサ１２４を備えている。
【００７３】
図１と同様に、開発装置２００上で動作する開発ツール・プログラムを用いて、上記の無人航空機１００の主制御部１１０、カメラ制御モジュール１２０−１、並びにプロペラ制御モジュール部１２０−２の制御プログラムを作成し、さらに開発ツール・プログラム上で動作する物理エンジンの演算を利用し、仮想機械の３Ｄグラフィックス・アニメーションの表示などを通じて動作の確認・検証を行なうことができる。
【００７４】
また、開発装置２００を用いて作成された制御プログラム、あるいは図２に示したような開発環境（あるいはその他の開発環境）において開発された実機１００全体の制御プログラムやモジュール部１２０毎の制御プログラムは、主制御部１１０や各モジュール部１２０の通信モデムを介した有線又は無線の通信によって、主制御部１１０のメモリ１１２又は各モジュール部１２０のメモリ１２３にアップロードされる。そして、アップロードされたプログラムは、無人航空機１００の起動時などに適宜動作するようになっている。
【００７５】
図６には、自律動作装置１００の実機に搭載されるハードウェア並びにソフトウェアのアーキテクチャーの構成例を示している。
【００７６】
実機は、図１などにも示したように、本体部（若しくは主制御部）と複数のモジュール部などの複数のハードウェア・モジュール（ＨＷ1、ＨＷ2、…）が筐体内に組み込まれて構成される。また、各ハードウェア・モジュールを２以上の筐体に分散して配置して構成される実機も存在し得る。
【００７７】
ＯＳは、これらハードウェア・モジュール（ＨＷ1、ＨＷ2、…）を直接的に制御する。また、ＯＳではなく、モジュール部１２０内のメモリ１２３にアップロードされた制御プログラムがハードウェア・モジュールを直接的に制御する場合もある（具体的には、プロセッサ１２２が制御プログラムを実行して、アクチュエータ１２１の駆動を制御する）。
【００７８】
図１などに示したように、本体部１１０と複数のモジュール部１２０でハードウェア・アーキテクチャーが構成される自律動作装置１００においては、本体部１１０（のプロセッサ１１１）において当該システム１００全体を制御する主ＯＳが動作して、各モジュール部１２０内で実行中の制御プログラムを直接的又は間接的に制御するように構成される。
【００７９】
図６では、主ＯＳ以外にも複数のＯＳ（例えば、ＯＳ1、ＯＳ2、…）が動作し、各ＯＳがアプリケーション・プログラムの実行環境を提供する例を示している。図６において、例えば、ＯＳ1が主ＯＳの管理下にあるハードウェア・モジュールを駆動したい場合には、まずＯＳ1が主ＯＳと通信を行なうことによって、間接的に所望のモジュール部１２０の制御プログラムを制御するようにすることができる。また、ＯＳ1と主ＯＳ間の通信には、ＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）などの技術を利用して実現することができる。
【００８０】
図６には、仮想化技術（Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）を用いて構築したアーキテクチャーも併せて示している。すなわち、複数の異なるオペレーティング・システム（例えば、ＯＳ1、ＯＳ2、…）を仮想化ＯＳ上で動作させている。異なるＯＳを想定して開発された各アプリケーション・プログラム（例えば、ＯＳ1を想定して開発されたＡＰ1と、ＯＳ2を想定して開発されたＡＰ2）を、同じ実機１００上で混在させることが可能である。
【００８１】
例えば、自動走行車において開発されるアプリケーション・プログラムを、駆動系制御（ＤＳＵなど）のように高い信頼性が要求されるアプリケーション・プログラムと、ユーザに対するサービスに関わるインフォテインメント（オーディオ機器や空調など）のように汎用性の高いアプリケーション・プログラムの２種類に大別すると、前者のＡＰ1はより信頼性の高いＯＳ1を想定して開発され、後者のＡＰ2はより汎用性が高く多くの開発者によって開発可能なＯＳ2を想定して開発される。このように異なるＯＳを想定して開発された駆動系制御用アプリケーション・プログラムＡＰ1及びインフォテインメント・アプリケーション・プログラムＡＰ2は、仮想化ＯＳの介在により各々に該当するハードウェアに対する制御が容易となるので、同一の自動走行車上で混在することが可能となる。
【００８２】
アプリケーション・プログラムの開発者は、システム（例えば、ミドルウェア）が提供するＡＰＩを用いてアプリケーション・プログラムを開発することができる。例えば、ＡＰＩとして、「地図表示」、「音声対話モードへの切り替え」、「周囲の人間の認識」といった機能の利用が考えられる。
【００８３】
また、アプリケーション・プログラムの開発者は、システム・コールを利用してＯＳに対して指示を行なうようなプログラムを含めてアプリケーション・プログラムを開発することができる。ここで言うシステム・コールは、システム制御に関わる機能を利用するためのインターフェースである。システム・コールの例として、モジュール部１２０内のプロセッサ１２２（例えば、モータ・コントローラ）のパラメータを変更する、通信モデム１２５におけるネットワーク・アドレスの設定を行なう、といったものを挙げることができる。
【００８４】
図７には、アプリケーション・プログラムの構成例を模式的に示している。アプリケーション・プログラムは、例えば図１中の開発装置２００上で（すなわち、開発ツール・プログラムを用いて）開発される。
【００８５】
アプリケーション・プログラムは、１又はそれ以上の定義動作と、１又はそれ以上の行動計画を含んでいる。定義動作並びに行動計画はいずれも、自律動作装置１００の制御プログラムである。
【００８６】
定義動作は、ハードウェアのうち、モータなどに代表されるアクチュエータのコントローラに対して指示する目標値からなり、「モーション」とも呼ばれる。１つの定義動作が、ある時点においてコントローラに対して指示する目標値のみからなる場合や、ある区間においてコントローラに対して時系列的に指示する一連の目標値からなる場合がある。後述するように、本実施形態では、定義動作はキーフレーム（後述）を用いて作成されることを想定している。
【００８７】
また、定義動作は、コントローラに対して基本パラメータの設定を指示するプログラム及びデータでもある。パラメータの一例として、Ｐ（比例制御）、Ｉ（積分制御）、Ｄ（微分制御）が挙げられる。また、モータなど制御対象となるアクチュエータの特性に応じてコントローラ（プロセッサ）に設定することができるパラメータを、基本パラメータとして定義動作の中で設定することができる。
【００８８】
行動計画は、１又はそれ以上の定義動作の機能を呼び出すプログラム及びデータからなる。ロボットなどの自律動作装置１００は、行動計画に従って呼び出された１又はそれ以上の定義動作を実行することによって、１つの「ビヘイビア」を実現する。
【００８９】
また、行動計画は、状況毎に起動すべき定義動作を取り決めることで、自律動作装置１００の一連の動作を記述するプログラム及びデータである。例えば、定義動作を選択するための条件分岐をツリー構造の形式で記述する行動計画を挙げることができる。行動計画は、認識結果に応じて自律動作装置１００を制御することから、環境（状況）認識に基づく行動制御プログラムに位置付けることができる。この意味で、行動計画は、広義のＡＩ（人工知能）の機能の一部にも相当する。
【００９０】
アプリケーション・プログラムは、また、ＯＳ又はミドルウェアの機能を利用するためのプログラム及びデータを含むことができる。
【００９１】
アプリケーション・プログラムは、さらに、自律動作装置１００の実機のアプリケーション機能を、外部から利用させるためのＡＰＩを定義している。したがって、アプリケーション・プログラムの作成に利用した開発装置２００や、ユーザ端末、サーバなどの外部装置は、実機が動作中あるいは試験動作中に、通信を介してＡＰＩを呼び出すことによってアプリケーション・プログラムの機能を利用することができる。
【００９２】
また、アプリケーション・プログラムは、実機動作中に、行動計画又は定義動作のプログラム及びデータを学習によって変更させるためのプログラム及びデータを含むこともできる。
【００９３】
なお、図７に示すように、アプリケーション・プログラムは複数のコンポーネントで構成されるが、すべてのコンポーネントを一体化して１つのファイルで構成してもよいが、各コンポーネントをそれぞれ別のファイルとして構成してもよい。また、これらのファイルは、図２におけるクラウド・サーバ上の共有ストレージ、各自専用のストレージ（すなわち、本体部開発者ストレージ、モジュール部開発者ストレージ）、あるいは専用サーバが備えるストレージなどに格納され、サーバなどのストレージに対するアクセス権を有する管理者、開発者、顧客、あるいはユーザによって共有することが可能であってもよい。
【００９４】
アプリケーション・プログラムは、アプリケーション・プログラムの開発者が、開発装置２００上で開発ツール・プログラムを利用して作成することができる。開発ツール・プログラムは、コンパイラ、デバッガ、物理エンジンと連携した３Ｄグラフィックス・アニメーションなどの機能を備え、アプリケーション・プログラムの開発者はＧＵＩ画面上でこれらの機能の実行指示を行なうことができる。
【００９５】
また、本実施形態では、開発ツール・プログラムが物理エンジンと呼ばれる機能を備えていることを想定している。物理エンジンは、現実の自律動作装置１００の動作を物理法則に基づく現象をコンピュータ上で再現する機能であり、自律動作装置１００が持つ物理的な特性やさらには現実的な外部環境を考慮することによって、現実の実機と同様の動作を表す３Ｄグラフィックス・アニメーションを生成して、その結果を表示する。アプリケーション・プログラムの開発者は、３Ｄグラフィックス・アニメーションを見ながら実機の動作を検証し、さらにアプリケーション・プログラムの適切に修正することができる。
【００９６】
昨今、物理エンジンの精度は向上しており、自律動作装置１００の実機動作を制御するアプリケーション・プログラムを、物理エンジンと３Ｄグラフィックス・アニメーションの機能を備えた開発ツール・プログラム上で動作させることにより、実機動作を仮想機械でより正確に再現することが可能になってきている。特に、高機能の物理演算を行なう物理エンジンが、実機のハードウェア（例えば、モータ・コントローラ）に相当する役割を果たすので、実機を用いることなく制御プログラムを検証することができるので、開発の効率が向上するとともに開発コストが低減する。また、このようにして作成された制御プログラムを含むアプリケーション・プログラムを、実機上で動作させたときに、実機上でも期待した動作を再現することができる。
【００９７】
このように実環境に近い物理現象を再現できる開発ツール・プログラムが利用可能な場合、実機に搭載されるハードウェアの力学的・電気的な特性などを開発対象となるアプリケーション・プログラムに反映させることが、以前にも増して意味を持つようになってきている。例えば、モータの制御においては、ＰＩＤ制御が使用されている。ＰＩＤ制御においては、比例ゲインＫＰ、積分ゲインＫＩ、並びに微分ゲインＫＤが制御における特性を決定付けるパラメータであり、ハードウェアの動作を決める上で重要である。従来は、実機のモータ・コントローラのパラメータを、直接実機のプログラムの書き換えなどを行なうなどして調整する必要があった。一方、物理エンジンと３Ｄグラフィックス・アニメーション機能を備えた開発ツール・プログラムにおいて、ＫＰ、ＫＩ、ＫＤのような制御パラメータを入力・変更できるようにすれば、開発ツール・プログラム上で制御パラメータなどを変更することにより、物理エンジンがこれらの制御パラメータを読み込んで計算を行ない、３Ｄグラフィックス・アニメーションを用いてディスプレイ上で表示することにより、実機において期待される動作の確認を容易に行なうことができる。このため、実機用のアプリケーション・プログラム開発の効率を大きく改善することができる。
【００９８】
実機の一例として、ロボット用のアプリケーション・プログラム（以下では、主として「制御プログラム」と称する）開発について説明する。従来からのロボット開発環境において、ＧＵＩ画面などで、キーフレームを利用した定義動作の作成方法が用いられてきた。キーフレームの一例は、「Ｘ秒かけて関節をＹ度からＺまで動かす」という定義動作である。しかしながら、ロボットの実際の物理的挙動は、比例ゲインＫＰ、積分ゲインＫＩ、並びに微分ゲインＫＤのようなモータの制御パラメータや、モータのハードウェア特性に影響を受けてしまう。このため、開発ツール・プログラムにおいて、仮想機械を用いて、実機動作をより正確に再現するには、例えば、ロボットを構成する１つの関節などの可動部の動きを離散時間的に指定するキーフレームの情報だけでなく、モータの制御パラメータ並びにハードウェアの特性値を考慮して、時間的に連続して物理演算を実行することで、キーフレームの動作を、物理現象を考慮して補間する必要がある。但し、モータの制御パラメータやハードウェア特性値はロボット毎に異なる情報であるため、従来の開発環境ではこれらの情報を簡易に確認することが可能でない。
【００９９】
そこで、本明細書では、物理エンジンと３Ｄグラフィックス・アニメーション機能を備えた開発ツール・プログラムを用いて制御プログラムを開発する際に、制御対象とする自律動作装置１００（ロボットなど）の実機上のハードウェア特性や制御パラメータを開発者が容易に入力・変更することができる手段を提供する技術について、以下で提案する。このような手段が提供された開発環境では、実機のハードウェア特性や制御パラメータを考慮した制御プログラムを開発し、物理エンジンと３Ｄグラフィックス・アニメーション機能を備えた開発ツール・プログラム上での物理現象の再現が可能となり、実機動作をより正確に把握することができる。
【０１００】
開発者は、上記開発環境において入力・変更した制御パラメータが、所定の動作を実現するには有用であるかどうかを、開発ツール・プログラム上で動作する物理エンジンと３Ｄグラフィックス・アニメーションを通じて確認することができる。そこで、本明細書では、所定の動作を実現する上で有用であると開発者が判断する制御パラメータを、実機動作の際に選択することができるように開発環境において記録しておく手段を提供する技術についても、以下でさらに提案する。したがって、記録された制御パラメータを、開発ツール・プログラムを通じて開発された制御プログラムとともに実機に搭載して、実機の動作選択に利用することができる。
【０１０１】
また、本明細書では、各可動部の角度などの目標値を指定するキーフレームのデータ集合からなる定義動作の開発環境において、キーフレームのモータ制御を物理エンジンによって提供される物理演算と併せて実施する方法についても、以下で提案する。このような物理エンジンと３Ｄグラフィックス・アニメーションを用いて制御プログラムを開発する方法によれば、キーフレームを用いて作成した定義動作による現実世界の挙動を、実機を用いることなく確認することができる。したがって、単一の開発環境で、開発者は、定義動作（若しくは定義動作に含まれるキーフレーム）を簡易に作成することができ、且つ、現実世界での挙動確認を行なうことができるようになる。
【０１０２】
本明細書で提案する開発環境下で開発された制御プログラム（アプリケーション・プログラム）には、モータの制御パラメータのような、ハードウェア・コンポーネント毎のコントローラ特性データ集合を含めることができる（ハードウェア・コンポーネントは、図１中の各モジュール部１２０に相当）。開発者は、制御プログラムの作成・編集の過程で、モータの制御パラメータのような、ハードウェア・コンポーネント毎のコントローラ特性データを入力したり、開発ツール・プログラム上で動作する制御プログラムが表示する３Ｄグラフィックス・アニメーションを見て変更したりすることができる。
【０１０３】
図８には、本明細書で提案する方法に従って開発ツール・プログラム上で開発された制御プログラムを含むアプリケーション・プログラムのプログラム及びデータを実機にインストールする際の処理手順をフローチャートの形式で示している。ここでは、図１中の開発装置２００で開発した制御プログラムを含むアプリケーション・プログラムを、自律動作装置（実機）１００へインストールする場合を想定している。開発ツール・プログラムが、実機上で動作するＯＳ（ミドルウェアを含む）と同じＡＰＩを提供するライブラリなどを装備することにより、実機には、開発ツール・プログラムで開発されたものと同じ制御プログラムを含むアプリケーション・プログラムをインストールすることができる。
【０１０４】
開発装置２００のメモリ２１３からＵＳＢポート２１４などを介して、実機１００に、アプリケーション・プログラムをアップロードする（ステップＳ８０１）。アプリケーション・プログラムは行動計画の集合並びに定義動作の集合などのプログラム（図７を参照のこと）と、ハードウェア・コンポーネント（モジュール部）毎のプロセッサ１１１用の制御パラメータ（例えば、モータ・コントローラ用のＰＩＤデータなど）のデータ集合を含む。
【０１０５】
実機１００側では、開発装置２００からアップロードしたアプリケーション・プログラムを、本体部１１０内のメモリ１１２内に格納する（ステップＳ８０２）。そして、アプリケーション・プログラムに記述されている、各モジュール部１２０用の制御パラメータの初期値を、アクチュエータ１２１（モータなど）をコントロールするプロセッサ１２２（モータ・コントローラなど）に設定して（ステップＳ８０３）、本処理ルーチンを終了する。
【０１０６】
図９には、アプリケーション・プログラムに含まれる行動計画並びに定義動作の各データ・ファイルの構成例を模式的に示している。同図では、説明の便宜上、ファイル内のデータを、特定のプログラム言語に依らない、自然言語の形式で記述している。但し、図示するようなデータ・ファイルを、何らかのプログラム言語を用いてコーディングできることは、当業者であれば容易に理解できることである。
【０１０７】
行動計画のデータ・ファイル９０１は、定義動作を選択するための条件分岐をツリー構造の形式で記述したデータの集合である。図９に示す例では、ＩＦ文（ＩＦ  状況＝「人を検出」  ｔｈｅｎ  「寝そべる」、ＩＦ  状況＝「人がいない」  ｔｈｅｎ  「歩き回る」）の形式で、定義動作を選択するための条件を記述している。なお、図９では、説明の便宜上、簡単なＩＦ文からなる行動計画９０１のデータを示しているが、入れ子構造などを含んだ複雑な条件文になってもよい。
【０１０８】
定義動作のデータ・ファイル９０２は、行動計画９０１において使用する複数の定義動作のデータ集合とともに、ハードウェア・コンポーネント毎の制御パラメータの初期値を含んでいる。図９に示す例では、定義動作データ・ファイル９０２は、制御パラメータの初期値として、モータ１用のＰＩＤパラメータ値（Ｐ＝Ｘ１，Ｉ＝Ｙ１、Ｄ＝Ｚ１）と、モータ２用のＰＩＤパラメータ値（Ｐ＝Ｘ２，Ｉ＝Ｙ２，Ｄ＝Ｚ２）を含んでいる。
【０１０９】
また、図９に示す例では、定義動作データ・ファイル９０２は、「歩き回る」、「寝そべる」、「停止する」の定義動作のデータを含んでいる。各定義動作のデータは、キーフレームのデータセットと、ハードウェア・コンポーネント毎の制御パラメータ（例えば、モータ・コントローラに設定すべきＰＩＤパラメータ）からなる。
【０１１０】
キーフレームは、各モジュール部１２０に設定する目標値（例えば、アクチュエータ１２１としてのモータに対する回転位置や回転角度などの目標値）のデータからなる。１つの定義動作は、１又は複数のキーフレームのデータ集合からなる。
【０１１１】
また、定義動作で指定する制御パラメータは、その定義動作で設定すべき制御パラメータである。後述するように、本実施形態では、定義動作などの制御プログラムの開発過程で、物理エンジンの演算結果と３Ｄグラフィックス・アニメーションの表示結果などに基づいて最適な制御パラメータを導出することができ、プログラムの開発者は定義動作毎の最適な制御パラメータを、定義動作内に記述することができる。なお、定義動作「停止する」のキーフレーム・データ及びコントローラ特性データはともにＮＵＬＬとする。ＮＵＬＬは初期値であってもよい。
【０１１２】
図１０には、アプリケーション・プログラムを自律動作装置（実機）１００上で動作させる際（すなわち、実機動作）の処理手順をフローチャートの形式で示している。実機１００の本体部１１０のメモリ１１２には、図９に示したような、行動計画の集合並びに定義動作の集合からなるアプリケーション・プログラムがアップロードされているものとする。
【０１１３】
実機１００の電源を投入すると（ステップＳ１００１）、プロセッサ１１１は、メモリ１１２から行動計画のデータ・ファイルを読み出す（ステップＳ１００２）。
【０１１４】
行動計画は、環境情報に応じて定義動作を選択するための条件分岐を記述している。プロセッサ１１１は、各モジュール部１２０のセンサ１２３の検出結果などに基づいて認識される環境情報に応じて、行動計画に従って、定義動作を選択する。そして、プロセッサ１１１は、選択した定義動作を実行するために必要とされるキーフレーム及び制御パラメータなどのデータをメモリ１１２から読み出す（ステップＳ１００３）。
【０１１５】
ここで、プロセッサ１１１は、定義動作実行のために読み出した制御パラメータがＮＵＬＬか否かをチェックする（ステップＳ１００４）。制御パラメータがＮＵＬＬでない場合には（ステップＳ１００４のＮｏ）、プロセッサ１１１は、読み出した制御パラメータを、該当するモジュール部１２０のプロセッサ１２２に設定する（ステップＳ１００５）。また、制御パラメータがＮＵＬＬのときには（ステップＳ１００４のＹｅｓ）、設定処理（すなわち、制御パラメータの最適化）が不要なので、ステップＳ１００５をスキップする。
【０１１６】
そして、実機１００上では、定義動作が実施される（ステップＳ１００６）。各モジュール部１２０では、定義動作に適した制御パラメータ（モータの制御パラメータなど）を設定してから、定義動作で指示される目標値への駆動制御を行なうことができる。
【０１１７】
図１１には、図１０に示したフローチャート中のステップＳ１００６で実施される、定義動作を実行するための詳細な処理手順をフローチャートの形式で示している。
【０１１８】
まず、プロセッサ１１１は、メモリ１１２から定義動作のデータを読み出し、次のキーフレームで指定されている各モジュール部１２０の目標値（例えば、モータの回転角度）を取得する（ステップＳ１１０１）。
【０１１９】
次いで、プロセッサ１１１は、取得した目標値を各モジュール部１２０に転送して、各モジュール部１２０のプロセッサ１２２に目標値を入力する（ステップＳ１１０２）。例えば、モータ・コントローラに、モータの回転角度の目標値を入力する。
【０１２０】
次いで、各モジュール部１２０では、プロセッサ１２２が、入力された目標値に従って、アクチュエータ１２１を駆動する（ステップＳ１１０３）。例えば、モータ・コントローラは、回転角度の目標値に従って、モータを駆動する。
【０１２１】
そして、定義動作に含まれるすべてのキーフレームを実行し終わるまで（ステップＳ１１０４のＮｏ）、上記の処理が繰り返し実施される。
【０１２２】
図１２には、本明細書で提案する、制御対象となる自律動作装置１００の定義動作を作成するとともに検証するための開発装置１２００の機能的構成を模式的に示している。ここでは、自律動作装置１００として、ロボットのような、関節部などのモータで駆動する可動部を備えた実機を想定している。また、開発装置１２００は、例えば図１中の開発ツール・プログラムを実行する開発装置２００に相当し、図１２に示した各機能ブロックは例えば開発ツール・プログラムに含まれるソフトウェア・モジュールとして実装される。
【０１２３】
図示の開発装置１２００は、開発者において制御対象の定義動作をキーフレームの形式で編集するモーション編集部１２１０と、入力又は設定された制御パラメータに基づき、入力されるキーフレームに従ってモータ・コントローラによる制御出力を計算するモータ制御出力部１２２０と、モータを駆動させたときの物理的な挙動を計算する物理エンジンのプログラム実行呼び出しＡＰＩを通じて物理演算を行なう物理演算部１２３０を備えている。
【０１２４】
モーション編集部１２１０は、制御対象のキーフレームを作成する。モーション編集部１２１０は、ロボットなどの制御対象の各可動部の関節角などの目標値を指定するためのＧＵＩを開発者に提示して、開発者によりＧＵＩを介した指示を通じてキーフレームを作成し、所定のメモリ（図示しない）上に、所定の形式（例えば、図１８（後述）に示す定義動作における「キーフレーム・データ」の形式）で格納する。
【０１２５】
キーフレームを作成するためのＧＵＩの画面構成は任意である。キーフレームは、ある区間の動作の開始時並びに終了時などおける可動部の位置や速度といった目標値を指定するデータの集合である。例えば、キーフレーム毎の各可動部の目標値を入力するＧＵＩでもよい。また、制御対象の３Ｄモデルを利用して、頭部や左右の手足などの特定の部位における位置や姿勢を指定し、ＩＫ（インバース・キネマティクス）演算を利用してキーフレームを作成する方法を適用してもよい。
【０１２６】
また、モーション編集部１２１０は、ＧＵＩを介して、制御対象の各可動部を駆動するモータの制御パラメータ及びモータのハードウェア特性値の入力を受け付けて、所定のメモリ（図示しない）上に、所定の形式（例えば、図１８（後述）に示す定義動作における「制御パラメータデータセット１」などの形式）で保持しておく。また、モーション編集部１２１０は、制御対象の実機のハードウェア特性値を記述した３Ｄモデル・データの入力も受け付けて、所定のメモリ（図示しない）上に保持しておく。モータの制御パラメータ及びモータのハードウェア特性値の入力を行なうＧＵＩ画面構成は任意である。
【０１２７】
モータ制御出力部１２２０は、制御対象の各可動部における関節角などの目標値からなるキーフレーム、モータの制御パラメータ及びモータのハードウェア特性値などを所定のメモリ（前述）から読み出して、各可動部を駆動するモータが出力する力若しくはトルクを演算により算出する。次いで、物理演算部１２３０は、物理演算により得られたモータの力若しくはトルクに基づいて、各可動部の関節角度などの現在値を算出する。
【０１２８】
そして、物理演算部１２３０の算出した各可動部の現在値に基づいて制御対象の現在の姿勢を３Ｄグラフィックスにより描画して、ディスプレイに表示出力することができる。例えば、所定のフレームレートで制御対象の現在姿勢を算出して描画処理を行なうことにより、キーフレームの形式で編集した定義動作に基づいて駆動させたときの制御対象の挙動のアニメーションを表示することができる。したがって、開発者は、アニメーションを見て、自分が編集した定義動作を確認することができる。
【０１２９】
本実施形態に係る開発装置１２００の特徴として、モータ制御出力部１２２０には、各可動部を駆動するモータ自体の特性値や、モータの制御方式に応じた制御パラメータをあらかじめ入力又は設定しておく（例えば、モーション編集部１２１０にて入力しておく）。また、物理演算部１２３０には、定義動作による制御対象となる実機のハードウェア上の特性値をあらかじめ入力又は設定しておく。また、モータ制御出力部１２２０による演算を、物理演算部１２３０の演算と併せて行なう。
【０１３０】
モータ制御出力部１２２０と物理演算部１２３０は単一のアプリケーション・プログラム内の各ソフトウェア・モジュールとして構成される（ソフトウェア・モジュールには物理エンジンなど、開発ツール・プログラムが備えるソフトウェア・モジュールは含まず、ＡＰＩにより物理エンジンなどの機能の呼び出しを行なう）。「単一のアプリケーション・プログラム内の各ソフトウェア・モジュールとして構成される」とは、開発ツール・プログラム上で、１つのアプリケーション・プログラムの動作に従って、モータ制御出力部１２２０がキーフレーム、ハードウェア特性値及び制御パラメータに基づいて計算したモータの制御出力を用いて物理演算部１２３０においてＡＰＩで呼び出される演算を行なうことを意味する。また、上記のモータ自体の特性値やモータの制御パラメータ、制御対象となる実機のハードウェア特性値を同一の開発ツール・プログラム内でＧＵＩを用いて設定することができる。
【０１３１】
ここで、モータの制御方式に応じた制御パラメータは、例えば、比例ゲインＫＰ、積分ゲインＫＩ、並びに微分ゲインＫＤである。もちろん、実機で採用するモータの制御方式に応じて、ＰＩＤ以外の制御パラメータとなる。また、モータのハードウェア特性値とは、例えば、モータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能（モータ軸）（Ｐ／Ｒ）、検出器（エンコーダ）、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量などである。これらのモータの制御パラメータや特性値を、設定ファイルなどの形式でツール内（開発装置１２００）に取り込むことができる。また、定義動作の編集過程などにおいて、開発者がモータの制御パラメータを設定し又は変更するためのＧＵＩを提供するようにしてもよい。
【０１３２】
また、実機のハードウェア特性値は、上述したモータのハードウェア特性値の他には、例えば、各アームや関節モータなどの各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数などである。これらの実機（モータなど）ハードウェア上の特性値は、実機を模した仮想機械の３Ｄモデルとともに、データを記述した所定のファイルの形式で、ツール内（開発装置１２００）に取り込むようにしてもよい。また、開発ツール・プログラム上で提供される所定のＧＵＩを用いて、３Ｄモデルのモデリング（データ作成）を行なうとともに、ハードウェア上の特性値を入力又は編集するようにしてもよい。さらに、３Ｄモデルとハードウェア特性値は、別々に管理されてもよい。所定のフォーマットで提供される実機のハードウェア特性値と３Ｄモデルをファイルに格納し、ファイル名などのファイルの識別情報（ＩＤ）とともに、例えば、図２に示すクラウド・サーバ上の共有ストレージにおいて、データベース上で共有可能な情報として管理することができる。別の実施形態においては、ハードウェア特性値と３Ｄモデルは別々のファイルに格納して管理してもよい。また、各開発メーカーあるいは商取引のための情報提供者が、それぞれの保有する商取引用データベースにおいて、これらの共有可能な情報（すなわち、３Ｄモデルやハードウェア特性値など、開発ツール・プログラム上で利用可能な電子的なファイルとして管理される情報）を、メーカー名、型番、あるいはハードウェアのタイプ（モータ・タイプ（ステッピング・モータ、ＤＣモータ、超音波モータなど）やセンサのタイプ（ＣＭＯＳイメージ・センサ、ＣＣＤイメージ・センサ、測距イメージ・センサ、ＩｎＧａＡｓイメージ・センサ、アンプ付フォトダイオード・アレイ、Ｘ線イメージ・センサなど）など）とともに管理し、ユーザや開発者などの情報取得者や購入者のための閲覧情報にすることで、オンラインの取引対象として提供するようにすることもできる。
【０１３３】
図１３には、モータ制御出力部１２２０と物理演算部１２３０の各々の内部動作を詳細に示している。
【０１３４】
モータ制御出力部１２２０は、モーション編集部１２１０で編集されたキーフレームのデータとして、モータの目標値（関節角度）を物理演算部１２３０に入力する。モータ制御出力部１２２０は、物理演算部１２３０から演算結果として変更されたモータの現在値を受け取り、目標値と現在値の偏差を求めるように構成されている。そして、モータ制御出力部１２２０は、比例ゲインＫＰ、積分ゲインＫＩ、並びに微分ゲインＫＤの各々に基づくＰ制御入力、Ｉ制御入力、Ｄ制御入力を合算して、モータへの制御入力値を得ると、この制御入力値に対するモータの出力値として力若しくはトルクを計算する。但し、実機で採用するモータの制御方式に応じて、ＰＩＤ計算以外のロジックに変更することができる。そして、モータ制御出力部１２２０は、モータが持つ力学的又は電気的なハードウェア特性値（前述）のうち有意なものがあれば、出力値に対して修正などの処理を施す。
【０１３５】
物理演算部１２３０は、アームや関節モータなどの各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数といったハードウェア上の特性値を考慮して、モータ制御出力部１２２０で算出された出力値（力若しくはトルク）に基づいて、モータを駆動させたときの実機の物理的な挙動に相当する計算を行なうようにＡＰＩを通じて物理エンジンに指示する。物理演算には、開発ツール・プログラムに組み込まれたライブラリを使用してもよいし、インターネットなどを通じて入手可能な外部ライブラリを組み込んで使用してもよい。また、物理演算部１２３０によって計算されたモータの現在値は、モータ制御出力部１２２０にフィードバックされる。
【０１３６】
そして、物理演算部１２３０の算出した各可動部の現在値に基づいて、制御対象の現在の姿勢を描画処理して、ディスプレイに表示出力することができる。例えば、所定のフレームレートで制御対象の現在姿勢を算出して描画処理を行なうことにより、編集した定義動作に基づいて駆動させたときの制御対象の挙動の３Ｄグラフィックス・アニメーションを表示することができる。
【０１３７】
開発者は、開発ツール・プログラム上でアプリケーション・プログラムを実行することによって再現される仮想機械の３Ｄグラフィックス・アニメーションを見て、自分が編集した定義動作を確認することができる。例えば、制御対象の挙動が、開発者が定義動作編集時に描いていたイメージとは異なる場合や、制御対象が転倒したり障害物と衝突したりしている場合には、モーション編集部１２１０において、キーフレームを変更するようにして、制御対象がイメージ通りの挙動となり、又は転倒や衝突を回避できるような定義動作を作成することができる。
【０１３８】
また、開発者は、物理演算を実施した結果として得られる制御対象のアニメーションを観察しながら、動的にモータの目標値を更新することで、制御対象の挙動をリアルタイムで変更・再現・確認することができる。
【０１３９】
また、開発者は、物理演算結果などに応じてキーフレームを修正する際に、モータの目標値を修正するだけでなく、比例ゲインＫＰ、積分ゲインＫＩ、並びに微分ゲインＫＤといったモータの制御パラメータ値の変更も行ない、適切な制御パラメータを設定するようにすることもできる。図９を参照しながら既に説明したように、定義動作毎に制御パラメータを指定することができる。また、定義動作が複数のキーフレームで定義される場合には、開発者は、キーフレーム毎に適切な制御パラメータを指定できるようにしてもよい（後述）。
【０１４０】
定義動作の編集が完了した際には、当該定義動作を実行する際のモータの最適な制御パラメータ値を定義動作に組み込んで取り出すことができる。図９に示したアプリケーション・プログラムの構成例では、定義動作のデータ・ファイル内に、制御パラメータの初期値と、定義動作毎の制御パラメータが記述されている。もちろん、定義動作データに紐付けされた別のファイル（属性ファイルなど）として制御パラメータを取り出すようにしてもよい。
【０１４１】
そして、図８に示したアプリケーション・プログラムのインストール処理手順でも説明したように、アプリケーション・プログラムを実機１００にインストールした際には、行動計画を実行する際の制御パラメータの初期値が各モジュール部１２０に設定される。また、図１０に示したアプリケーション・プログラムの実機動作の処理手順でも説明したように、行動計画に従って定義動作を選択する度に、その定義動作で指定されている制御パラメータが各モジュール部１２０に設定される。したがって、実機１００上では、モータ・コントローラ１２２は、開発ツール・プログラムにおいて定義動作との組み合わせで動作が確認された制御パラメータを用いて、定義動作で指定される目標値に従ってモータ１２１をコントロールすることができるので、物理開発ツール・プログラムで動作確認を行なった結果と同様の期待する挙動を実機で再現することができる。
【０１４２】
図１４には、図１２並びに図１３に示したモータ制御出力部１２２０及び物理演算部１２３０における処理との比較として、現実のモータの制御ブロック図を示している。
【０１４３】
モータ・コントローラは、キーフレームで指定されるモータの目標値（関節角度）を入力するとともに、例えばモータの出力軸側に設置されたエンコーダーで計測されるモータの現在値を入力すると、目標値と現在値の偏差を求める。そして、モータ・コントローラは、比例ゲインＫＰ、積分ゲインＫＩ、並びに微分ゲインＫＤの各々に基づくＰ制御、Ｉ制御、Ｄ制御を合算して、モータに対する制御入力となる電圧値又は電流値を計算する。モータは、モータ・コントローラが算出した電圧値又は電流値が供給されることにより駆動すると、モータ自身の力学的・電気的特性に応じた力若しくはトルクを出力する。現実世界では、モータの出力と周囲環境との相互作用が発生し、モータの現在値がエンコーダーなどのセンサにより測定される。
【０１４４】
図１５には、開発装置２００において、開発したアプリケーション・プログラムを物理エンジンと３Ｄグラフィックス・アニメーション機能を含む開発ツール・プログラム上で実行するための処理手順をフローチャートの形式で示している。開発されたアプリケーション・プログラムによる仮想機械の挙動は、図１２に示したモータ制御出力部１２２０及び物理演算部１２３０といったソフトウェア・モジュールにより再現される。
【０１４５】
ここで、アプリケーション・プログラムは、図９に示したような行動計画データ・ファイルと定義動作データ・ファイルを含むが、開発装置２００のメモリ２１３に既に格納されているものとする。開発装置２００は、開発ツール・プログラムにおいて、自律動作装置１００の実機のモータ１２１などの代わりに、物理エンジンを使って３Ｄグラフィックス空間中で動作する仮想機械を使用する。仮想機械は、３Ｄグラフィックス・アニメーション用のデータを含むコンピュータ・プログラム及びデータからなる（前述）。仮想機械は、実機（自律動作装置１００）の各モジュール部１２０に対応するソフトウェア・コンポーネント（実機にダウンロードされた場合に、各ハードウェア・コンポーネントのプロセッサ（実機において１つのプロセッサで処理される場合には当該１つのプロセッサ）で動作する制御プログラム又はその一部に相当する）をアプリケーション・プログラム中に備えるものとする。
【０１４６】
まず、プロセッサ２１１は、定義動作データ・ファイルで指定されているハードウェア・コンポーネント毎の制御パラメータの初期値をメモリ２１３から読み出して、仮想機械を構成する各モータを駆動制御するモータ・コントローラ（ソフトウェア・コンポーネント内のメモリ領域）に設定する（ステップＳ１５０１）。
【０１４７】
次いで、プロセッサ２１１は、メモリ２１３から行動計画のデータ・ファイルを読み出す。行動計画は、環境情報に応じて定義動作を選択するための条件分岐を記述している。プロセッサ２１１は、想定される仮想環境などに応じて、行動計画に従って、定義動作を選択する。そして、プロセッサ２１１は、選択した定義動作を実行するために必要とされるキーフレーム及び制御パラメータなどのデータをメモリ２１３から読み出す（ステップＳ１５０３）。
【０１４８】
ここで、プロセッサ２１１は、定義動作実行のために読み出した制御パラメータがＮＵＬＬか否かをチェックする（ステップＳ１５０４）。制御パラメータがＮＵＬＬでない場合には（ステップＳ１５０４のＮｏ）、プロセッサ２１１は、読み出した制御パラメータを、該当するソフトウェア・コンポーネントのコントローラに設定する（ステップＳ１５０５）。また、制御パラメータがＮＵＬＬのときには（ステップＳ１５０４のＹｅｓ）、設定処理（すなわち、制御パラメータの最適化）が不要なので、ステップＳ１５０５をスキップする。
【０１４９】
そして、物理エンジンと３Ｄグラフィックス・アニメーション機能を備えた開発ツール・プログラムを用いて、仮想機械による定義動作が実施される（ステップＳ１５０６）。各ソフトウェア・コンポーネントでは、定義動作で指定された制御パラメータ（モータの制御パラメータなど）を設定してから、定義動作で指示される目標値への駆動制御を行なうことができる。
【０１５０】
図１６には、図１５に示したフローチャート中のステップＳ１５０６で実施される、物理エンジンと３Ｄグラフィックス・アニメーション機能を備えた開発ツール・プログラムを用いた、仮想機械による定義動作を実現するための詳細な処理手順をフローチャートの形式で示している。
【０１５１】
なお、定義動作の処理実行中は、開発者が各モジュール部のアクチュエータ（モータなど）の目標値や、アクチュエータの駆動を制御するプロセッサ（モータ・コントローラなど）に設定する制御パラメータ（ＰＩＤパラメータなど）を随時修正入力するためのＧＵＩが提示されているものとする。また、このようなＧＵＩを介して入力された目標値や制御パラメータはメモリ２１３上で適宜書き換えられ、開発ツール・プログラム上で動作するアプリケーション・プログラムは、開発ツール・プログラムが提供するＡＰＩを通じて、修正後の最新の目標値並びに制御パラメータを所定のメモリ（前述）から読み出すことができ、更新されたデータを用いて定義動作の処理を実行するものとする。
【０１５２】
まず、プロセッサ２１１は、メモリ２１３から定義動作のデータを読み出し、次のキーフレームで指定されている各ソフトウェア・コンポーネントの目標値（例えば、モータの回転角度）を取得する（ステップＳ１６０１）。
【０１５３】
また、プロセッサ２１１は、メモリ２１３から、各ソフトウェア・コンポーネントに指定されている制御パラメータを読み出す（ステップＳ１６０２）。
【０１５４】
そして、プロセッサ２１１は、上述したモータ制御出力部１２２０に相当する処理として、各ソフトウェア・コンポーネントにおけるモータの目標値と現在値の偏差を求め、比例ゲインＫＰ、積分ゲインＫＩ、並びに微分ゲインＫＤなどの制御パラメータに基づいてモータに対する制御入力値を得ると、モータの出力値として力若しくはトルクを計算し、計算結果を物理演算部１２３０に出力する（ステップＳ１６０３）。
【０１５５】
なお、このモータ制御用出力計算に際して、モータのハードウェア特性値も考慮する。モータのハードウェア特性値は、例えば、モータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能（モータ軸）（Ｐ／Ｒ）、検出器（エンコーダ）、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量などである。
【０１５６】
次いで、プロセッサ２１１は、上述した物理演算部１２３０の処理として、モータ制御出力部１２２０からモータの出力値を入力すると、アームや関節モータなどの各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数といった実機のハードウェア上の特性値を考慮して物理エンジンにより演算させることにより（ステップＳ１６０４）、実機の物理的な挙動を算出する。
【０１５７】
ステップＳ１６０４の物理演算には、開発ツール・プログラムに組み込まれたライブラリを使用してもよいし、インターネットなどを通じて入手可能な外部ライブラリを組み込んで使用してもよい。また、物理演算部１２３０によって計算されたモータの現在値は、モータ制御出力部１２２０にフィードバックされる。
【０１５８】
そして、物理演算部１２３０の算出した各可動部の現在値に基づいて、制御対象の現在の姿勢を描画処理して、実機の３Ｄグラフィックス・アニメーションをディスプレイに表示出力する（ステップＳ１６０５）。物理エンジンによる演算結果の描画は、毎キーフレーム行なってもよいが、数キーフレーム間隔で行なうようにしてもよい。開発者は、物理エンジンの演算により再現される仮想機械の３Ｄグラフィックス・アニメーションを見て、自分が編集した定義動作が期待したものかどうかなどについて確認することができる。
【０１５９】
定義動作の処理を実行中、各ソフトウェア・モジュール部のアクチュエータ（モータなど）の目標値や、アクチュエータの駆動を制御するプロセッサ（モータ・コントローラなど）に設定する制御パラメータ（ＰＩＤパラメータなど）を随時修正入力するためのＧＵＩが提示されている（前述）。開発者は、このようなＧＵＩを介して入力された目標値や制御パラメータを適宜修正することができる。また、モータの制御パラメータや目標値を書き換えた内容が開発ツール・プログラム上で動作するアプリケーション・プログラムの処理にリアルタイムで反映される。
【０１６０】
開発者から停止操作が行なわれるなどの停止指示があるまで、又は、定義動作に含まれるすべてのキーフレームを実行し終わるまで（ステップＳ１６０６のＮｏ）、モータ制御出力部１２２０及び物理演算部１２３０による定義動作の処理が継続して実施される。
【０１６１】
開発者は、開発ツール・プログラム上で動作するアプリケーション・プログラムによる仮想機械の処理結果を確認して、満足する定義動作の編集が完了すると、アプリケーション・プログラムの停止指示を行ない（ステップＳ１６０６のＹｅｓ）、これによってモータ制御出力部１２２０及び物理演算部１２３０を含むアプリケーション・プログラムを停止して、本処理が終了する。定義動作の編集が完了した際には、モータなどアクチュエータの制御パラメータ値を定義動作のデータ・ファイルに組み込んで取り出される。もちろん、定義動作のデータ・ファイルに紐付けされた別のファイルとしてアクチュエータの制御パラメータを取り出すようにしてもよい。
【０１６２】
上記のような開発ツール・プログラム上で動作するアプリケーション・プログラムの定義動作の処理を実行中、各モジュール部のアクチュエータの目標値や、アクチュエータの駆動を制御するプロセッサに設定する制御パラメータを随時修正入力するためのＧＵＩが提示されている（前述）。開発者は、このようなＧＵＩを介して入力された目標値や制御パラメータを適宜修正することができ、また、修正した内容は、開発ツール・プログラム上で動作するアプリケーション・プログラムの処理にリアルタイムで反映される。
【０１６３】
図１６には、定義動作の処理を実行中に、ＧＵＩを通じて開発ツール・プログラムに制御パラメータや定義動作の目標値の修正結果を、ＧＵＩを通じて入出力するための処理手順のフローチャートを併せて示している。
【０１６４】
定義動作の処理を実行中に、ＧＵＩを介して制御パラメータの修正入力が行なわれると（ステップＳ１６１１のＹｅｓ）、修正入力された制御パラメータをメモリ２１３上の該当するアドレスに書き込む（ステップＳ１６１２）。
【０１６５】
また、定義動作の処理を実行中に、ＧＵＩを介して定義動作の目標値の修正入力が行なわれると（ステップＳ１６１３のＹｅｓ）、修正入力された制御パラメータをメモリ２１３上の該当するアドレスに書き込む（ステップＳ１６１４）。
【０１６６】
したがって、本開発環境では、モータの制御パラメータや目標値を書き換えた内容が開発ツール・プログラム上で動作するアプリケーション・プログラムの処理にリアルタイムで反映されるので、開発者は制御パラメータや定義動作目標値を修正した直後の実機の動作を確認することができる、という点を十分理解されたい。
【０１６７】
図９に示した定義動作のデータ・ファイルでは、定義動作毎に一組の制御パラメータだけを指定するデータ・フォーマットとなっている。また、図１０に示したアプリケーション・プログラムの実機動作処理では、行動計画に従って定義動作が選択されたときには、最初に１回だけ各モジュール部に制御パラメータを設定するという処理手順となっている。言い換えれば、１つの定義動作の中では一組の制御パラメータしか指定されず、途中で制御パラメータを変更することは想定されていない。
【０１６８】
上記の変形例として、図１７に示すように、定義動作を実行する途中で制御パラメータを変更できるようにしてもよい。具体的には、複数のキーフレームからなる定義動作において、キーフレーム毎に制御パラメータを指定できるデータ・フォーマットにしてもよい。このようにすれば、１つの定義動作内でも、キーフレーム毎に関節が柔らかい動きとなる制御パラメータ、硬い動きとなる制御パラメータを指定することができる。また、実機がこのような定義動作を実行すると、経過時間に応じて、関節が軟らかい動きから硬い動きに移行していくという動作を実現することができる。
【０１６９】
図１８には、キーフレーム毎に制御パラメータを指定することができる定義動作のデータ・フォーマット例１８００を示している。各キーフレームは、関節目標値を指定するデータセットと、制御パラメータを指定するデータセットを含んでいる。
【０１７０】
また、１つの定義動作内でも、ハードウェア・コンポーネント毎に制御パラメータを設定するタイミングを個別に指定することができるようにしてもよい。図１８に示す例では、例えば定義動作「歩き回る」において、モータ１の制御パラメータを設定する時刻をＴ１に指定し、モータ２の制御パラメータを設定する時刻をＴ２に指定している。なお、同図中、定義動作「寝そべる」において、実機のコントローラに制御パラメータの初期値が設定したい場合には、制御パラメータにＮＵＬＬを指定すればよい。制御パラメータの初期値は、定義動作データ・ファイル１８００の冒頭に記述されている。
【０１７１】
このように本明細書で開示する技術によれば、ロボットを始めとする自律動作装置用の制御プログラムの開発環境において、モータの制御パラメータやモータの特性値、実機のハードウェア特性値を入力・変更するための手段を提供することにより、実機のハードウェア特性を反映した高い精度の物理エンジンを利用して定義動作の修正・変更を行なうことが可能になる。
【０１７２】
また、本明細書で開示する技術によれば、実環境に近い物理現象を再現可能な物理エンジンと３Ｄグラフィックス・アニメーションの機能を備えた開発ツール・プログラムを用いて制御プログラム（アプリケーション・プログラム）を開発する際に、開発ツール・プログラム上で制御プログラムを動作させるために入力又は設定し、利用したモータの制御パラメータなどのハードウェア特性情報を記録しておき、記録されたハードウェア特性情報を制御プログラムとともに実機に搭載することができる。したがって、実機上では、モータ・コントローラは、開発ツール・プログラム上で制御プログラムとの組み合わせで動作が確認された制御パラメータを用いて、制御プログラムに従ってモータをコントロールすることができるので、開発ツール・プログラム上での結果と同様の期待する挙動を実機で再現することができる。また、実機上では、開発ツール・プログラム上で制御パラメータとの組み合わせで動作が確認された複数の制御プログラムを適宜選択して利用することができるようになる。したがって、本明細書で開示する技術によれば、行動計画プログラムを開発すると同時に、その行動計画において呼び出される定義動作に適合するハードウェア特性の開発も実現できるという効果がある。
【０１７３】
また、本明細書で開示する技術によれば、キーフレームを用いて作成した各可動部の角度などの目標値と、モータの制御パラメータなどのハードウェア特性をともに入力することができる開発環境を提供することにより、モータ制御のプログラム開発と物理演算と３Ｄグラフィックス・アニメーションによる動作確認を併せて行なうことが可能になる。以って、作成した定義動作による現実世界の挙動を、実機を用いることなく確認することができるという効果がある。したがって、本明細書で開示する技術によれば、単一の開発環境で、定義動作のような簡易な制御プログラムの作成を、制御パラメータなどをリアルタイムに修正しながら行なうとともに、実環境に近い物理現象を再現できる物理エンジンと３Ｄグラフィックス・アニメーションを備えた開発ツール・プログラム上でアプリケーション・プログラムを開発することにより、実機を用いることなく、実機の動作に近い動作確認を実施することができるという効果がある。
【産業上の利用可能性】
【０１７４】
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。【０１７５】
本明細書で開示する技術は、ロボットや自動走行車、無人航空機（ドローン）などの自律動作装置の自律的若しくは適応的な行動を実現するアプリケーション・プログラムの動作の評価・検証に利用することができる。また、本明細書で開示する技術は、行動計画を用いて動作を制御する、ビデオ・ゲームのキャラクターのＡＩ開発に対しても適用することができる。【０１７６】
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。【０１７７】
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
（１）制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理装置であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持部と、
前記第１の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力部と、
算出された前記可動部の出力値に応じて前記制御対象装置に物理挙動を実行させる物理演算部と、
を具備する情報処理装置。
（２）前記制御出力部は、前記第１の保持部が保持する前記制御パラメータを用いて前記目標値と前記可動部の現在値の偏差に応じた制御入力値を計算するとともに、前記制御入力値に対する前記第１の保持部が保持する前記特性値に応じた前記可動部の出力値を計算する、
上記（１）に記載の情報処理装置。
（３）前記第１の保持部は、前記可動部の制御方式に応じて、比例ゲイン、積分ゲイン、又は微分ゲインのうち少なくとも１つの制御パラメータを保持する、
上記（１）又は（２）のいずれかに記載の情報処理装置。
（４）前記第１の保持部は、前記可動部を駆動するモータのメーカー名、型番、取付角寸法、タイプ、軸タイプ、電磁ブレーキの有無、ドライバ・タイプ、定格出力、定格回転速度、最高回転速度、最大入力回転速度、定格トルク、瞬時最大トルク、励磁最大静止トルク、速度範囲、回転子慣性モーメント、慣性モーメント、分解能（モータ軸）（Ｐ／Ｒ）、検出器（エンコーダ）、バックラッシュ、減速比、電源入力電圧、電源入力周波数、電源入力定格電圧、速度・位置制御指令、最大入力パルス周波数、又はモータ部質量のうち少なくとも１つの特性値を保持する、
上記（１）乃至（３）のいずれかに記載の情報処理装置。
（５）前記制御対象装置の特性値を保持する第２の保持部をさらに備え、
前記物理演算部は、前記第２の保持部が保持する前記特性値を用いて、前記制御対象装置に物理挙動を実行させる、
上記（１）乃至（４）のいずれかに記載の情報処理装置。
（６）前記第２の保持部は、前記制御対象装置を構成する各部品の重量、重心、イナーシャ、関節可動範囲、摩擦係数のうち少なくとも１つを保持する、
上記（５）に記載の情報処理装置。
（７）前記第１の保持部に保持する前記可動部の制御パラメータ又は前記可動部の特性値を取得する第１の取得部をさらに備える、
上記（１）乃至（６）のいずれかに記載の情報処理装置。
（８）前記第１の取得部は、前記制御プログラムの設定ファイルから前記可動部の制御パラメータ又は前記可動部の特性値を取得する、
上記（７）に記載の情報処理装置。
（９）前記第１の取得部は、ユーザの入力操作に応じて前記可動部の制御パラメータを取得する、
上記（７）又は（８）のいずれかに記載の情報処理装置。
（１０）前記第２の保持部に保持する前記制御対象装置の特性値を取得する第２の取得部をさらに備える、
上記（５）乃至（９）のいずれかに記載の情報処理装置。
（１１）前記第２の取得部は、前記制御対象装置の３次元モデルを記述したファイルから前記制御対象装置の特性値を取得する、
上記（１０）に記載の情報処理装置。
（１２）ユーザの入力操作に応じて前記制御プログラムを修正又は変更する編集部をさらに備える、
上記（１）乃至（１１）のいずれかに記載の情報処理装置。
（１３）前記物理演算部による物理挙動の計算を経た前記制御プログラムを出力する出力部をさらに備える、
上記（１）乃至（１２）のいずれかに記載の情報処理装置。
（１４）前記出力部は、前記第１の保持部に保持されている少なくとも一部の情報を組み込んだ前記制御プログラムを出力する、
上記（１３）に記載の情報処理装置。
（１５）前記出力部は、前記制御プログラムとは別ファイルで前記第１の保持部に保持されている少なくとも一部の情報を出力する、
上記（１３）に記載の情報処理装置。
（１６）制御対象装置の可動部に対する目標値を含む制御プログラムを処理する情報処理方法であって、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持ステップと、
前記第１の保持ステップにより保持される前記制御パラメータ及び特性値を用いて、前記目標値に応じて前記可動部の出力値を計算する制御出力ステップと、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算ステップと、
を有する情報処理方法。
（１７）制御対象装置の可動部に対する目標値を含む制御プログラムに対する処理をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータを、
制御方式に応じた前記可動部の制御パラメータと前記可動部の特性値を保持する第１の保持部、
前記第１の保持部が保持する前記制御パラメータ及び特性値を用いて、前記目標値に対する前記可動部の出力値を計算する制御出力部、
算出された前記可動部の出力値に応じた前記制御対象装置に物理挙動を実行させる物理演算部、
として機能させるコンピュータ・プログラム。
（１８）可動部を有する制御対象装置を制御プログラムに従って制御するための処理を実施する情報処理装置であって、
前記制御プログラムに含まれる、制御方式に応じた前記可動部の制御パラメータを、前記制御対象装置内の前記可動部を駆動するコントローラに設定する設定部と、
前記制御プログラムで指定される前記可動部の目標値に従って、前記コントローラによる前記可動部の駆動を制御する動作制御部と、
を具備する情報処理装置。
（１９）可動部を有する制御対象装置を制御するための制御プログラムを製造するプログラム製造方法であって、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部を制御させるために用いる制御パラメータを設定する制御パラメータ設定ステップと、
前記制御プログラムに、前記制御対象装置のコントローラに前記可動部の駆動を制御するために入力する目標値を設定する目標値設定ステップと、
を有するプログラム製造方法。
【符号の説明】
【０１７８】
１００…自律動作装置（実機）
１１０…本体部
１１１…プロセッサ、１１２…メモリ、１１３…通信モデム
１１４…バッテリー、１１５…ＵＳＢポート、１１６…ＧＰＳ
１２０…モジュール部
１２１…アクチュエータ、１２２…プロセッサ
１２３…メモリ、１２４…センサ、１２５…通信モデム
２００…開発装置、２１０…コンピュータ本体部
２１１…プロセッサ、２１２…ＧＰＵ
２１３…メモリ、２１４…ＵＳＢポート、２１５…通信モデム
２２０…ディスプレイ、２３０…ユーザ・インターフェース
１２００…開発装置、１２１０…モーション編集部
１２２０…モータ制御出力部、１２３０…物理演算部
【図１】
2018180148.tif 000003
【図２】
2018180148.tif 000004
【図３】
2018180148.tif 000005
【図４】
2018180148.tif 000006
【図５】
2018180148.tif 000007
【図６】
2018180148.tif 000008
【図７】
2018180148.tif 000009
【図８】
2018180148.tif 000010
【図９】
2018180148.tif 000011
【図１０】
2018180148.tif 000012
【図１１】
2018180148.tif 000013
【図１２】
2018180148.tif 000014
【図１３】
2018180148.tif 000015
【図１４】
2018180148.tif 000016
【図１５】
2018180148.tif 000017
【図１６】
2018180148.tif 000018
【図１７】
2018180148.tif 000019
【図１８】
2018180148.tif 000020
【国際調査報告】
2018180148.tif 000021
2018180148.tif 000022
2018180148.tif 000023