(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023112308
(43)【公開日】2023-08-14
(54)【発明の名称】システム同定処理方法、システム制御装置、および、プログラム
(51)【国際特許分類】
B25J 13/08 20060101AFI20230804BHJP
G05B 13/02 20060101ALI20230804BHJP
B25J 9/16 20060101ALN20230804BHJP
【FI】
B25J13/08 Z
G05B13/02 L
B25J9/16
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022014011
(22)【出願日】2022-02-01
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.MATLAB
【国等の委託研究の成果に係る記載事項】(出願人による申告)2020-2021年度国立研究開発法人新エネルギー・産業技術総合開発機構「人と共に進化する次世代人工知能に関する技術開発事業/人と共に進化するAIシステムのフレームワーク開発/サイボーグAIに関する研究開発」、令和2年度総務省戦略的情報通信研究開発推進事業(SCOPE)「ロボットの運動と知能の融合に向けた、ビッグデータを用いたヒトの運動能力の抽出と運動生成への利用」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】393031586
【氏名又は名称】株式会社国際電気通信基礎技術研究所
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(72)【発明者】
【氏名】姜 淳熙
(72)【発明者】
【氏名】石原 弘二
(72)【発明者】
【氏名】杉本 徳和
(72)【発明者】
【氏名】森本 淳
【テーマコード(参考)】
3C707
5H004
【Fターム(参考)】
3C707BS27
3C707CS08
3C707KS21
3C707KS24
3C707KS35
3C707LS15
3C707LU07
3C707LV14
3C707LV19
3C707LW12
3C707WA03
3C707WA12
3C707WK00
5H004GA04
5H004GB16
5H004HA07
5H004HA10
5H004HB07
5H004HB10
5H004KB02
5H004KB06
5H004KD61
(57)【要約】 (修正有)
【課題】システム同定が困難な制御対象に対しても、正確なモデルの同定ができるシステム同定処理方法を実現する。
【解決手段】システム制御処理システム1000では、制約条件を満たす運動データを複数個の運動データから選択し、選択した運動データによる運動を制御対象に実行させ、計測データを取得し、計測データに基づいて、モデルのパラメータの更新を行い、更新したパラメータにより、制約条件を更新させる。システム制御処理システム1000では、パラメータの精度が徐々に向上するため、制約条件を適切に緩和できる。これにより、どのような運動データにより、学習処理を進めればよいかのカリキュラム(運動データ系列)を取得できるので、制約条件を満たしつつ、制御対象に徐々に複雑な運動を実行させることができる。また、より高精度な学習処理を行うことができ、システム同定が困難な制御対象に対しても、正確なモデルの同定が可能となる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
制御対象と当該制御対象を制御するためのシステム制御装置とを含むシステム制御処理システムにおいて用いられるシステム同定処理方法であって、
前記制御対象に所定の運動をさせるための運動データを複数含む運動データセットから、所定の条件を満たす運動データを選択する目標運動選択ステップと、
前記目標運動選択ステップにより選択された運動データを用いて、前記制御対象に当該運動データに対応する運動をさせるための運動生成データを生成する目標運動生成ステップと、
前記目標運動生成ステップにより生成された前記運動生成データにより前記制御対象を動作させたときの計測データを取得し、取得した当該計測データに基づいて、前記制御対象についてのモデルのパラメータを推定するモデル学習ステップと、
前記モデル学習ステップにより推定された前記パラメータに基づいて、前記目標運動選択ステップで運動データを選択する基準となる前記条件を更新する選択基準更新ステップと、
を備えるシステム同定処理方法。
【請求項2】
前記運動選択ステップは、
前記制御対象の回転駆動機構部位の角度データ、および/または、前記制御対象の状態データ、前記角度データおよび/または前記状態データの1次微分データ、並びに、前記角度データおよび/または前記状態データの2次微分データによるリグレッサ行列φと、複数次元のパラメータwとの積演算により、前記制御対象の回転駆動機構部位に付与するトルク系列τを取得する、前記制御対象についての運動方程式を導出した場合において、前記リグレッサ行列を特異値分解することで取得される最大の特異値と最小の特異値とにより取得される条件数に基づいて、前記条件を満たすか否かを判定することで、前記運動データを選択する、
請求項1に記載のシステム同定処理方法。
【請求項3】
前記計測データは、前記目標運動生成ステップにより生成された前記運動生成データにより前記制御対象を動作させたときに、前記制御対象において計測されるトルク系列のデータを含み、
前記学習ステップは、前記リグレッサ行列と前記パラメータwとの積演算で取得されるデータと、前記計測データに含まれる前記トルク系列との差が小さくなるパラメータを取得し、取得した当該パラメータを更新処理後のパラメータwとする、
請求項2に記載のシステム同定処理方法。
【請求項4】
前記運動選択ステップは、
前記学習ステップにより、前記パラメータが更新されたときの計測データに基づいて取得されたリグレッサ行列を、条件数を取得するときに使用したリグレッサ行列に追加した行列を、更新後のリグレッサ行列とし、当該更新後のリグレッサ行列を用いて、前記条件数を取得する、
請求項3に記載のシステム同定処理方法。
【請求項5】
前記目標運動選択ステップで運動データを選択するときに用いられる前記条件は、前記学習ステップにより、前記パラメータが更新されたときの計測データに基づいて取得されたリグレッサ行列、および/または、前記学習ステップにより更新されたパラメータに基づいて、更新される、
請求項3または4に記載のシステム同定処理方法。
【請求項6】
第1データセットに含まれる運動データセットを、前記制御対象用の運動データである第2運動データセットに変換する運動データ変換ステップを
さらに備え、
前記目標運動選択ステップは、
前記制御対象に所定の運動をさせるための運動データを、前記第2運動データセットから選択する、
請求項1から5のいずれかに記載のシステム同定処理方法。
【請求項7】
請求項1から6のいずれかに記載のシステム同定処理方法により取得されたパラメータを用いてモデル制御を行うことで、前記制御対象を制御するシステム制御装置。
【請求項8】
請求項1から6のいずれかに記載のシステム同定処理方法をコンピュータに実行させるためのプログラム。
【請求項9】
制御対象と当該制御対象を制御するためのシステム制御装置であって、
前記制御対象に所定の運動をさせるための運動データを複数含む運動データセットから、所定の条件を満たす運動データを選択する目標運動選択処理部と、
前記目標運動選択処理部により選択された運動データを用いて、前記制御対象に当該運動データに対応する運動をさせるための運動生成データを生成する目標運動生成部と、
前記目標運動生成部により生成された前記運動生成データにより前記制御対象を動作させたときの計測データを取得し、取得した当該計測データに基づいて、前記制御対象についてのモデルのパラメータを推定するモデル学習部と、
前記モデル学習部により推定された前記パラメータに基づいて、前記目標運動選択処理部で運動データを選択する基準となる前記条件を更新する選択基準更新部と、
を備えるシステム制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ヒト型ロボット等の多種多様な動作を行うシステムを制御対象とするシステム同定のための技術に関する。
【背景技術】
【0002】
近年、姿勢を維持しつつ歩行等を行うロボット(例えば、ヒト型ロボット(ヒューマノイドロボット)等)が開発されている。このようなロボットに多様な動作をさせるためには、ロボット(制御対象)に対して、高速で正確な運動制御を行うことができるロボット制御システムが必要となる。このようなロボット制御システムでは、非線形制御を行う必要があり、ロボット(制御対象)に対して、高速で正確な運動制御を行うためには、正確なダイナミクスモデルを活用することが重要である。
【0003】
ダイナミカルシステムのモデルを推定する方法として、システム同定がある。ロボット制御システムにおけるシステム同定では、ロボット(制御対象)の各リンクの慣性パラメータ(質量、重心、慣性モーメント等)を運動軌道の計測データ(例えば、関節角度軌道、関節角速度軌道やトルク軌道)から推定する。
【0004】
ロボットマニピュレータに対する同定手法の開発は長年にわたり行われており、ヒト型ロボットのようなより複雑な多自由度ロボットへの同定手法の適用も行われている(例えば、非特許文献1を参照)
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Ko Ayusawa, Gentiane Venture, and Yoshihiko Nakamura, "Identificationof humanoid robots dynamics using floating-base motion dynamics," in 2008 IEEE/RSJ International Conference on Intelligent Robots and Systems, pages 2854-2859. IEEE, 2008.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、ヒト型ロボットのシステム同定は未だに困難である。正確な慣性パラメータを推定するには、ロボットのダイナミクスを励起するための様々な計測データが必要である。ロボットマニピュレータでは、そのような計測データは、まず適切な参照軌道を最適化によって設計し、その参照軌道をロボットを用いて生成することで収集することができる。しかし、ヒト型ロボットでは、参照軌道を設計することは難しい。なぜならば、参照軌道の設計には、ダイナミクスの良い初期モデルが必要であるとともに、最適化がより複雑になるからである。良い初期モデルは、ヒト型ロボットが倒れることなく参照軌道を生成できるよう、バランスの制約を考慮するために必要である。バランス制約は非線形不等式制約として課せられるため、最適化問題が扱いにくいものになる。つまり、ヒト型ロボットのような複雑な動作を行う制御対象に対して、システム同定を行う場合、良い初期モデルを必要とし、かつ、非線形不等式制約として課せられるバランス制約を考慮しつつ、最適化問題を解く必要があるため、高精度なシステム同定を行うのは非常に困難である。
【0007】
そこで、本発明は、上記課題に鑑み、システム同定が困難な制御対象に対しても、良い初期モデルを必要とせず、正確なモデルの同定が可能なシステム同定処理方法、システム制御装置、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、第1の発明は、制御対象と当該制御対象を制御するためのシステム制御装置とを含むシステム制御処理システムにおいて用いられるシステム同定処理方法であって、目標運動選択ステップと、目標運動生成ステップと、モデル学習ステップと、選択基準更新ステップと、を備える。
【0009】
目標運動選択ステップは、制御対象に所定の運動をさせるための運動データを複数含む運動データセットから、所定の条件を満たす運動データを選択する。
【0010】
目標運動生成ステップは、目標運動選択ステップにより選択された運動データを用いて、制御対象に当該運動データに対応する運動をさせるための運動生成データを生成する。
【0011】
モデル学習ステップは、目標運動生成ステップにより生成された運動生成データにより制御対象を動作させたときの計測データを取得し、取得した当該計測データに基づいて、制御対象についてのモデルのパラメータを推定する。
【0012】
選択基準更新ステップは、モデル学習ステップにより推定されたパラメータに基づいて、目標運動選択ステップで運動データを選択する基準となる条件を更新する。
【0013】
このシステム同定処理方法では、条件(制約条件)を満たす運動データを複数個の運動データから選択し、選択した運動データにより運動生成し、当該運動データによる運動を制御対象に実行させたときにおいて、制御対象から計測データを取得する。そして、このシステム同定処理方法では、取得した計測データに基づいて、学習処理を行い(モデル(制御対象のモデル)のパラメータの更新を行い)、さらに、更新したパラメータにより、制約条件を更新させる。そのため、このシステム同定処理方法では、パラメータの精度が徐々に向上するため、制約条件を適切に緩和することができる。
【0014】
これにより、このシステム同定処理方法では、どのような運動データにより、学習処理を進めればよいかのカリキュラム(運動データ系列)を取得できる。
【0015】
そして、このシステム同定処理方法では、上記により取得されるカリキュラム(運動データ系列)により、制約条件を満たしつつ、制御対象に徐々に複雑な運動を実行させることができ、より高精度な学習処理(パラメータ更新処理)を行うことができる。
【0016】
その結果、このシステム同定処理方法では、システム同定が困難な制御対象に対しても、良い初期モデルを必要とせず、正確なモデルの同定(制御対象に対するシステム同定)が可能となる。
【0017】
第2の発明は、第1の発明であって、運動選択ステップは、制御対象の回転駆動機構部位の角度データ、および/または、前記制御対象の状態データ、角度データおよび/または状態データの1次微分データ、並びに、角度データおよび/または状態データの2次微分データによるリグレッサ行列φと、複数次元のパラメータwとの積演算により、制御対象の回転駆動機構部位に付与するトルク系列τを取得する、制御対象についての運動方程式を導出した場合において、リグレッサ行列を特異値分解することで取得される最大の特異値と最小の特異値とにより取得される条件数に基づいて、条件を満たすか否かを判定することで、運動データを選択する。
【0018】
これにより、このシステム同定処理方法では、リグレッサ行列に基づいて導出された条件数により、条件(制約条件)を満たすか否かの判定を行うことができる。
【0019】
第3の発明は、第2の発明であって、計測データは、目標運動生成ステップにより生成された運動生成データにより制御対象を動作させたときに、制御対象において計測されるトルク系列のデータを含む。
【0020】
学習ステップは、リグレッサ行列とパラメータwとの積演算で取得されるデータと、計測データに含まれるトルク系列との差が小さくなるパラメータを取得し、取得した当該パラメータを更新処理後のパラメータwとする。
【0021】
これにより、このシステム同定処理方法では、リグレッサ行列とパラメータwとの積演算で取得されるデータと、計測データに含まれるトルク系列との差が小さくなるパラメータを取得するので、更新後のパラメータを、制御対象のモデルの最適パラメータに近づけることができ、システム同定処理を効率良く行うことができる。
【0022】
第4の発明は、第3の発明であって、運動選択ステップは、学習ステップにより、パラメータが更新されたときの計測データに基づいて取得されたリグレッサ行列を、条件数を取得するときに使用したリグレッサ行列に追加した行列を、更新後のリグレッサ行列とし、当該更新後のリグレッサ行列を用いて、条件数を取得する。
【0023】
これにより、このシステム同定処理方法では、実際に計測したデータで更新したリグレッサ行列により、条件数を取得することができるので、制約条件を適切に緩和することができ、その結果、学習が進むにつれ、多様な運動データが選択されるようになり、高精度なカリキュラムを構築できる。したがって、このシステム同定処理方法では、高精度なシステム同定処理を実現できる。
【0024】
第5の発明は、第3または第4の発明であって、目標運動選択ステップで運動データを選択するときに用いられる条件は、学習ステップにより、パラメータが更新されたときの計測データに基づいて取得されたリグレッサ行列、および/または、学習ステップにより更新されたパラメータに基づいて、更新される。
【0025】
このシステム同定処理方法では、パラメータが更新されたときの計測データに基づいて取得されたリグレッサ行列、および/または、学習ステップにより更新されたパラメータに基づいて、条件(制約条件)を更新できるので、学習が進むにつれ、多様な運動データが選択されるようになり、高精度なカリキュラムを構築できる。したがって、このシステム同定処理方法では、高精度なシステム同定処理を実現できる。
【0026】
第6の発明は、第1から第5のいずれかの発明であって、第1データセットに含まれる運動データセットを、制御対象用の運動データである第2運動データセットに変換する運動データ変換ステップをさらに備える。
【0027】
そして、目標運動選択ステップは、制御対象に所定の運動をさせるための運動データを、第2運動データセットから選択する。
【0028】
これにより、このシステム同定処理方法では、例えば、多量な運動データを含む第1データセットを変換した第2運動データを用いてシステム同定処理を行うことができる。制御対象についての運動データが存在しないとき、この方法により、多量の運動データが取得できるので、高精度なシステム同定処理方法を実現することが可能となる。
【0029】
第7の発明は、第1から第6のいずれかの発明であるシステム同定処理方法により取得されたパラメータを用いてモデル制御を行うことで、制御対象を制御するシステム制御装置である。
【0030】
これにより、高精度なパラメータである、第1から第6のいずれかの発明であるシステム同定処理方法により取得されたパラメータを用いて、高精度なモデル制御を行うことができ、その結果、高精度に制御対象を制御することができるシステム制御装置を実現できる。
【0031】
第8の発明は、第1から第6のいずれかの発明であるシステム同定処理方法をコンピュータに実行させるためのプログラムである。
【0032】
これにより、第1から第6のいずれかの発明であるシステム同定処理方法と同様の効果を奏するコンピュータに実行させるためのプログラムを実現できる。
【0033】
第9の発明は、制御対象と当該制御対象を制御するためのシステム制御装置であって、目標運動選択処理部と、目標運動生成部と、モデル学習部と、選択基準更新部と、を備える。
【0034】
目標運動選択処理部は、制御対象に所定の運動をさせるための運動データを複数含む運動データセットから、所定の条件を満たす運動データを選択する。
【0035】
目標運動生成部は、目標運動選択処理部により選択された運動データを用いて、制御対象に当該運動データに対応する運動をさせるための運動生成データを生成する。
【0036】
モデル学習部は、目標運動生成部により生成された運動生成データにより制御対象を動作させたときの計測データを取得し、取得した当該計測データに基づいて、制御対象についてのモデルのパラメータを推定する。
【0037】
選択基準更新部は、モデル学習部により推定されたパラメータに基づいて、目標運動選択処理部で運動データを選択する基準となる条件を更新する。
【0038】
これにより、第1の発明と同様の効果を奏するシステム制御装置を実現できる。
【発明の効果】
【0039】
本発明によれば、システム同定が困難な制御対象に対しても、良い初期モデルを必要とせず、正確なモデルの同定が可能なシステム同定処理方法、システム制御装置、および、プログラムを実現することができる。
【図面の簡単な説明】
【0040】
【
図1】第1実施形態に係るシステム制御処理システム1000の概略構成図。
【
図2】システム制御処理システム1000で実行される処理のフローチャート。
【
図5】カリキュラム(上半身ヒト型ロボットの同定カリキュラム)を説明するための図。
【
図6】制御対象(上半身ヒト型ロボット)の各反復試行でのバランス制約の緩和を説明するための図。
【
図7】各反復試行回数における基底パラメータのRMSEを示す図。
【
図8】各反復試行回数における関節トルクに対するRMSEを示す図。
【
図9】各反復試行回数における条件数のデータを示す図。
【
図10】システム制御処理システム1000Aの概略構成図。
【発明を実施するための形態】
【0041】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0042】
<1.1:システム制御処理システムの構成>
図1は、第1実施形態に係るシステム制御処理システム1000の概略構成図である。
【0043】
システム制御処理システム1000は、
図1に示すように、データ格納部DB1と、運動データ変換処理部PP1と、変換データ格納部DB2と、システム制御処理装置100と、制御対象Rbt1(例えば、ヒト型ロボット)とを備える。
【0044】
データ格納部DB1は、所定のデータを記憶することができる機能部であり、例えば、データベースにより実現される。データ格納部DB1は、例えば、ヒト(人間)の動作データ(例えば、多量のヒトの動作データ(多様なヒトの運動軌道を含むデータ))を格納しており、運動データ変換処理部PP1からの読み出し指令に基づいて、所定のデータを読み出し、読み出したデータを、データDset_hmnとして、運動データ変換処理部PP1に出力する。
【0045】
運動データ変換処理部PP1は、データ格納部DB1に対して、読み出し指令を出力することで、データ格納部DB1から所定のデータを読み出すことができる機能部である。運動データ変換処理部PP1は、データ格納部DB1からヒトの動作データを、データDset_hmnとして読み出し、読み出したデータDset_hmnに対して、運動データ変換処理を実行することで、ヒトの運動データを、制御対象Rbt(例えば、ヒト型ロボット)の運動データに変換する。そして、運動データ変換処理部PP1は、上記の運動データ変換処理により取得したデータ(ヒトの運動データを制御対象Rbt(例えば、ヒト型ロボット)の運動データに変換したデータ)を、データDset_transとして、変換データ格納部DB2に記憶する(データ書き込みする)。
【0046】
変換データ格納部DB2は、所定のデータを記憶することができる機能部であり、例えば、データベースにより実現される。変換データ格納部DB2は、運動データ変換処理部PP1から出力されるデータDset_transを入力し、当該データDset_transを記憶保持する。また、変換データ格納部DB2は、システム制御処理装置100の目標運動選択処理部1からの読み出し指令に基づいて、記憶保持しているデータであって、当該読み出し指令で指定されているデータを読み出し、読み出したデータを、データDset_rbtとして、システム制御処理装置100の目標運動選択処理部1に出力する。
【0047】
システム制御処理装置100は、制御対象Rbt1(例えば、ヒト型ロボット)を制御するための装置であって、
図1に示すように、目標運動選択処理部1と、目標運動生成部2と、モデル学習処理部3と、記憶部4と、選択基準更新処理部5と、第1リグレッサ行列取得部6とを備える。
【0048】
目標運動選択処理部1は、変換データ格納部DB2に対して、読み出し指令を出力することで、変換データ格納部DB2から所定のデータを読み出すことができる機能部である。目標運動選択処理部1は、変換データ格納部DB2に対して、読み出し指令を出力し、変換データ格納部DB2から、運動データ変換処理部PP1による変換処理後の運動データ(例えば、制御対象Rbt(例えば、ヒト型ロボット)用の運動データ)を、データDset_rbtとして、読み出す。また、目標運動選択処理部1は、記憶部4からデータDs_Φ(リグレッサ行列のデータ)を読み出す。また、目標運動選択処理部1は、選択基準更新処理部5から出力される不等式制約データを含むデータD_hを入力する。目標運動選択処理部1は、運動データDset_rbtと、データDs_Φ(リグレッサ行列のデータ)と、データD_hに含まれる不等式制約データとを用いて、目標運動選択処理を行う。そして、目標運動選択処理部1は、目標運動選択処理により選択した目標運動データQ*(参照軌道Q*)を含むデータを、データDt1として、目標運動生成部2の第2リグレッサ行列取得部21に出力する。また、目標運動選択処理部1は、PD制御用の目標運動データQPD
*(参照軌道QPD
*)を含むデータを、データDt2として、目標運動生成部2のPD制御部22に出力する。
【0049】
目標運動生成部2は、
図1に示すように、第2リグレッサ行列取得部21と、PD制御部22と、目標運動生成処理部23と、を備える。
【0050】
第2リグレッサ行列取得部21は、目標運動選択処理部1から出力されるデータDt1を入力し、データDt1から、リグレッサ行列を取得する処理を行う。そして、リグレッサ行列は、取得したリグレッサ行列を含むデータを、データD1として、目標運動生成処理部23に出力する。
【0051】
PD制御部22は、目標運動選択処理部1から出力されるデータDt2と、制御対象Rbt1から出力される計測データD4_msrとを入力する。PD制御部22は、データDt2、および、計測データD4_msrに基づいて、PD制御データD2を生成し、生成したPD制御データD2を目標運動生成処理部23に出力する。
【0052】
目標運動生成処理部23は、第2リグレッサ行列取得部21から出力されるデータD1と、PD制御部22から出力されるPD制御データD2と、モデル学習処理部3から出力されるデータD_prmと、を入力する。目標運動生成処理部23は、データD1、PD制御データD2、および、データD_prmを用いて目標運動生成処理を実行する。そして、目標運動生成処理部23は、目標運動生成処理により取得した、制御対象Rbt1に所定の運動を実行させるためのデータ(例えば、制御対象Rbt1を動かすための複数のアクチュエータに付与するトルクのデータ(トルクベクトル))を、データD3として、制御対象Rbt1に出力する。
【0053】
モデル学習処理部3は、制御対象Rbt1から出力される計測データD5_msrと、制御対象Rbt1から出力される計測データD6_msrを第1リグレッサ行列取得部6に出力して得られた出力データ(リグレッサ行列のデータ)とを入力する。また、モデル学習処理部3は、記憶部4からモデル学習処理に必要なデータ(例えば、過去のリグレッサ行列のデータ、および、過去のトルクのデータ)を読み出す。
【0054】
モデル学習処理部3は、計測データD5_msrと、第1リグレッサ行列取得部6の出力データ(リグレッサ行列のデータ)と、記憶部4から読み出したデータ(例えば、過去のリグレッサ行列のデータ、および、過去のトルクのデータ)とを用いて、モデル学習処理を行い、モデルのパラメータw(モデルの推定パラメータw)を取得する。そして、モデル学習処理部3は、取得した、モデルのパラメータwを含むデータを、データD_prmとして、目標運動生成処理部23および選択基準更新処理部5に出力する。また、モデル学習処理部3は、計測データD5_msrに含まれるデータ(例えば、計測したトルクのデータ)と、取得したパラメータwと、モデル学習処理に使用したリグレッサ行列のデータとを、記憶部4に記憶させる。
【0055】
記憶部4は、所定のデータを記憶保持する機能部であり、モデル学習処理部3、選択基準更新処理部5および目標運動選択処理部1からの指令に基づいて、データ読み出し処理/書き込み処理を行う。
【0056】
選択基準更新処理部5は、モデル学習処理部3から出力されるデータD_prmと、記憶部4から読みだしたデータDs_Φとを入力する。選択基準更新処理部5は、データD_prmと、データDs_Φとを用いて、選択基準更新処理を行い、更新処理後の選択基準データを取得する。そして、選択基準更新処理部5は、取得した更新処理後の選択基準データを含むデータを、データD_hとして、目標運動選択処理部1に出力する。なお、選択基準更新処理部5は、取得した選択基準データを記憶保持できる機能部であるものとする。
第1リグレッサ行列6は、制御対象Rbt1から出力される計測データD6_msrを入力し、当該計測データから、リグレッサ行列のデータを取得し、取得した当該リグレッサ行列のデータをモデル学習処理部3に出力する。
【0057】
制御対象Rbt1(例えば、ヒト型ロボット)は、例えば、1または複数のアクチュエータを備えており、当該アクチュエータに所定のトルクが付与されることで、所定の動作を行うことができる。また、制御対象Rbtは、例えば、1または複数のセンサを備えており、当該センサにより、制御対象Rbtの各部位(例えば、各関節)の状態データ(例えば、関節角度)、状態(状態データ)の1次微分データ、状態(状態データ)の2次微分データを取得することができる。制御対象Rbt1は、システム制御処理装置100から出力されるデータD3(例えば、トルクのデータ)により駆動制御されることで、所定の運動を行う。また、制御対象Rbt1は、システム制御処理装置100により駆動制御(運動生成)されているときにおける制御対象Rbtの各部位(例えば、各関節)の状態データ(例えば、関節角度)、状態(状態データ)の1次微分データ、状態(状態データ)の2次微分データ(センサにより取得されるデータ)を、データD4_msr、データD5_msr、および、データD6_msrとして、システム制御処理装置100に出力する。
【0058】
<1.2:システム制御処理システムの動作>
以上のように構成されたシステム制御処理システム1000の動作について、以下、説明する。
【0059】
図2は、システム制御処理システム1000で実行される処理のフローチャートである。
【0060】
以下では、
図2のフローチャートを参照しながら、システム制御処理システム1000の動作について、説明する。なお、システム制御処理システム1000の動作について、(1)モーションリターゲティング処理と、(2)システム同定処理とに分けて説明する。
【0061】
(1.2.1:モーションリターゲティング処理)
まず、モーションリターゲティング処理について、説明する。モーションリターゲティング処理とは、制御対象とは異なる生命体や物体の運動データを、制御対象の運動データに変換する処理のことをいう。本実施形態では、説明便宜のため、ヒトの運動データをロボット(ヒト型ロボット)の運動データに変換する場合(一例)のモーションリターゲティング処理について説明する。
【0062】
(ステップS11):
ステップS11において、ループ処理(ループ1)に用いる変数k(ループ処理の実行数をカウントするための変数)(k:自然数)の初期化処理を行う。具体的には、運動データ変換処理部PP1は、k=1に設定する。
【0063】
(ステップS12):
ステップS12において、ループ処理(ループ1)が開始される。
【0064】
(ステップS13):
ステップS13において、運動データ変換処理が実行される。具体的には、以下の処理が実行される。
【0065】
運動データ変換処理部PP1は、データ格納部DB1から、所定の時間(時間ステップT個分(T:自然数)の時間(1時間ステップは、例えば、1秒に設定される))のヒトの運動データP
hを読み出す。なお、T時間ステップ分の時間(期間)のヒトの運動データP
mは、モーションキャプチャシステムを用いて計測したマーカの3次元位置の系列をp
mとし、下記数式にように表すものとする。
【数1】
p
j
m:T時間ステップの期間における第j番目の時間ステップ(j:自然数、1≦j≦T)に対応する時刻に取得されたマーカの3次元位置の系列
データ格納部DB1には、ヒトの運動データが複数個格納されているものとする。モーションリターゲティング処理では、それぞれのヒトの運動データP
mを、ロボットの運動データQ
rに変換する(Q
rについて下記数式を参照)。このために、まず、ヒトの運動データを表現するためのモデル(幾何学モデル)を定義し、次に運動データ変換処理部PP1は、ヒトのモデルにおけるマーカ位置の系列P
h(下記数式を参照)が、計測したヒトのマーカ位置系列に近づくような、ヒトのモデル(幾何学モデル)を構成する各リンクの長さξ
hと、関節角度軌道θ
h
1→T(下記数式を参照)と、ロボットのモデルにおけるマーカ位置の系列P
r(下記数式を参照)が、ヒトのモデルにおけるマーカ位置に近づくような、ロボットの関節角度軌道θ
r
1→T(下記数式を参照)を計算する。
【数2】
θ
j
r:時間ステップj(j:自然数、1≦j≦T)におけるロボット(制御対象)の関節角度の系列
θ
j
h:時間ステップj(j:自然数、1≦j≦T)におけるヒトのモデルの関節角度の系列
多くの運動データ(ヒトの運動データ)に対して、モーションリターゲティング処理を実行する場合、膨大な計算コストがかかる。この問題を解決するため、運動データ変換処理部PP1では、B-スプライン関数を使い、最適化問題のサイズを削減して処理を行う。具体的には、以下のように処理が実行される。
【0066】
時刻(時間ステップ)t=1からTまでを均等に区切ったN個の制御点と、B-スプラインの基底関数をそれぞれ以下のように表す。
【数3】
θ
n
s,r:制御点n(n:自然数、1≦n≦N)に対応するロボットの関節角度の系列
θ
n
s,h:制御点n(n:自然数、1≦n≦N)に対応するヒトのモデルの関節角度の系列
b
n
s:制御点n(n:自然数、1≦n≦N)に対応するB-スプラインの基底関数
関節角度軌道θ
1→T
r,θ
1→T
hは、それぞれ以下のように計算される。
【数4】
上記数式を用いて、モーションリターゲティング処理を以下のような最適化問題として定式化する。
【数5】
e():ペナルティ関数
w
g:ヒトとロボットのマーカ位置の系列に関する重み係数
w
e:ペナルティ関数eの重み係数
なお、上記損失関数(argminの対象としている評価関数)の値を最小とするθ
1→N
s,r、θ
1→N
s,h、ξ
hを、それぞれ、opt_θ
1→N
s,r、opt_θ
1→N
s,h、opt_ξ
hと表記する。
【0067】
また、ペナルティ関数eは、関節角度限界を考慮した関数であり、関節が規定した角度を超える場合、関数eの値が大きくなる関数である。
【0068】
また、角度軌道の時間微分は、下記数式のように、有限差分法を用いて計算される。
【数6】
Δt:モーションリターゲティングの時間ステップ幅
ステップS13において、運動データ変換処理部PP1は、上記(数式5)に相当する処理を実行し、最適解opt_θ
1→N
s,rを取得する。そして、運動データ変換処理部PP1は、上記(数式4)に相当する処理を実行し、制御対象Rbt1の関節角度軌道θ
1→T
rを取得し、さらに、上記(数式6)に相当する処理を実行し、制御対象Rbt1の関節角度軌道θ
1→T
rの1次微分データ、および、2次微分データを取得する。これにより、ヒトの運動データP
hをロボットの運動データQ
rに変換することができる。
【0069】
運動データ変換処理部PP1は、ヒトの運動データPhから上記処理により取得したロボットの運動データQrを変換データ格納部DB2に記憶する(データ書き込みする)。
【0070】
(ステップS14):
ステップS14において、運動データ変換処理部PP1は、変数kを+1インクリメントし、処理をステップS15に進める。
【0071】
(ステップS15):
ステップS15において、ループ処理(ループ1)の終了条件(k>K)を満たしているか否かを判定する。ループ処理(ループ1)の終了条件を満たしていない場合(k≦Kの場合)、処理をステップS12に戻し、ループ処理(ステップS13、S14の処理)を繰り返し実行する。一方、ループ処理(ループ1)の終了条件を満たしている場合(k>Kの場合)、モーションリターゲティング処理を終了し、処理をステップS21に進める。
【0072】
このように処理することで、システム制御処理システム1000では、運動データ変換処理がK回実行され、K個のロボットの運動データQr(ヒトの運動データPhから変換処理により取得されたロボットの運動データ)を取得することができる。
【0073】
(1.2.2:システム同定処理)
次に、システム同定処理について、説明する。
【0074】
システム同定処理の説明のために、まず、システム同定における事前知識について説明する。
【0075】
≪システム同定における事前知識≫
本実施形態では、システム制御処理システム1000の制御対象Rbt1をヒト型ロボット(一例)とし、制御対象Rbt1(ヒト型ロボット)のダイナミクスモデルが以下の運動方程式で表すことができるものとする。
【数7】
M:慣性行列
上記数式において、θ、θの1次微分(1つのドットを付したθ)、θの2次微分(2つのドットを付したθ)、および、τは、それぞれ、制御対象Rbt1(ヒト型ロボット)の各部位(例えば、各リンク)の関節角度(系列)、関節角速度(系列)、関節角加速度(系列)、および、関節トルク(系列)である。また、cは、遠心力、コリオリ力、重力や摩擦力などを含むベクトルである。
【0076】
システム同定では、基底パラメータと呼ばれる、ロボット(非制御対象Rbt)の慣性パラメータのうち同定可能な最小集合のパラメータを推定する。基底パラメータには、ロボット(非制御対象Rbt)の各リンクの質量、重心位置、慣性テンソルの係数が含まれる。基底パラメータは、(数式7)で示される運動方程式がパラメータw∈R
D(D次元の実数)に関して線形に(線形結合で)書き直せることを利用して推定される。つまり、(数式7)で示される運動方程式は、下記数式のように表現できる。
【数8】
φ:リグレッサ行列
T時間ステップ分(時間ステップ1からTまでのT個)のロボット(非制御対象Rbt)の各部位(各リンク)の角度、角速度、角加速度の軌道データQと、トルクのデータfとが得られたとする。なお、Q、fは、以下の通りである。
【数9】
このとき、リグレッサ行列は、以下のようになる。
【数10】
そして、上記(数式8)は、以下のようになる。
【数11】
したがって、基底パラメータは、下記数式のように、最小二乗解w
*として同定できる。
【数12】
なお、行列について「
T」は転置行列を表し、「
-1」は逆行列を表している。
【0077】
実際には、パラメータの推定値w*の正確さは、計測データのノイズによる影響を受ける。例えば、パラメータの正確さは、関節トルクのノイズδfに影響される。
【0078】
パラメータの推定値w
*(解w
*)の感度は、リグレッサ行列の条件数を用いて測定でき、条件数は、以下のように定義される。
【数13】
σ
max(Φ):リグレッサ行列の最大の特異値
σ
min(Φ):リグレッサ行列の最小の特異値
もし条件数が小さければ、解はノイズに対して敏感ではない。そのため、正確な基底パラメータを推定するには、条件数が小さくなるような様々な計測データを集めることが重要になる。そのような計測データは、従来の方法では、まず、ロボットの参照軌道Q
rを、非線形最適化問題を解いて設計し、参照軌道をロボットにおいて生成することで集められる。最適化問題は以下のように定式化される。
【数14】
最適な参照軌道Q
*(下記数式参照)は、最適ロボット励起軌道(optimal robot excitation trajectory)と呼ばれる。
【数15】
ヒト型ロボットの最適ロボット励起軌道(optimal robot excitation trajectory)を求める際には、ヒト型ロボットが参照軌道を転倒することなく生成できるように、バランスの制約を考慮しなければならない。上半身人型ロボットにおいても、実際の使用では支持ベースが地面に固定されておらず、転倒のリスクがあるため、バランス制約を考慮することは重要である。バランス制約は、非線形不等式制約として、下記数式のように課せられる。
【数16】
バランス制約の計算には、基底パラメータwが必要になる。例えば、ロボットのバランスを保証するために、ZMP(Zero Moment Point)の制約が課せられる。ZMPは以下のように表される。
【数17】
ここで、(x,y,z)はロボットの重心位置であり、l
zは床面の高さであり、gは重力加速度である。もしZMPが、床面の接触点から構成される凸包である支持多角形の中にあれば、ロボットは安定である。つまり、下記を満たす場合、ロボットは安定である。
【数18】
p
ZMP
-:ZMPの下限
p
ZMP
+:ZMPの上限
したがって、上記(数式16)(不等式制約)の左辺は、以下のように定式化できる。
【数19】
しかし、もし初期モデルが信頼できない場合、ZMPを正確に計算できない。この不正確さを考慮するために、上記の(数式18)の代わりに、下記数式のように、減少させた支持多角形の上限と下限が用いられる。
【数20】
α:支持多角形の減少係数(0≦α≦1)
もし、減少係数が大きければ、支持多角形のサイズは小さくなる(より減少される)。この制約が、参照軌道の多様性を制限し、ダイナミクスが十分に励起されない原因と成り得る。したがって、正確なダイナミクスモデルを推定するには、良い初期モデルが必要になる。
【0079】
さらに、非線形不等式制約(数式16)が課せられることで、最適化(数式(14))はより複雑になる。多くの被最適化変数や非線形のバランス制約によって、参照軌道を求める最適化問題は、扱いにくいものとなる。
【0080】
本実施形態のシステム制御処理システム1000では、上記のようなロボット(制御対象Rbt1)の参照軌道を求めるための複雑な最適化問題を解く必要はなく、また、良い初期モデルも不要なシステム同定処理を行うことができる。
【0081】
以下、システム制御処理システム1000におけるシステム同定処理について、
図2のフローチャートを参照しながら説明する。
【0082】
(ステップS21):
ステップS21において、ループ処理(ループ2)に用いる変数i(ループ処理の実行数をカウントするための変数)(i:自然数)の初期化処理を行う。具体的には、変数iは、i=1に設定される。
【0083】
(ステップS22):
ステップS22において、ループ処理(ループ2)が開始される。
【0084】
(ステップS23):
ステップS23において、目標運動選択処理が実行される。具体的には、以下の処理が実行される。
【0085】
目標運動選択処理部1は、変換データ格納部DB2に対して、読み出し指令を出力し、変換データ格納部DB2から、運動データ変換処理部PP1による変換処理後の運動データ(例えば、制御対象Rbt(例えば、ヒト型ロボット)用の運動データ)を、データDset_rbtとして、読み出す。ここでは、目標運動選択処理部1は、変換データ格納部DB2に記憶されているK個のロボットの運動データQr(ヒトの運動データPhから変換処理により取得されたロボットの運動データ)を読み出す。このK個のロボットの運動データQrを、Q1
r、Q2
r、・・・、QK
rとし、k番目のロボットの運動データQrをQk
r(k:自然数、1≦k≦K)と表記する。
【0086】
目標運動選択処理部1は、下記処理を行うことで、目標運動Q
*を選択する。
(1)目標運動選択処理部1は、運動データQ
k
r(k:自然数、1≦k≦K)から、リグレッサ行列φを求める。((数式7)の左辺を変形することで求める。)
(2)目標運動選択処理部1は、時間ステップ1からTまでのリグレッサ行列Φを求める((数式10)のリグレッサ行列Φ(Q
k
r)を求める)。
(3)目標運動選択処理部1は、リグレッサ行列Φについて特異値分解を行い、リグレッサ行列Φの最大の特異値σ
max(Φ)、および、リグレッサ行列Φの最小の特異値σ
min(Φ)を求め、さらに、下記数式に相当する処理を行うことで、リグレッサ行列Φの条件数cond(Φ)を取得する。
【数21】
σ
max(Φ):リグレッサ行列の最大の特異値
σ
min(Φ):リグレッサ行列の最小の特異値
(4)目標運動選択処理部1は、運動データQ
k
rについて、下記数式に相当する処理を行い、制約データhを求める(下記数式において、Q
rをQ
k
rとして制約データhを求める)。
【数22】
α:支持多角形の減少係数(0≦α≦1)
なお、支持多角形の減少係数αは、下記数式により取得される。なお、αの初期値は、目標運動選択処理部1により、α
max(0≦α
max≦1)に設定されるものとする。
【数23】
α
max:最大減少係数
a:スケーリング係数
b:バイアス係数
(5)目標運動選択処理部1は、上記(1)~(4)の処理を、K個のQ
k
rについて行い、K個のQ
k
rについて、条件数cond(Φ)を取得する。
(6)目標運動選択処理部1は、下記数式に相当する処理を行い、目標運動データQ
*を決定する。つまり、目標運動選択処理部1は、K個のロボット(制御対象Rbt1)の運動データQ
k
r(∈{Q
1
r,Q
2
r,・・・,Q
2
r})の中から、下記数式の制約条件を満たし、かつ、条件数cond(Φ)を最小とする運動データを選択し、選択した運動データを目標運動データQ
*とする。
【数24】
なお、上式のh
i(Q
r,w
i)は、ループ2のループ処理のi番目の処理において使用される制約データhであることを示しており(h
i(Q
r,w
i)をh
iと簡略表記することもある)、上式のパラメータw
iは、ループ2のループ処理のi番目の処理において使用されるパラメータwであることを示している。
【0087】
学習初期(ループ1のループ処理においてi=1の場合)では、パラメータw1により規定される初期モデルは不正確である。そのため、初期の制約データh1(不等式制約h1)は、不正確なダイナミクスモデルでも生成できるよう、参照軌道を制限することが好ましい。したがって、システム制御処理システム1000において、例えば、学習初期では、準静的な運動軌道を選択するようにすることが好ましい。
【0088】
目標運動選択処理部1は、上記の目標運動選択処理により選択した目標運動データQ*(参照軌道Q*)を含むデータを、データDt1として、目標運動生成部の第2リグレッサ行列取得部21に出力する。また、目標運動選択処理部1は、PD制御用の目標運動データQPD
*(参照軌道QPD
*)(PD制御用の目標運動データQPD
*は、目標運動データQ*から、PD制御に必要なデータを抽出したデータである)を含むデータを、データDt2として、目標運動生成部2のPD制御部22に出力する。
【0089】
(ステップS24):
ステップS24において、目標運動生成処理が実行される。具体的には、以下の処理が実行される。
【0090】
第2リグレッサ行列取得部21は、目標運動選択処理部1から出力されるデータDt1(目標運動データQ*(参照軌道Q*)を含むデータ)を入力し、データDt1から、リグレッサ行列φを取得する処理を行う。具体的には、リグレッサ行列は、制御対象Rbt1の目標運動データQ*(参照軌道Q*)から、時間ステップt(時刻t)(t:自然数、1≦t≦T)におけるリグレッサ行列φ(θ*
t,dot_θ*
t,ddot_θ*
t)(dot_θ*
t:θ*
tの1次微分、ddot_θt:θ*
tの2次微分)を取得する。また、第2リグレッサ行列取得部21は、ループ2のループ処理の初回(i=1の場合)は、事前に得られた制御対象Rbt1のモデルに関する情報(例えば、製造時の図面データ等)に基づいて、パラメータw1(i=1のときのパラメータw)を取得する。そして、第2リグレッサ行列取得部21は、上記により取得したリグレッサ行列φ(θ*
t,dot_θ*
t,ddot_θ*
t)およびパラメータw1を含むデータを、データD1として、目標運動生成処理部23に出力する。
【0091】
目標運動生成処理部23は、第2リグレッサ行列取得部21から出力されるデータD1を用いて目標運動生成処理を実行する。具体的には、目標運動生成処理部23は、下記数式に相当する処理を実行することで、時刻t(時間ステップt)におけるトルクτ
t(トルク系列(トルクベクトル))を取得する。なお、i=1の場合、w=w
1であり、目標運動生成処理部23は、t=1においては、下記数式の右辺の第2項、第3項(PD制御部22により取得されるデータ)をゼロ(なし)として処理する。
【数25】
目標運動生成処理部23は、上記処理(目標運動生成処理)により取得した、制御対象Rbt1に、所定の運動(目標運動データQ
*(参照軌道Q
*)で規定される運動)を実行させるためのデータ(例えば、制御対象Rbt1を動かすための複数のアクチュエータに付与するトルクのデータ(トルクベクトル)τ
t)を、データD3として、制御対象Rbt1に出力する。
【0092】
そして、制御対象Rbt1(ヒト型ロボット)は、システム制御処理装置100(目標運動生成処理部23)から出力されるデータD3(トルクのデータ)により駆動制御されることで、所定の運動を行う。
【0093】
そして、制御対象Rbt1は、システム制御処理装置100により駆動制御(運動生成)されているときにおける制御対象Rbtの各部位(例えば、各リンク)の質量、重心位置、慣性テンソル等のデータ(センサにより取得されるデータ)を、データD4_msrとして、PD制御部22に出力し、また、データD5_msr、データD6_msrとして、それぞれモデル学習処理部3、第1リグレッサ行列取得部6に出力する。
【0094】
PD制御部22は、t=2以降において、目標運動選択処理部1から出力されるデータDt2(目標運動データQ
PD
*(参照軌道Q
PD
*)を含むデータ)と、制御対象Rbt1から出力される計測データD4_msrとを入力し、データDt2、および、計測データD4_msrに基づいて、PD制御データD2を生成する。具体的には、PD制御部22は、下記数式に相当するデータを取得する。
【数26】
θ
*
t:目標運動データQ
PD
*から取得される時刻tにおける制御対象Rbt1の関節角度(系列)
θ
*
tにドットを付したデータ:θ
*
tを時間で微分したデータ
θ
t:時刻tにおける制御対象Rbt1の関節角度(系列)の計測データ(計測データD4_msrに含まれるデータ)
θ
tにドットを付したデータ:時刻tにおける制御対象Rbt1の関節角速度(系列)の計測データ(計測データD4_msrに含まれるデータ)
K
p:比例ゲイン
K
d:微分ゲイン
そして、PD制御部22は、上記により取得したデータを含むデータを、データD2として、目標運動生成処理部23に出力する。
【0095】
目標運動生成処理部23は、t=2以降において、(数式25)に相当する処理を実行することで、時刻t(時間ステップt)におけるトルクτt(トルク系列(トルクベクトル))を取得する。なお、(数式25)の右辺の第2項、第3項は、PD制御部22から出力されるデータD2に含まれるデータを使用する。
【0096】
そして、目標運動生成処理部23は、目標運動生成処理((数式25)による処理)により取得した、制御対象Rbt1に、所定の運動(目標運動データQ*(参照軌道Q*)で規定される運動)を実行させるためのデータ(例えば、制御対象Rbt1を動かすための複数のアクチュエータに付与するトルクのデータ(トルクベクトル)τt)を、データD3として、制御対象Rbt1に出力する。
【0097】
そして、制御対象Rbt1(ヒト型ロボット)は、システム制御処理装置100(目標運動生成処理部23)から出力されるデータD3(トルクのデータ)により駆動制御されることで、所定の運動を行い、制御対象Rbt1は、計測データD4_msrをPD制御部22に出力し、計測データD5_msr、計測データD6_msrをそれぞれモデル学習処理部3、第1リグレッサ行列取得部6に出力する。
【0098】
システム制御処理システム1000において、上記処理が、t=3からt=Tまで、順次、繰り返し実行される。これにより、システム制御処理システム1000において、ループ1のループ処理のi=1において、時間ステップt=1からt=Tまでの制御対象Rbt1の計測データが取得される。
【0099】
(ステップS25):
ステップS25において、モデル学習処理が実行される。具体的には、以下の処理が実行される。
【0100】
モデル学習処理部3は、計測データD5_msrと、記憶部4から読み出したデータ(例えば、過去のリグレッサ行列のデータ、および、過去のトルクのデータ)と、第1リグレッサ行列取得部6の出力データを用いて、モデル学習処理を行い、モデルのパラメータw(モデルの推定パラメータw)を取得(更新)する。具体的には、モデル学習処理部3は、下記数式に相当する処理を実行することで、モデルのパラメータw(モデルの推定パラメータw)を取得(更新)する。
【数27】
なお、時刻(時間ステップ)t=1からt=Tまでのリグレッサ行列φは、第1リグレッサ行列取得部6の出力データに含まれており、モデル学習処理部3が当該リグレッサ行列φのデータを、記憶部4に記憶させているものとする。そして、モデル学習処理部3は、記憶部4から時刻(時間ステップ)t=1からt=Tまでのリグレッサ行列φのデータを読み出し、上記処理を行う。
【0101】
また、時刻(時間ステップ)t=1からt=Tまでのトルクのデータ(制御対象Rbt1により実際に観測されたトルクのデータ)(上記数式のfに相当)は、データD5_msrに含まれており、モデル学習処理部3が当該トルクのデータを、記憶部4に記憶させているものとする。そして、モデル学習処理部3は、記憶部4から時刻(時間ステップ)t=1からt=Tまでのトルクのデータ(制御対象Rbt1により実際に観測されたトルクのデータ)を読み出し、上記処理を行う。
【0102】
また、上記処理により取得されたパラメータ(更新後のパラメータw*)をパラメータwに代入(更新)し(w←w*)、当該更新後のパラメータwは、ループ2のループ処理のi=2の処理に使用される。
【0103】
また、モデル学習処理部3は、上記処理により取得したパラメータw(=更新後のパラメータw*)を含むデータをデータD_prmとして、目標運動生成処理部23および選択基準更新処理部5に出力する。
【0104】
(ステップS26):
ステップS26において、選択基準更新処理が実行される。具体的には、以下の処理が実行される。
【0105】
選択基準更新処理部5は、モデル学習処理部3から出力されるデータD_prmと、記憶部4から読みだしたデータDs_Φを入力する。選択基準更新処理部5は、データD_prmと、データDs_Φを用いて、選択基準更新処理を行い、更新処理後の選択基準データを取得する。具体的には、選択基準更新処理部5は、(数式22)において、パラメータwを、モデル学習処理部3により更新されたパラメータw(=w*)(データD_prmに含まれるパラメータw)とし、(数式22)、(数式23)に相当する処理を行うことで、制約データhを取得する。なお、この取得した制約データhは、ループ2のループ処理のi=2で使用される制約データであるので、制約データh2と表記する(ループ2のループ処理のi番目の処理で使用される制約データhをhiと表記する)。
【0106】
(ステップS27):
ステップS27において、変数iが+1インクリメントされ、処理をステップS28に進める。
【0107】
(ステップS28):
ステップS28において、ループ処理(ループ2)の終了条件(i>I)を満たしているか否かを判定する。ループ処理(ループ2)の終了条件を満たしていない場合(i≦Iの場合)、処理をステップS22に戻し、ループ処理(ステップS23~S27の処理)を繰り返し実行する。一方、ループ処理(ループ2)の終了条件を満たしている場合(i>Iの場合)、システム同定処理を終了する。
【0108】
ループ処理(ループ2)のi番目(i≧2)の処理において、i=1のときの処理と異なる部分を重点的に以下説明する。
【0109】
ステップS23において、(数式21)、(数式23)、(数式24)において使用するリグレッサ行列Φを、下記数式のリグレッサ行列Φに置き換える。つまり、i番目(i≧2)の処理において、最適化処理((数式24)の処理)の対象としている制御対象Rbt1の運動データQ
rのリグレッサ行列Φ(Q
r)と、i-1番目の処理(ループ処理(ループ2))までに得られた計測データについてのリグレッサ行列[Φ(Q
1),・・・,Φ(Q
i-1)]
T(この過去の計測データのリグレッサ行列は、記憶部4に記憶されており、目標運動選択処理部1が、記憶部からデータDs_Φとして取得できるものとする)とを結合した行列Φ(Q)(下記数式)を、(数式21)、(数式23)、(数式24)において使用するリグレッサ行列Φとする。そして、目標運動選択処理部1は、新たに設定したリグレッサ行列Φ(下記数式のリグレッサ行列)を用いて、i=1のときと同様の処理を行うことで、目標運動データQ
*(参照軌道Q
*)を選択(決定)する。
【数28】
上記のようにすることで、以前に得られた計測データでは励起されなかった不正確な基底パラメータを励起するような、有効な参照軌道(制御対象Rbt1の参照軌道)を見つけることができる。
【0110】
そして、ステップS24において、システム制御処理システム1000では、上記により取得した目標運動データQ*(参照軌道Q*)を用いて、目標運動生成処理が実行され、制御対象Rbt1から計測データQi、fiが取得される。
【0111】
そして、ステップS25において、モデル学習処理部3は、制御対象Rbt1から新しく取得した計測データを用いてリグレッサ行列とトルク系列を作成し、それらを以前に取得されたリグレッサ行列とトルク系列と統合する。つまり、モデル学習処理部3は、下記数式に相当する処理を行うことで、リグレッサ行列Φ、および、トルク系列fを取得する。
【数29】
Q
i:ループ2のループ処理のi番目の処理において、制御対象Rbt1で計測されたデータ(新たに取得された計測データ)
f
i:ループ2のループ処理のi番目の処理において、制御対象Rbt1で計測されたトルク系列(新たに取得された計測データ)
なお、過去の計測データ[Φ(Q
1),・・・,Φ(Q
i-1)]
T、および、[f
1,・・・,f
i-1]
Tは、記憶部4に記憶されているものとする。
【0112】
そして、モデル学習処理部3は、上記で設定したリグレッサ行列Φ、および、トルク系列fを用いて、下記数式に相当する処理を実行することで、新たなパラメータw(=更新後のパラメータw
*=w
i)を取得する。
【数30】
そして、ステップS26において、上記で取得されたパラメータw(=更新後のパラメータw
*=w
i)を用いて、選択基準更新処理部が実行され、新たな制約データh(=h
i)が取得される。
【0113】
そして、上記処理がi=Iとなるまで、繰り返し実行され、i>Iとなると、システム同定処理が終了する。
【0114】
そして、システム制御処理システム1000は、上記のシステム同定処理が終了したときのパラメータwを、制御対象Rbt1の推定パラメータ(システム同定処理後の推定パラメータ)として取得する。
【0115】
≪まとめ≫
以上のように、システム制御処理システム1000では、従来法のように、良い初期モデルを用いて、複雑な最適化問題を解くことなく、正確なモデルの同定が可能である。つまり、システム制御処理システム1000では、多量にある運動データ(例えば、ヒトの運動データ)を、制御対象Rbt1用に変換した運動データ(複数個の運動データ)を用意し、制約条件を満たす運動データを複数個の運動データから選択し、選択した運動データにより運動生成し、当該運動データによる運動を実行させたときにおいて、制御対象Rbt1から計測データを取得する。そして、システム制御処理システム1000では、取得した計測データに基づいて、学習処理を行い(モデル(制御対象Rbt1のモデル)のパラメータの更新を行い)、さらに、更新したパラメータにより、制約条件を更新させる。システム制御処理システム1000では、パラメータの精度が徐々に向上するため、制約条件を適切に緩和することができる。
【0116】
これにより、システム制御処理システム1000では、どのような運動データにより、学習処理を進めればよいかのカリキュラム(運動データ系列)を取得できる。
【0117】
そして、システム制御処理システム1000では、上記により取得されるカリキュラム(運動データ系列)により、制約条件を満たしつつ、制御対象Rbt1に徐々に複雑な運動を実行させることができ、より高精度な学習処理(パラメータ更新処理)を行うことができる。
【0118】
その結果、システム制御処理システム1000では、システム同定が困難な制御対象に対しても、良い初期モデルを必要とせず、正確なモデルの同定(制御対象Rbt1に対するシステム同定)が可能となる。
【0119】
つまり、システム制御処理システム1000では、初期状態においては、制約条件が厳しい状態(例えば、制御対象Rbt1に準静的な運動軌道による運動を実行させる状態)で学習処理(パラメータ更新処理)を行い、計測データに基づいて、推定されるパラメータを更新することで、推定パラメータの精度を向上させることができる。そして、システム制御処理システム1000では、精度向上した推定パラメータにより、制約条件を緩和することができるため、学習が進むにつれて、制約条件を満たしつつ、複雑な運動データにより制御対象Rbt1に運動させる(運動生成できる)ことができる。
【0120】
したがって、システム制御処理システム1000では、良い初期モデルを必要とせず、システム同定が困難な制御対象(システム同定が困難な複雑な構成(構造)を有する制御対象)に対しても、正確なモデルの同定が可能となる。
【0121】
(1.3:実験)
本実施形態のカリキュラムを用いたシステム同定処理(システム制御処理システム1000により実行される処理)について、その有効性を評価するためにシミュレーション環境において実験を行ったので、それについて、以下説明する。
【0122】
(1.3.1:評価方法)
システム同定実験を200回行った。各実験において、同定結果に誤差が生じるように、異なるガウスノイズδfの系列を計算トルク(制御対象Rbt1を駆動するためのトルク)に付加した。ノイズの標準偏差は、トルク制限の5%になるように設定した。本発明のカリキュラムを用いたシステム同定処理(システム制御処理システム1000により実行される処理)における最大反復回数(システム同定手法の繰り返し回数)は、I=5とした。不正確な初期モデルを用意し、学習が進むにつれ、基底パラメータの推定誤差が徐々に減るかどうかを検証した。推定誤差は以下のように計算された。
【数31】
w
true:真の基底パラメータ(CADパラメータを使用)
D:基底パラメータの次元(パラメータの数)
パラメータの信頼性は、各推定パラメータの相対標準偏差を用いて評価された(下記数式)。
【数32】
ここで、上式のw
jにハットを付した変数は200個の推定パラメータの平均値のj番目の要素であり、d
e,jは、推定誤差の標準偏差である。もし、d
wj%が10%以下、もしくは、上式のw
jにハットを付した変数が小さい(<0.02)場合、パラメータは信頼性が高く推定できたとみなした。さらに、交差検証を用いたパラメータの信頼性の評価も行った。交差検証のための参照軌道を用意し、(数式25)において、その参照軌道と真の基底パラメータを使い、計測データdc(下記数式)を集めた。
【数33】
初期基底パラメータと、推定された基底パラメータwそれぞれに対する平均平方二乗誤差(RMSE)を以下のように計算した。
【数34】
さらに、本発明の最適化処理((数式24)の処理)に対する評価を行った。本発明の手法(システム同定処理方法)では、ロボット運動データセットから適切な参照軌道が選ばれることで、カリキュラムが構築された。本発明の手法(システム同定処理方法)を、カリキュラムを構築しない(最適化問題(数式24)を解かない)方法と比較した。この方法では、制約(h
i(Q
r,w
i)<0)を満たす参照軌道を、ランダムに選ぶこととした。カリキュラムによってデータ収集プロセスがガイドされることで、基底パラメータを効率よく学習できることを検証した。
【0123】
(1.3.2:実験設定)
≪ロボットモデル≫
本実験では、上半身ヒト型ロボットのモデルを用いたシミュレーション実験を行った。ロボットが転倒するリスクがあると仮定し、ZMPを用いたバランス制約を考慮した。ロボットは、片腕に7自由度、胴体に2自由度、頭部に2自由度の計18自由度を持つ。ダイナミクスシミュレーションは、物理エンジンMuJoCoを用いて行った。センサ信号(各関節角度、関節角速度、トルク)は、10ミリ秒間隔で計測された。(数式25)の比例・微分(PD)制御器のゲインKpとKdは、手動で設定された。このとき、ゲインを小さな値に設定したため、PD制御器だけでは、ロボットは参照軌道を追従できなかった。
【0124】
ロボットは、D=132個の基底パラメータを持つ。実験では、真の基底パラメータwtrueを算出するための慣性パラメータw’trueとして、CADパラメータを用いた。初期パラメータw1を算出するための慣性パラメータw’1は、一様分布からランダムに生成した。もし、w’trueのj番目の値が0より大きければ、一様分布の区間は[0,2w’true
j]とし、そうでなければ、区間は[2w’true
j,0]とした。
【0125】
≪不等式制約の緩和≫
本発明の手法では、各反復試行において、不等式制約(hi(Qr,wi)<0)が緩和された。具体的には、各反復試行において、支持多角形の減少係数が(数式23)のように計算された。なお、減少係数αは、(数式23)の基準によって決定された。
【0126】
初期反復において、ロボット運動データセットから5%の参照軌道が選択可能になるように、αmax=0.74と設定した。スケーリング係数a、バイアス係数bは、それぞれ、
a=2.5×10-4
b=1.0
とした。
【0127】
条件数cond(Φ)は、反復回数が増えるごとに、小さくなると考えられるため、減少係数も小さくなる。したがって、支持多角形の大きさは徐々に広がっていき、本発明の手法では、学習が進むにつれ、よりダイナミックな運動を選択可能になる。
【0128】
≪ヒトの運動データベースとリターゲティングの設定≫
モーションリターゲティング処理において、the KIT Bimanual Manipulation Datasetを用いた。データセットには、蓋の開閉や皿を拭くなどの、ヒトの両手で行う日常の家事動作に関する多くの計測データが含まれている。各計測データは、身体の各パーツに対する三次元座標が、Δt=10ミリ秒の時間間隔で保存されたものであり、c3dフォーマットにエンコードされた。データセットから、110個の運動を選び、そのうち98個をヒトの運動軌道データベースとして利用し、残りの12個を交差検証のための参照軌道として用いた。
【0129】
モーションリターゲティング処理は、計算機環境を用いて行われ、MATLAB環境において準ニュートン法によって実行された。ペナルティ関数の重みはw
g=100とw
c=50に設定された((数式5)を参照)。関節角度軌道は、200ミリ秒の間隔の制御点を持つB-スプライン曲線を用いて表された。モーションリターゲティング処理の後、それぞれの運動データは、
図3に示す運動の名前に応じてラベル付けされた。
【0130】
≪実験結果≫
本発明の手法では、カリキュラムを作るために、ロボット運動データセットから、一連の参照軌道が選ばれた。ロボット運動データセットを、
図4に示す。本発明の手法では、ロボット運動データセットをヒトの大規模運動データベースを用いて構築したため、データセットは、様々な運動軌道を含んでいる。いくつかの運動の例が
図4に示されている(
図4において、太線の矩形内に示した各矩形は、運動データを示している(1つの矩形が1つの運動データを示している))。システム同定実験は様々なノイズ設定を用いて200回行われたため、運動データセットから適切な参照軌道を選ぶことで、200個のカリキュラムが構築された。
【0131】
図5は、代表的なカリキュラム(上半身ヒト型ロボットの同定カリキュラム)を示す図である(
図5において、太線の矩形内に示した各矩形は、運動データを示している(1つの矩形が1つの運動データを示している))。
図5において、太い線で囲まれた長方形の中の各ブロックは、各反復試行において、生成可能な参照軌道を表している。各ブロックの濃淡は、各反復試行における相対的な条件数の大きさを表している。濃い色のブロックは、薄い色のブロックよりも、より小さい条件数を有している。各反復試行において最も条件数の小さい(
図5中に点で示された)ブロックをつないだ矢印が、カリキュラムを示している。
【0132】
図5に示すように、本発明の手法では、各反復試行において、全体のデータセットの中から最も条件数が小さくなる参照軌道が選ばれており、適切なカリキュラムを構築できていることが分かる。
【0133】
図6は、本発明の手法において、各反復試行でのバランス制約の緩和を示す図である。
図6において、ロボットの胴体の略下にある円は、参照軌道を用いて計算したZMPを示しており、ロボットの胴体の略下の大きい方(外側)の多角形は、支持多角形の上限、下限を表しており、ロボットの胴体の略下の小さい方(内側)の多角形は、支持多角形の減少係数α((数式23)を参照)により減少させた支持多角形の上限、下限を表している。
【0134】
図6に示すように、本発明の手法では、ZMPの上限と下限は(数式23)の処理により徐々に広げられたため、参照軌道の多様性は、反復回数が増えるにつれて増加している。例えば、第一、第二試行目において、Sweepの中の運動は利用できなかったが、それらの運動は、第三試行目には生成可能になり、最も小さい条件数を示した。
図6に示すように、本発明の手法では、支持多角形が、試行回数が増えるにつれ拡大するので、試行回数が増えるにつれ、ロボットに多様な運動(より複雑な運動)を実行させることが可能になることが分かる。
図7に、各反復試行における、真のパラメータと推定パラメータのRMSE((数式31))を示す。また、初期モデルの誤差を、青い実線で表す。
図7に示されているように、反復が進むにつれ推定誤差が徐々に下がった。最終的に、第五試行目において、誤差の中央値は0.243になった。さらに、パラメータの信頼性を、相対標準偏差((数式32))を用いて評価した。本発明の手法では、第五試行目において、75.8%のパラメータ(132個中100個のパラメータ)を高い信頼性を持って推定することができた。初期モデルでは、57.6%のパラメータ(132個中76個のパラメータ)のみ信頼性が高かった。したがって本発明の手法は、良い初期モデルが利用できなくても、正確なモデルを学習することが可能だった。
【0135】
図8は、関節トルクに対するRMSE((数式34))を表している。RMSEは交差検証のためのデータセットを用いて計算されており、それらのデータセットは学習には使われていない。
図8に示されているように、交差検証のためのデータセットにおいて誤差は小さくなった。したがって、本発明の手法では、基底パラメータを高い信頼性をもって推定することができた。本発明のカリキュラムを用いた同定手法と、カリキュラムを用いない方法を比較した結果を、
図9に示す。
図9において、各試行回数の左側のデータがカリキュラムを用いない方法による条件数のデータであり、右側のデータが本発明のカリキュラムを用いた同定手法による条件数のデータである。
図9に示すように、参照軌道がロボット運動データセットからランダムに選ばれた場合、各反復試行において、条件数はかなり大きな値となった。一方で、本発明のカリキュラムを用いた同定手法では、正確な基底パラメータを効率よく学習することが可能であり、カリキュラムを用いてデータ収集プロセスをガイドすることが重要だったことが分かる。
【0136】
以上の通り、上記実験からも、本発明の手法(システム制御処理システム1000によるシステム制御処理システム1000)の顕著な有効性が分かる。
【0137】
[他の実施形態]
上記実施形態では、システム制御処理システム1000(あるいは、システム制御処理装置100)の制御対象Rbt1がヒト型ロボット、あるいは、上半身ヒト型ロボットであることを想定しているが、これに限定されることはなく、システム制御処理システム1000(あるいは、システム制御処理装置100)の制御対象Rbtは、ヒト型ロボット、上半身ヒト型ロボットに限定されることはない。例えば、システム制御処理システム1000(あるいは、システム制御処理装置100)の制御対象Rbtは、従来手法では、高精度なシステム同定が困難なシステム、装置等(例えば、ロボット(例えば、ヒト型ロボット以外のロボット)、多足歩行ロボット、複雑な構造を有する機械等)であってもよい。
【0138】
また、上記実施形態のシステム制御処理システム1000(あるいは、システム制御処理装置100)により、システム同定処理後のパラメータで固定したシステム制御処理システム、あるいは、システム制御処理装置を実現するようにしてもよい。この場合、例えば、
図10に示すように、システム制御処理システム1000において、システム制御処理装置100を、システム制御処理装置100Aに置換した構成により実現できる。つまり、
図10に示すように、目標運動データ(目標運動データQ
*)を外部からシステム制御処理装置100Aの目標運動生成部2の第2リグレッサ行列取得部21およびPD制御部22に入力するようにし、目標運動生成処理部23のパラメータwを、システム同定処理により取得されたパラメータw(最適パラメータw)に固定して、システム制御処理装置100と同様に運動生成処理を行うようにすればよい。これにより、システム制御処理装置100Aにより、システム同定処理後のパラメータ(最適パラメータ)wを用いたモデル予測制御が可能となるため、制御対象Rbt1を高精度に制御することが可能となる。
【0139】
また、上記実施形態で説明したシステム制御処理システム1000、システム制御処理装置100において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
【0140】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0141】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0142】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0143】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0144】
例えば、上記実施形態の各機能部を、ソフトウェアにより実現する場合、
図11に示したハードウェア構成(例えば、CPU(GPUを含む)、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0145】
また、上記実施形態の各機能部をソフトウェアにより実現する場合、当該ソフトウェアは、
図11に示したハードウェア構成を有する単独のコンピュータを用いて実現されるものであってもよいし、複数のコンピュータを用いて分散処理により実現されるものであってもよい。
【0146】
また、本明細書内の記載、特許請求の範囲の記載において、「最適化」(あるいは「最適」)とは、最も良い状態にすることをいい、システム(モデル)を「最適化」するパラメータとは、当該システムの目的関数の値が最適値となるときのパラメータのことをいう。「最適値」は、システムの目的関数の値が大きくなるほど、システムが良い状態となる場合は、最大値であり、システムの目的関数の値が小さくなるほど、システムが良い状態となる場合は、最小値である。また、「最適値」は、極値であってもよい。また、「最適値」は、所定の誤差(測定誤差、量子化誤差等)を許容するものであってもよく、所定の範囲(十分収束したとみなすことができる範囲)に含まれる値であってもよい。
【0147】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。また、上記実施形態における処理方法において、発明の要旨を逸脱しない範囲で、一部のステップが、他のステップと並列に実行されるものであってもよい。
【0148】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0149】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0150】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0151】
1000、1000A システム制御処理システム
100、100A システム制御処理装置
1 目標運動選択処理部
2 目標運動生成部
3 モデル学習処理部
5 選択基準更新処理部
6 第1リグレッサ行列取得部
Rbt1 制御対象
PP1 運動データ変換処理部