IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社国際電気通信基礎技術研究所の特許一覧

特開2022-188370ロボット制御装置、ロボット制御方法、および、プログラム
<>
  • 特開-ロボット制御装置、ロボット制御方法、および、プログラム 図1
  • 特開-ロボット制御装置、ロボット制御方法、および、プログラム 図2
  • 特開-ロボット制御装置、ロボット制御方法、および、プログラム 図3
  • 特開-ロボット制御装置、ロボット制御方法、および、プログラム 図4
  • 特開-ロボット制御装置、ロボット制御方法、および、プログラム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022188370
(43)【公開日】2022-12-21
(54)【発明の名称】ロボット制御装置、ロボット制御方法、および、プログラム
(51)【国際特許分類】
   B25J 5/00 20060101AFI20221214BHJP
【FI】
B25J5/00 F
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021096353
(22)【出願日】2021-06-09
【国等の委託研究の成果に係る記載事項】(出願人による申告)2020-2021年度国立研究開発法人新エネルギー・産業技術総合開発機構「人と共に進化する次世代人工知能に関する技術開発事業/人と共に進化するAIシステムのフレームワーク開発/サイボーグAIに関する研究開発」、および、令和2年度総務省戦略的情報通信研究開発推進事業(SCOPE)「ロボットの運動と知能の融合に向けた、ビッグデータを用いたヒトの運動能力の抽出と運動生成への利用」、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】393031586
【氏名又は名称】株式会社国際電気通信基礎技術研究所
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100148275
【弁理士】
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100142745
【弁理士】
【氏名又は名称】伊藤 世子
(72)【発明者】
【氏名】石原 弘二
(72)【発明者】
【氏名】森本 淳
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707CS08
3C707KS21
3C707KS23
3C707KT01
3C707KT04
3C707LV19
3C707LW07
3C707WA03
3C707WA13
3C707WK07
(57)【要約】
【課題】運動指令を計算する時間が長い時間となることを許容し、ロボットが転倒することなく、ロボットに多様な運動をさせることができるロボット制御装置を実現する。
【解決手段】ロボット制御装置100では、階層的な制御、つまり、モデル予測制御部2によるモデル予測処理、および、PD制御部3によるPD制御を行うことができる。これにより、このロボット制御装置では、運動指令を計算する時間が長い時間となることを許容し、ロボットが転倒することなく、ロボットに多様な運動をさせることができる。
【選択図】図1

【特許請求の範囲】
【請求項1】
ロボットに所定の運動を実行させるために前記ロボットを制御するためのロボット制御装置であって、
前記ロボットに所定の運動をさせるための目標データを生成する目標生成部と、
前記目標データに基づいて、前記ロボットに前記所定の運動をさせるための力学制約に従うモデルを用いてモデル予測処理を行うことで、前記ロボットを制御するための制御入力であるMPC用制御入力を取得するモデル予測制御部と、
前記目標データと前記ロボットの状態とに基づいて、前記ロボットの平衡状態を維持させるための制御入力であるPD制御用制御入力を取得するPD制御部と、
前記MPC用制御入力、および、前記PD制御用制御入力を合成した制御入力を前記ロボットの駆動装置に出力する、あるいは、前記MPC用制御入力、および、前記PD制御用制御入力のいずれか一方を前記ロボットの駆動装置に出力する合成部と、
を備えるロボット制御装置。
【請求項2】
前記モデル予測制御部は、第1時間間隔で、前記MPC用制御入力を取得し、
前記PD制御部は、前記第1時間間隔よりも短い時間間隔である第2時間間隔で、前記PD制御用制御入力を取得する、
請求項1に記載のロボット制御装置。
【請求項3】
前記目標生成部は、前記PD制御部に出力する目標データを、前記ロボットの平衡状態を維持させるために必要なデータに関するデータのみのデータであるPD制御用目標データとして、前記PD制御部に出力する、
請求項1または2に記載のロボット制御装置。
【請求項4】
前記モデル予測制御部は、前記ロボットの目標軌道をN時間ステップ(N:自然数)分予測するモデル予測処理を実行するものであり、前記目標データと、前記ロボットの現在の状態とに基づいて、前記N時間ステップの期間における前記ロボットの状態を表す状態ベクトルのシーケンス、ローカルフィードバックゲインのシーケンス、および、MPC用制御入力のシーケンスを最適化する処理を行うことで、前記N時間ステップの期間における最適な状態ベクトルシーケンス、最適なローカルフィードバックゲインシーケンス、および、最適なMPC用制御入力のシーケンスを取得し、
前記PD制御部は、
前記ロボットの現在の状態を表す状態ベクトルと、前記モデル予測制御部により取得された前記最適な状態ベクトルシーケンスおよび最適なローカルフィードバックゲインシーケンスとを用いて、モデル予測についてのPD制御用制御入力を取得する第1PD制御部と、
前記ロボットの現在の状態を表す状態ベクトルと、前記PD制御用目標データとを用いて、前記ロボットの平衡状態を維持させるためのPD制御用制御入力を取得する第2PD制御部と、
前記第1PD制御部で取得されたモデル予測についてのPD制御用制御入力と、前記第2PD制御部で取得された前記ロボットの平衡状態を維持させるためのPD制御用制御入力とを加算する加算部と、
を備える、
請求項3に記載のロボット制御装置。
【請求項5】
ロボットに所定の運動を実行させるために前記ロボットを制御するためのロボット制御方法であって、
前記ロボットに所定の運動をさせるための目標データを生成する目標生成ステップと、
前記目標データに基づいて、前記ロボットに前記所定の運動をさせるための力学制約に従うモデルを用いてモデル予測処理を行うことで、前記ロボットを制御するための制御入力であるMPC用制御入力を取得するモデル予測制御ステップと、
前記目標データと前記ロボットの状態とに基づいて、前記ロボットの平衡状態を維持させるための制御入力であるPD制御用制御入力を取得するPD制御ステップと、
前記MPC用制御入力、および、前記PD制御用制御入力を合成した制御入力を前記ロボットの駆動装置に出力する、あるいは、前記MPC用制御入力、および、前記PD制御用制御入力のいずれか一方を前記ロボットの駆動装置に出力する合成ステップと、
を備えるロボット制御方法。
【請求項6】
請求項5に記載のロボット制御方法をコンピュータに実行させるためのプログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、人型ロボット等のロボットの動作を制御するための技術に関する。
【背景技術】
【0002】
近年、姿勢を維持しつつ歩行等を行うロボット(例えば、人型ロボット(ヒューマノイドロボット)等)が開発されている。このようなロボットに多様な動作をさせるためには、ロボットの姿勢を適切に制御する技術が必要となる。このようなロボットの姿勢を適切に制御する技術として、例えば、先行技術文献1には、ロボットを倒立振子とみなし、ロボットの姿勢を維持させる技術の開示がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2012-40644号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
一般に、ロボットに所定の運動をさせようとする場合(ロボットの運動生成を行う場合)、ロボットに搭載されているアクチュエータに指令を与えることで、ロボットに所定の動作(運動)をさせることが可能となる。つまり、ロボットに所定の運動をさせようとする場合(ロボットの運動生成を行う場合)、(1)アクチュエータへの指令の計算し、(2)計算した指令をロボットに入力し、(3)ロボットが動くというシーケンスが繰り返されることで、ロボットに所定の運動をさせることができる。
【0005】
人型ロボットの場合、多くのアクチュエータを有しているので、人型ロボットの全てのアクチュエータに対して、運動指令(ロボットに運動させるための指令)を計算すると、その計算時間に長い時間が必要となる。これに対処するために、運動指令を計算する時間を短縮する手法が開発されてきている。特許文献1の技術は、このような手法(運動指令を計算する時間を短縮する手法)を用いる技術であり、ロボットを倒立振子とみなし、運動指令を計算する処理を単純化し、運動指令を計算する時間を短縮している。
【0006】
しかしながら、このような手法では、歩行や走行などの限られた運動をロボットにさせることはできるが、より複雑な運動を、ロボットが転倒することなく、ロボットにさせることは困難である。
【0007】
そこで、本発明は、上記課題に鑑み、運動指令を計算する時間が長い時間となることを許容し、ロボットが転倒することなく、ロボットに多様な運動をさせることができるロボット制御装置、ロボット制御方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、第1の発明は、ロボットに所定の運動を実行させるためにロボットを制御するためのロボット制御装置であって、目標生成部と、モデル予測制御部と、PD制御部と、合成部と、を備える。
【0009】
目標生成部は、ロボットに所定の運動をさせるための目標データを生成する。
【0010】
モデル予測制御部は、目標データに基づいて、ロボットに所定の運動をさせるための力学制約に従うモデルを用いてモデル予測処理を行うことで、ロボットを制御するための制御入力であるMPC用制御入力を取得する。
【0011】
PD制御部は、目標データとロボットの状態とに基づいて、ロボットの平衡状態を維持させるための制御入力であるPD制御用制御入力を取得する。
【0012】
合成部は、MPC用制御入力、および、PD制御用制御入力を合成した制御入力をロボットの駆動装置に出力する、あるいは、MPC用制御入力、および、PD制御用制御入力のいずれか一方をロボットの駆動装置に出力する。
【0013】
このロボット制御装置では、階層的な制御、つまり、(1)モデル予測制御部によるモデル予測処理(上位層の制御)(モデル予測処理により運動指令を計算する処理)、および、(2)PD制御部によるPD制御(下位層の制御)(ロボットの姿勢を維持する制御(平衡状態を維持させる制御))を行うことができる。これにより、このロボット制御装置では、運動指令を計算する時間が長い時間となることを許容し、ロボットが転倒することなく、ロボットに多様な運動をさせることができる。
【0014】
第2の発明は、第1の発明であって、モデル予測制御部は、第1時間間隔で、MPC用制御入力を取得(または更新)し、PD制御部は、第1時間間隔よりも短い時間間隔である第2時間間隔で、PD制御用制御入力を取得(または更新)する。
【0015】
これにより、このロボット制御装置では、モデル予測制御部での処理時間を、PD制御部での処理時間よりも長くすることができる。
【0016】
第3の発明は、第1または第2の発明であって、目標生成部は、PD制御部に出力する目標データを、ロボットの平衡状態を維持させるために必要なデータに関するデータのみのデータであるPD制御用目標データとして、PD制御部に出力する。
【0017】
このロボット制御装置では、PD制御部に、ロボットの平衡状態を維持させるために必要なデータに関するデータ(例えば、ロボットの関節の角度のデータ)のみのデータを出力するので、PD制御部での処理が効率良く実行できる。
【0018】
第4の発明は、第3の発明であって、モデル予測制御部は、ロボットの目標軌道をN時間ステップ(N:自然数)分予測するモデル予測処理を実行するものであり、目標データと、ロボットの現在の状態とに基づいて、N時間ステップの期間におけるロボットの状態を表す状態ベクトルのシーケンス、ローカルフィードバックゲインのシーケンス、および、MPC用制御入力のシーケンスを最適化する処理を行うことで、N時間ステップの期間における最適な状態ベクトルシーケンス、最適なローカルフィードバックゲインシーケンス、および、最適なMPC用制御入力のシーケンスを取得する。
【0019】
そして、PD制御部は、第1PD制御部と、第2PD制御部と、加算部と、を備える。
【0020】
第1PD制御部は、ロボットの現在の状態を表す状態ベクトルと、モデル予測制御部により取得された最適な状態ベクトルシーケンスおよび最適なローカルフィードバックゲインシーケンスとを用いて、モデル予測についてのPD制御用制御入力を取得する。
【0021】
第2PD制御部は、ロボットの現在の状態を表す状態ベクトルと、PD制御用目標データとを用いて、ロボットの平衡状態を維持させるためのPD制御用制御入力を取得する。
【0022】
加算部は、第1PD制御部で取得されたモデル予測についてのPD制御用制御入力と、第2PD制御部で取得されたロボットの平衡状態を維持させるためのPD制御用制御入力とを加算する。
【0023】
これにより、このロボット制御装置では、第1PD制御部により、モデル予測についてのPD制御用制御入力を取得するとともに、第2PD制御部により、ロボットの平衡状態を維持させるためのPD制御用制御入力を取得することができる。
【0024】
第5の発明は、ロボットに所定の運動を実行させるためにロボットを制御するためのロボット制御方法であって、目標生成ステップと、モデル予測制御ステップと、PD制御ステップと、合成ステップと、を備える。
【0025】
目標生成ステップは、ロボットに所定の運動をさせるための目標データを生成する。
【0026】
モデル予測制御ステップは、目標データに基づいて、ロボットに所定の運動をさせるための力学制約に従うモデルを用いてモデル予測処理を行うことで、ロボットを制御するための制御入力であるMPC用制御入力を取得する。
【0027】
PD制御ステップは、目標データとロボットの状態とに基づいて、ロボットの平衡状態を維持させるための制御入力であるPD制御用制御入力を取得する。
【0028】
合成ステップは、MPC用制御入力、および、PD制御用制御入力を合成した制御入力をロボットの駆動装置に出力する、あるいは、MPC用制御入力、および、PD制御用制御入力のいずれか一方をロボットの駆動装置に出力する。
【0029】
これにより、第1の発明と同様の効果を奏するロボット制御方法を実現することができる。
【0030】
第6の発明は、第5の発明であるロボット制御方法をコンピュータに実行させるためのプログラムである。
【0031】
これにより、第1の発明と同様の効果を奏するロボット制御方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【0032】
本発明によれば、運動指令を計算する時間が長い時間となることを許容し、ロボットが転倒することなく、ロボットに多様な運動をさせることができるロボット制御装置、ロボット制御方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【0033】
図1】第1実施形態に係るロボット制御装置100の概略構成図。
図2】ロボット制御装置100で実行される処理のシーケンス図(タイミングチャート)。
図3】所定の運動を実行させた場合のロボットの状態を示す図。
図4】所定の運動を実行させた場合のロボットの状態を示す図。
図5】CPUバス構成を示す図。
【発明を実施するための形態】
【0034】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0035】
<1.1:ロボット制御装置の構成>
図1は、第1実施形態に係るロボット制御装置100の概略構成図である。
【0036】
ロボット制御装置100は、ロボットRbtを制御するための装置であって、ロボットRbtに搭載されているセンサRbt_snsrからデータを取得するとともに、ロボットRbtに搭載されているアクチュエータRbt_actrを駆動することで、ロボットRbtに所定の動作を行わせるように制御するための装置である。なお、ロボット制御装置100は、ロボットRbtに搭載されている。
【0037】
ロボット制御装置100は、図1に示すように、目標生成部1と、モデル予測制御部2と、PD制御部3(PD:Proportional Differential)と、合成部4と、を備える。
【0038】
目標生成部1は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。目標生成部1は、状態ベクトルxに基づいて、(1)モデル予測制御部2に対する目標データQと、(2)PD制御部3に対する目標データQ とを算出する。そして、目標生成部1は、算出した目標データQをモデル予測制御部2に出力するとともに、算出した目標データQ をPD制御部3に出力する。
【0039】
モデル予測制御部2は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。また、モデル予測制御部2は、目標生成部1から出力される目標データQを入力する。モデル予測制御部2は、状態ベクトルxと、目標データQとに基づいて、モデル予測処理を行い、運動指令データU(最適制御入力シーケンスU)を取得し、取得した運動指令データU(これを「MPC用運動指令データU」という)、または、運動指令データUに含まれる現時間ステップの制御入力uMPCを合成部4に出力する。また、モデル予測制御部2は、モデル予測処理により、最適状態シーケンスデータXと、ローカル最適フィードバックゲインデータ列Gとを取得し、取得した最適状態シーケンスデータXおよびローカル最適フィードバックゲインデータ列GをPD制御部3に出力する。
【0040】
PD制御部3は、図1に示すように、第1PD制御部31と、第2PD制御部32と、加算部33とを備える。
【0041】
第1PD制御部31は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。また、第1PD制御部31は、モデル予測制御部2から出力される最適状態シーケンスデータXおよびローカル最適フィードバックゲインデータ列Gを入力する。第1PD制御部31は、状態ベクトルx、最適状態シーケンスデータX、および、ローカル最適フィードバックゲインデータ列Gに基づいて、モデル予測制御(MPC:Model Predictive Control)のためのPD制御用運動指令データuPD-MPC(これを「PD-MPC用運動指令データuPD-MPC」という)を取得し、取得したPD-MPC用運動指令データuPD-MPCを加算部33に出力する。
【0042】
第2PD制御部32は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。また、第2PD制御部32は、目標生成部1から出力される目標データQ を入力する。第2PD制御部32は、状態ベクトルxと、目標データQ とに基づいて、ロボットRbtの姿勢を維持するためのPD制御用運動指令データuPD-equiv(これを「PD-equiv用運動指令データuPD-equiv」という)を取得し、取得したPD-equiv用運動指令データuPD-equivを加算部33に出力する。
【0043】
加算部33は、第1PD制御部31から出力されるPD-MPC用運動指令データuPD-MPCと、第2PD制御部32から出力されるPD-equiv用運動指令データuPD-equivとを入力する。加算部33は、PD-MPC用運動指令データuPD-MPCと、PD-equiv用運動指令データuPD-equivとに対して加算処理を行うことで、ロボットRbtに対するPD制御のための運動指令データuPDs(=uPD-MPC+uPD-equiv)(これを「PD制御用運動指令データuPDs」という)を取得する。そして、加算部33は、取得したPD制御用運動指令データuPDsを合成部4に出力する。
【0044】
合成部4は、モデル予測制御部2から出力されるMPC用運動指令データUまたは運動指令データUに含まれる現時間ステップの制御入力uMPCと、PD制御部3の加算部33から出力されるPD制御用運動指令データuPDsとを入力する。合成部4は、MPC用運動指令データUまたは運動指令データUに含まれる現時間ステップの制御入力uMPCと、PD制御用運動指令データuPDsとを合成する処理(例えば、加算処理)を実行し、トルクについてのベクトルτ(例えば、τ=uMPC+uPDs、uMPCは、Uに含まれるデータ。)(これを「トルクベクトルτ」という)を取得する。なお、ロボットRbtに搭載されているアクチュエータであって、制御対象のアクチュエータの数がn個(n:自然数)である場合、ロボット制御装置100から第i番目(i:自然数、i≦n)のアクチュエータに対して出力するトルクをτとすると、トルクベクトルτは、
τ=[τ,τ,・・・,τ
τ:ベクトルτの転置ベクトル(n行1列の行列τの転置行列)
である。
【0045】
合成部4は、取得したトルクベクトルτをロボットRbtのアクチュエータRbt_actrに出力する。
【0046】
ロボットRbtは、姿勢を維持しながら、多様な動作(多様な運動)を行うことができるロボット(例えば、人型ロボット(ヒューマノイド・ロボット))であり、ロボット制御装置100により制御される対象である。
【0047】
ロボットRbtは、所定の物理量を取得できる多様なセンサ(例えば、角度センサ、慣性計測装置(IMU:Inertial Measurement Unit)、カメラ等)と、多様な動作(多様な運動)を行うためのアクチュエータ(例えば、ロボットRbtの関節を回転させたり、移動させたりするための動力を発生させるための駆動装置)とを備える。
【0048】
ロボットに搭載されている多様なセンサ(例えば、角度センサ、慣性計測装置(IMU:Inertial Measurement Unit)、カメラ等)により、ロボットの状態を特定するためのデータが取得され、取得されたデータは、状態ベクトルxとして、ロボット制御装置100に出力される。状態ベクトルxとしては、例えば、(1)ロボットRbtの所定の部位の位置を示すデータ、(2)ロボットRbtの姿勢(3次元空間における姿勢)を特定するためのデータ、(3)ロボットRbtの関節の角度、および、(4)それらの時間微分データ等が含まれる。そして、上記(1)~(4)のデータは、ロボットに搭載されているセンサやセンサ信号の処理により取得される。
【0049】
ロボットRbtに搭載されているアクチュエータは、ロボット制御装置100から出力されるトルクベクトルτを入力し、当該トルクベクトルτにより特定されるトルクが出力されるように駆動される。例えば、ロボットRbtに搭載されているアクチュエータであって、ロボット制御装置100の制御対象であるアクチュエータがn個である場合、i番目のアクチュエータには、トルクベクトルτ(τ=[τ,τ,・・・,τ])のi番目の要素τで特定されるトルクが、ロボット制御装置100から出力され、当該i番目のアクチュエータは、トルクτで駆動される。
【0050】
このように、ロボットRbtに搭載されているアクチュエータが、ロボット制御装置100から出力されるトルクベクトルτにより駆動されることで、ロボットRbtは、所定の動作(運動)を行う。
【0051】
<1.2:ロボット制御装置の動作>
以上のように構成されたロボット制御装置100の動作について、以下、説明する。
【0052】
図2は、ロボット制御装置100で実行される処理のシーケンス図(タイミングチャート)である。
【0053】
以下では、図2のシーケンス図(タイミングチャート)を参照しながら、ロボット制御装置100の動作について、説明する。
【0054】
≪初期化処理(時刻t~t)≫
まず、初期化処理(図2の時刻t~tの処理)について説明する。
【0055】
初期化処理において、目標生成部1は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルx(初期状態の状態ベクトルx)として入力する。目標生成部1は、状態ベクトルxに基づいて、(1)モデル予測制御部2に対する目標データQと、(2)PD制御部3に対する目標データQ とを算出する。目標生成部1での具体的な処理について、以下、説明する。
【0056】
まず、状態ベクトルx(nx個(nx:自然数)の実数を要素とするベクトル(1×nxの行列))を以下のように規定する。
【数1】
:ロボットRbtの所定の部位の位置のデータ、3次元姿勢についてのデータ等を要素とするベクトル
:ロボットRbtの所定の部位の速度のデータ、3次元角速度についてのデータ等を要素とするベクトル
:ロボットRbtの関節の角度のデータを要素とするベクトル
:ロボットRbtの関節の角速度のデータを要素とするベクトル
なお、「」は、転置を表している(以下同様)。
【0057】
また、ロボットRbtへの制御入力uは、nu個(nu:自然数)の実数を要素とするベクトル(1×nuの行列)であるものとする。すなわち、下記の数式を満たすものとする。
【数2】
なお、制御入力uの要素は、ロボットRbtの各アクチュエータに出力するトルクであるものとする。
【0058】
また、ロボット制御装置100では、N時間ステップ分の運動軌道を予測するものとし、時間ステップkにおける(1)状態ベクトルシーケンスX、および、(2)制御入力シーケンスUを以下のように規定する。
【数3】
N:2以上の自然数
:時間ステップkにおける状態ベクトル(状態ベクトルx)
:時間ステップkにおける制御入力(制御入力u)
また、ロボットRbtの目標軌道を設定するために、時間ステップkの平衡軌道Q を以下のように規定する。
【数4】
k:時間ステップ
:平衡状態変数ベクトル((1)フローティング機構(floating base)の位置、姿勢(例えば、ロボットRbtの位置、姿勢)を特定するデータと、(2)ジョイント(例えば、ロボットRbtの関節)の角度のデータとを含む変数)
そして、時間ステップkの平衡状態変数ベクトルq のi番目の要素qe,i を以下のように規定する。
【数5】
:ロボットRbtの名目上の姿勢(nominal posture)を特定する変数
φ:三角関数の位相を表す変数
そして、変数q、変数φは、下記のダイナミクスに従うものとする。
<ダイナミクス>
【数6】
Δt:制御期間(制御入力uが入力される時間間隔)
(t=k,・・・,k+N-1)
なお、変数q のi番目の要素の初期値hat_qc,i 、および、変数φのi番目の要素の初期値hat_φc,i は、目標生成部1により、ロボットRbtの状態(ロボットRbtのセンサRbt_nsrから入力される状態ベクトルxにより特定されるロボットRbtの状態)に応じて、設定した目標軌道(ロボットRbtの目標軌道)に合うように補正された値に設定される。
【0059】
目標生成部1は、目標軌道(ロボットRbtの目標軌道)が実現されるように、パラメータ{A,B,γ,v,ω}を設定することで、時間ステップkの平衡状態変数ベクトルq を設定する。そして、目標生成部1は、時間ステップk+1~k+N-1についても同様に平衡状態変数ベクトルを設定し、時間ステップkにおいて、N時間ステップ分の平衡軌道Q (={q ,q k+1,・・・,q k+N-1})を取得する。
【0060】
目標生成部1は、上記のようにして設定したN時間ステップ分の平衡軌道Q (={q ,q k+1,・・・,q k+N-1})を目標データQとして、モデル予測制御部2に出力する。
【0061】
また、目標生成部1は、N時間ステップ分の平衡軌道Q (={q ,q k+1,・・・,q k+N-1})において、角度に関するデータ(ロボットRbtの平衡状態を維持させるために必要な関節等の角度のデータ)だけを抽出したものをPD制御部3に対する目標データQ として取得する。つまり、ベクトルq ,q k+1,・・・,q k+N-1において、角度に関するデータ(ロボットRbtの平衡状態を維持させるために必要な関節等の角度のデータ)だけを抽出したデータ(ベクトル)(これをq’e と表記する)を取得し、取得したデータ(ベクトル)を含むデータをPD制御部3に対する目標データQ (={q’e ,q’e k+1,・・・,q’e k+N-1})として取得する。
【0062】
そして、目標生成部1は、取得した目標データQ をPD制御部3の第2PD制御部32に出力する。
【0063】
モデル予測制御部2は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。また、モデル予測制御部2は、目標生成部1から出力される目標データQを入力する。モデル予測制御部2は、状態ベクトルxと、目標データQとに基づいて、モデル予測処理を行い、運動指令データUを取得する。具体的には、モデル予測制御部2は、以下の処理を実行する。
【0064】
まず、コスト関数lossを以下のように規定する。
【数7】
(t=k,k+1,・・・,k+N-1)
:位置データの重み行列(位置データについての重み係数を要素(対角要素)とする行列)
:速度データの重み行列(速度データについての重み係数を要素(対角要素)とする行列)
:制御入力データの重み行列(制御入力データについての重み係数を要素(対角要素)とする行列)
:時間ステップtの平衡状態変数ベクトル(状態ベクトルxから取得したデータ)
:時間ステップtの平衡状態変数ベクトルの目標(目標値のベクトル)
モデル予測制御部2は、上記コスト関数を算出し、さらに、下記数式に相当する処理を行い、積算コストJ(X,U)(予測期間(N時間ステップ分の期間)におけるコスト関数lossの積算値)を取得する。
【数8】
そして、モデル予測制御部2は、下記数式に相当する処理を実行することで、モデル予測処理を行う。つまり、モデル予測制御部2は、下記の状態遷移関数による制約を満たしつつ、積算コストJ(X,U)を最小とする制御入力シーケンスUを取得(算出)する。
【数9】
(t=k,・・・,k+N-2)
Δt:離散化のための時間ステップサイズ(1時間ステップの期間)
f():モデルを表現するための関数(状態遷移関数)
なお、xt+1=f(x,u,Δt)は、以下の力学制約を受けるものとする。
<力学制約(運動方程式)>
【数10】
**:慣性行列の要素
:外部からの力(例えば、重力、遠心力、コリオリの力、粘性摩擦力等)
:ヤコビアン行列
:接触力(contact force)
τ:ジョイントトルク(ロボットRbtの各関節等に与えられるトルク)
なお、変数(ベクトル)の上にドットを付した変数(ベクトル)は、ドットを付された変数(ベクトル)の時間微分を表している(以下同様)。
【0065】
上記数式は、運動方程式を微分方程式により表現しているが、微分項を取り除くために、例えば、オイラー積分(例えば、下記先行技術文献Aに開示の手法によるオイラー積分手法を用いた処理)を行い、微分項を取り除いた方程式により、力学制約を表現するようにしてもよい。
(先行技術文献A):
Y. Tassa, T. Erez, and E. Todorov, “ Synthesis and stabilization of complex behaviors through online trajectory optimization,” in 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE, 2012, pp. 4906-4913.
モデル予測制御部2は、上記により表現されるモデル(力学モデル)を用いて、N時間ステップ分の予測(現時点から(N-1)時間ステップ先の未来までの予測)を行いながら、設定した軌道目標を満たす解を求めることで最適化処理(モデル最適化処理)を行う。
【0066】
例えば、モデル予測制御部2は、iLQR(線形二次レギュレータ法、iLQR:iterative Linear-quadratic regulator)により、最適化処理(モデル最適化処理)を行う。iLQRでは、モデルが局所的に線形であると仮定するLQR(Linear-quadratic regulator)を非線形モデルに拡張する。具体的には、iLQRでは、動的モデル(状態遷移関数で規定されるモデル)を1次近似し(テイラー展開の1次微分項までの近似を行い)、コスト関数を2次近似する(テイラー展開の2次微分項までの近似を行う)。つまり、iLQRでは、動的モデルf、コスト関数cを以下のように表す。
【数11】
「^」:予測値(推定値)
f(x,u)=f(x,u,Δt)(Δtを省略して表してる。)
【数12】
「^」:予測値(推定値)
c(x,u):コスト関数(c(x,u)=loss(x,u))
また、上記数式を以下のように整理する。
【数13】
【数14】
そして、モデル予測制御部2は、iLQRにより、LQRと同様に、コスト関数を最適化することにより、初期状態(時間ステップkの状態)からターゲット状態(時間ステップk+N-1の状態)までの最適な軌道を算出する。モデル予測制御部2は、iLQRにより最適な軌道を取得したときの各時間ステップでの状態ベクトルx(最適状態ベクトルx)、および、ローカル最適フィードバックゲインLを取得し、それらのシーケンスである、(1)最適状態シーケンスデータX (={x ,x k+1,・・・,x k+N-1})、および、(2)ローカル最適フィードバックゲインデータ列G (={L ,L k+1,・・・,L k+N-1})を取得する。そして、モデル予測制御部2は、取得した最適状態シーケンスデータX (={x ,x k+1,・・・,x k+N-1})およびローカル最適フィードバックゲインデータ列GをPD制御部3の第1PD制御部31に出力する。
【0067】
また、モデル予測制御部2は、iLQRにより最適な軌道を取得したときの各時間ステップでの制御入力u(最適制御入力u)を取得し、それらのシーケンスである最適制御入力シーケンスU (={u ,u k+1,・・・,u k+N-1})を取得し、保持する。そして、モデル予測制御部2は、PD制御部3により制御入力uPDs(PD制御用制御入力uPDs)が取得された段階(合成部4でPD制御用制御入力uPDsと最適制御入力シーケンスU (または制御入力uMPC(=u ))とを合成できる状態になった段階)で、上記により取得し、保持している最適制御入力シーケンスU (または制御入力uMPC(=u ))を合成部4に出力する。図2に示した場合、モデル予測制御部2は、時刻t1e、時刻t11e、時刻t12e、・・・、時刻tme(初期化処理が終了し、運動生成処理が実行開始された時刻以降(図2の場合、時刻t以降の時刻)において、上記により取得し、保持している最適制御入力シーケンスU (または制御入力uMPC(=u ))を合成部4に出力する。図2において、「モデル予測制御(処理1)」で取得された最適制御入力シーケンスU (または制御入力uMPC(=u ))を「出力1」として示している。
【0068】
なお、モデル予測制御部2は、取得した最適制御入力シーケンスU のうち現時間ステップ(時間ステップk)の制御入力であるu を制御入力uMPCとして合成部4に出力するようにしてもよい。以下では、説明便宜のために、モデル予測制御部2が制御入力uMPC(=u )を合成部4に出力するものとして、説明する。
【0069】
なお、モデル予測制御部2で実行されるiLQRの処理は、下記の先行技術文献Bの手法を用いて実行されるものであってもよい。
(先行技術文献B):
E. Todorov, C. Hu, A. Simpkins, and J. Movellan, "A generalized iterative lqg method for locally-optimal feedback control of constrained nonlinear stochastic systems," 2005, pp. 300-306.
合成部4は、モデル予測制御部2から出力されるMPC用運動指令データUの制御入力uMPC(=u )を入力する。初期化処理時において、PD制御部3からの出力はないので、合成部4は、制御入力uMPC(=u )をトルクベクトルτ(=uMPC)として、ロボットRbtのアクチュエータRbt_actrに出力する(図2の時刻t01のMPC出力に相当)。
【0070】
これにより、ロボットRbtは、トルクベクトルτ(=uMPC)による制御がなされ、初期状態となる。なお、初期化処理時において、合成部4からの出力を省略するようにしてもよい(次の時間ステップから合成部4からトルクベクトルを出力し、ロボットRbtを制御するようにしてもよい)。
【0071】
以上のように、ロボット制御装置100において、初期化処理が実行される。
【0072】
≪運動生成処理(時刻t~t)≫
次に、運動生成処理(図2の時刻t~tの処理)について説明する。
【0073】
≪時刻tからの処理≫
まず、時刻tからの処理について説明する。
【0074】
第1PD制御部31は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。また、第1PD制御部31は、モデル予測制御部2から出力される最適状態シーケンスデータXおよびローカル最適フィードバックゲインデータ列Gを入力する。第1PD制御部31は、状態ベクトルx、最適状態シーケンスデータX、および、ローカル最適フィードバックゲインデータ列Gに基づいて、モデル予測制御(MPC:Model Predictive Control)のためのPD制御用運動指令データuPD-MPC(PD-MPC用運動指令データuPD-MPC)を取得する(図2の時刻tから処理)。
【0075】
具体的には、第1PD制御部31は、下記数式に相当する処理を実行することで、PD-MPC用運動指令データuPD-MPC(PD-MPC用制御入力uPD-MPC)を取得する。
【数15】
なお、L=L (初期化処理時に、モデル予測制御部2により取得された時間ステップkのゲインL )であり、x=x (初期化処理時に、モデル予測制御部2により取得された時間ステップkの最適状態ベクトルx )である。
【0076】
また、上記数式から分かるように、第1PD制御部31で実行される処理は、PD制御、すなわち、比例制御(ゲインを乗算する制御)、微分制御(状態ベクトルに含まれる変数の時間微分のデータについて処理)のみであるため、高速に処理することができる。
【0077】
そして、第1PD制御部31は、上記処理により取得したPD-MPC用運動指令データuPD-MPC(PD-MPC用制御入力uPD-MPC)を加算部33に出力する。
【0078】
第2PD制御部32は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。また、第2PD制御部32は、目標生成部1から出力される目標データQ (初期化処理時に、目標生成部1により設定された目標データQ )を入力する。第2PD制御部32は、状態ベクトルxと、目標データQ とに基づいて、ロボットRbtの姿勢を維持するためのPD制御用運動指令データuPD-equiv(PD-equiv用運動指令データuPD-equiv)を取得する(図2の時刻tから処理)。
【0079】
具体的には、第2PD制御部32は、下記数式に相当する処理を実行することで、PD-equiv用運動指令データuPD-equiv(PD-equiv用制御入力uPD-MPC)を取得する。
【数16】
K:関節剛性行列(Joint stiffness matrix)(ロボットRbtの関節の剛性の行列)
D:関節粘性行列(Joint viscosity matrix)(ロボットRbtの関節の粘性の行列)
:ロボットRbtの関節の角度のデータを要素とするベクトル(状態ベクトルxから取得されるデータ)
:ベクトルqの各要素の時間微分を要素とするベクトル(状態ベクトルxから取得されるデータ)
’e:ベクトルqの目標データ(目標データQ から取得されるデータ)
なお、上記数式から分かるように、第2PD制御部32で実行される処理は、PD制御、すなわち、比例制御(ゲインを乗算する制御)、微分制御(状態ベクトルに含まれる変数の時間微分のデータ(速度ベクトルv)について処理)のみであるため、高速に処理することができる。
【0080】
そして、第2PD制御部32は、上記処理により取得したPD-equiv用運動指令データuPD-equiv(PD-equiv用制御入力uPD-MPC)を加算部33に出力する。
【0081】
加算部33は、第1PD制御部31から出力されるPD-MPC用運動指令データuPD-MPCと、第2PD制御部32から出力されるPD-equiv用運動指令データuPD-equivとを入力する。加算部33は、PD-MPC用運動指令データuPD-MPCと、PD-equiv用運動指令データuPD-equivとに対して加算処理を行うことで、ロボットRbtに対するPD制御のための運動指令データuPDs(=uPD-MPC+uPD-equiv)(PD制御用運動指令データuPDs)を取得する。そして、加算部33は、取得したPD制御用運動指令データuPDs(PD制御用制御入力uPDs)を合成部4に出力する。
【0082】
合成部4は、MPC用制御入力uMPCと、PD制御用運動指令データuPDs(PD制御用制御入力uPDs)とを合成する処理(例えば、加算処理)を実行する。つまり、合成部4は、モデル予測制御部2が初期化処理において取得した制御入力uMPC(=u )(図2において、「モデル予測制御(処理1)」で取得された制御入力uMPC(=u )(図2の「出力1」で示したデータ))を、MPC用制御入力uMPCとして、MPC用制御入力uMPCと、PD制御用制御入力uPDsとを合成する処理を行う。すなわち、合成部4は、
τ=uMPC+uPDs
に相当する処理により、トルクベクトルτを取得する。
【0083】
そして、合成部4は、取得したトルクベクトルτをロボットRbtのアクチュエータRbt_actrに出力する(図2の時刻t1eのPD出力に相当)。
【0084】
これにより、ロボットRbtは、トルクベクトルτ(=uMPC+uPDs)による制御がなされる。つまり、ロボット制御装置100において、トルクベクトルτ(=uMPC+uPDs)によるロボットRbtの制御を行うことで、ロボットRbtの姿勢を適切に維持しつつ、ロボットRbtに対して、目標軌道の運動(設定した目標を実現する運動)をさせることができる。
【0085】
また、時刻tから、初期化処理時と同様に、目標生成部1において、目標生成処理が実行される。さらに、初期化処理時と同様に、モデル予測制御部2において、モデル予測処理が実行される。そして、モデル予測制御部2は、時刻tからの処理において取得した、
(1)最適状態シーケンスデータX (={x ,x k+1,・・・,x k+N-1})、
(2)ローカル最適フィードバックゲインデータ列G (={L ,L k+1,・・・,L k+N-1})
を、図2に示すように、時刻t以降に(モデル予測処理が完了した後の時刻に)、PD制御部3の第1PD制御部31に出力する。
【0086】
≪時刻t11sからの処理≫
次に、時刻t11sからの処理について説明する。
【0087】
時刻t11sからの処理では、以下の処理が実行される。
【0088】
第1PD制御部31は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。
【0089】
また、第1PD制御部31は、状態ベクトルx、時刻t1からの処理で取得した、最適状態シーケンスデータX、および、ローカル最適フィードバックゲインデータ列Gに基づいて、モデル予測制御のためのPD制御用運動指令データuPD-MPC(PD-MPC用運動指令データuPD-MPC)を取得する(図2の時刻t11sから処理)。
【0090】
具体的には、第1PD制御部31は、時刻t11sからの処理と同様の処理を行うことで、PD-MPC用運動指令データuPD-MPC(PD-MPC用制御入力uPD-MPC)を取得する。
【0091】
そして、第1PD制御部31は、上記処理により取得したPD-MPC用運動指令データuPD-MPC(PD-MPC用制御入力uPD-MPC)を加算部33に出力する。
【0092】
第2PD制御部32は、ロボットRbtに搭載されているセンサ(例えば、角度センサ、慣性計測装置、カメラ等)により取得したデータを状態ベクトルxとして入力する。
【0093】
第2PD制御部32は、状態ベクトルxと、時刻t1からの処理で取得した目標データQ とに基づいて、ロボットRbtの姿勢を維持するためのPD制御用運動指令データuPD-equiv(PD-equiv用運動指令データuPD-equiv)を取得する(図2の時刻t11sから処理)。
【0094】
具体的には、第2PD制御部32は、時刻t11sからの処理と同様の処理を行うことで、PD-equiv用運動指令データuPD-equiv(PD-equiv用制御入力uPD-MPC)を取得する。
【0095】
加算部33は、第1PD制御部31から出力されるPD-MPC用運動指令データuPD-MPCと、第2PD制御部32から出力されるPD-equiv用運動指令データuPD-equivとを入力する。加算部33は、PD-MPC用運動指令データuPD-MPCと、PD-equiv用運動指令データuPD-equivとに対して加算処理を行うことで、ロボットRbtに対するPD制御のための運動指令データuPDs(=uPD-MPC+uPD-equiv)(PD制御用運動指令データuPDs)を取得する。そして、加算部33は、取得したPD制御用運動指令データuPDs(PD制御用制御入力uPDs)を合成部4に出力する。
【0096】
合成部4は、MPC用制御入力uMPCと、PD制御用運動指令データuPDs(PD制御用制御入力uPDs)とを合成する処理(例えば、加算処理)を実行する。つまり、合成部4は、モデル予測制御部2が初期化処理において取得した制御入力uMPC(=u )(図2において、「モデル予測制御(処理1)」で取得された制御入力uMPC(=u )(図2の「出力1」で示したデータ))を、MPC用制御入力uMPCとして、MPC用制御入力uMPCと、PD制御用制御入力uPDsとを合成する処理を行う。すなわち、合成部4は、
τ=uMPC+uPDs
に相当する処理により、トルクベクトルτを取得する。
【0097】
そして、合成部4は、取得したトルクベクトルτをロボットRbtのアクチュエータRbt_actrに出力する(図2の時刻t11eのPD出力に相当)。
【0098】
これにより、ロボットRbtは、トルクベクトルτ(=uMPC+uPDs)による制御がなされる。つまり、ロボット制御装置100において、トルクベクトルτ(=uMPC+uPDs)によるロボットRbtの制御を行うことで、ロボットRbtの姿勢を適切に維持しつつ、ロボットRbtに対して、目標軌道の運動(設定した目標を実現する運動)をさせることができる。
【0099】
≪時刻t12sからの処理≫
時刻t12sからの処理として、時刻t11sからの処理と同様の処理が、モデル予測制御部2によるモデル予測処理(時刻tの目標生成処理の後に実行されるモデル予測処理)が完了し、モデル予測制御部2により制御入力uMPCが取得するまで、繰り返し実行される。
【0100】
このようにすることで、ロボット制御装置100において、第1PD制御部31および第2PD制御部32により取得された制御入力uPDs(ロボットRbtの姿勢を維持させるために必要な制御入力)を短い期間(制御入力uPDsの更新期間(更新間隔)Δtlow(例えば、Δtlow=2ms))で連続して出力することができる(短い更新間隔Δtlowで更新されるPD制御用制御入力uPDsと、初期化時に、モデル予測制御部2により取得された制御入力uMPC(=u )とを合成した出力(トルクベクトルτ(=uMPC+uPDs)を連続して出力することができる)。つまり、ロボット制御装置100では、時間がかかるモデル予測処理を実行している間においても、ロボットRbtの姿勢を維持させる(ロボットRbtの平衡状態を維持させる)ための制御入力をPD制御により取得でき、当該制御入力を短い時間間隔で連続して出力させることができる(短い更新間隔Δtlowで更新されるPD制御用制御入力uPDsと、初期化時に、モデル予測制御部2により取得された制御入力uMPC(=u )とを合成した出力(トルクベクトルτ(=uMPC+uPDs)を連続して出力することができる)。
【0101】
したがって、ロボット制御装置100では、長い時間(MPC用制御入力uMPCの更新期間(更新間隔)Δt(例えば、Δt=100ms))がかかるモデル予測処理を実行している間においても、ロボットRbtの姿勢を適切に維持させることが可能となる。
【0102】
そして、図2の場合、時刻t11において、モデル予測制御部2によるモデル予測処理が完了しており、モデル予測制御部2は、当該モデル予測処理(図2の場合、時刻t10~時刻t11で実行されたモデル予測処理)で取得したMPC用制御入力uMPCにより、初期化処理時に取得したMPC用制御入力uMPCを更新し、更新したMPC用制御入力uMPCを保持する。そして、モデル予測制御部2は、初期化処理時のときと同様に、PD制御部3により制御入力uPDs(PD制御用制御入力uPDs)が取得された段階(合成部4でPD制御用制御入力uPDsと最適制御入力シーケンスU に含まれる制御入力uMPC(=u )とを合成できる状態になった段階)で、上記モデル予測処理(図2の場合、時刻t10~時刻t11で実行されたモデル予測処理)で取得し、保持している制御入力uMPC(=u )を合成部4に出力する。図2に示した場合、モデル予測制御部2は、時刻t2e、時刻t21e、時刻t22e、・・・(モデル予測処理(処理2)が終了した以降の時刻)において、上記モデル予測処理(図2の場合、時刻t10~時刻t11で実行されたモデル予測処理)により取得し、保持している制御入力uMPC(=u )を合成部4に出力する。図2において、「モデル予測制御(処理2)」で取得された最適制御入力シーケンスU に含まれる制御入力uMPC(=u )を「出力2」として示している。
【0103】
≪運動生成処理(時刻t~t)≫
運動生成処理(図2の時刻t~tの処理)について説明する。
【0104】
時刻t~tにおいて、上記で説明した時刻t~tと同様の処理が実行される。なお、合成部4では、以下の処理が実行される。
【0105】
合成部4は、モデル予測制御部2がモデル予測処理(図2の「モデル予測制御(処理2)」で示した期間に実行されるモデル予測処理(時刻t10~t11))において取得した制御入力uMPC(=u )(図2において、「モデル予測制御(処理2)」で取得された制御入力uMPC(=u )(図2の「出力2」で示したデータ))を、MPC用制御入力uMPCとして、MPC用制御入力uMPCと、PD制御用制御入力uPDsとを合成する処理を行う。すなわち、合成部4は、
τ=uMPC+uPDs
に相当する処理により、トルクベクトルτを取得する。
【0106】
そして、合成部4は、取得したトルクベクトルτをロボットRbtのアクチュエータRbt_actrに出力する(図2の時刻t2eのMPC出力(出力2)、PD出力に相当)。
【0107】
これにより、ロボットRbtは、トルクベクトルτ(=uMPC+uPDs)による制御がなされる。つまり、ロボット制御装置100において、トルクベクトルτ(=uMPC+uPDs)によるロボットRbtの制御を行うことで、ロボットRbtの姿勢を適切に維持しつつ、ロボットRbtに対して、目標軌道の運動(設定した目標を実現する運動)をさせることができる。
【0108】
≪運動生成処理(時刻t以降)≫
さらに、時刻t以降においても、上記で説明した時刻t~tと同様の処理が実行される。
【0109】
これにより、時刻t~tと同様の処理と同様に、ロボット制御装置100では、トルクベクトルτ(=uMPC+uPDs)によるロボットRbtの制御を行うことできる。そして、このようなロボット制御装置100において、このような処理を行うことで、ロボットRbtの姿勢を適切に維持しつつ、ロボットRbtに対して、目標軌道の運動(設定した目標を実現する運動)をさせることができる。
【0110】
≪まとめ≫
以上のように、ロボット制御装置100では、階層的な制御、つまり、(1)モデル予測制御部2によるモデル予測処理(上位層の制御)(モデル予測処理により運動指令を計算する処理)、および、(2)PD制御部3によるPD制御(下位層の制御)(ロボットRbtの姿勢を維持する制御(平衡状態を維持させる制御))を行うことで、運動指令を計算する時間が長い時間となることを許容し、ロボットRbtが転倒することなく、ロボットRbtに多様な運動をさせることができる。
【0111】
ロボット制御装置100では、長い時間(例えば、MPC用制御入力uMPCの更新間隔がΔt(例えば、Δt=100ms))がかかるモデル予測処理(ロボットに多様な運動させるための運動指令を計算するための複雑な処理)を実行している期間においても、PD制御部3によるPD制御を行うための制御入力uPDsを短い時間(例えば、PD制御用制御入力uPDsの更新間隔がΔtlow(例えば、Δtlow=2ms))でロボットRbtに対して出力することができる(短い更新間隔Δtlowで更新されるPD制御用制御入力uPDsと、既に終了しているモデル予測処理で、モデル予測制御部2により取得された制御入力uMPC(=u )とを合成した出力(トルクベクトルτ(=uMPC+uPDs)を連続して出力することができる)。したがって、ロボット制御装置100では、モデル予測処理(ロボットに多様な運動させるための運動指令を計算するための複雑な処理)が実行されている期間においても、ロボットRbtの平衡状態を維持させるための制御入力uPDsが短い時間間隔で更新され、更新された制御入力uPDsを反映したトルクベクトルτ(=uMPC+uPDs)により、ロボットRbtの平衡状態を維持することができる(ロボットRbtの姿勢を適切に維持することができる)。これにより、ロボット制御装置100では、運動指令を計算する時間が長い時間となることを許容しつつ、ロボットRbtを転倒させることなく、ロボットRbtに多様な運動をさせることができる。
【0112】
ここで、本発明の適用結果(シミュレーション結果)について示す。
【0113】
自由度が「18」(18-DoF(Degree of Freedom))の簡易ヒューマノイドモデルであって、1つの胴体と、各脚に6個のリンクがある簡易ヒューマノイドモデルに対して、本発明を適用した結果について示す。そして、制御期間(制御入力uが入力される時間間隔)Δt、ホライズン数N(予測する時間ステップ数N)、離散化のための時間ステップサイズ(1時間ステップの期間)Δt、および、下位層(PD制御)の制御入力(制御入力uPDs)更新期間(更新間隔)Δtlowを、下記のように設定した。
Δt=100ms
N=50
Δt=20ms
Δtlow=2ms
そして、以下の(1)~(4)の場合について、本発明を適用した。
(1)ロボットにさせる運動:つま先立ち(ロボットの脚の状態:裸足)
(2)ロボットにさせる運動:歩行(ロボットの脚の状態:裸足)
(3)ロボットにさせる運動:片足立ち(ロボットの脚の状態:ローラースケートを履いた状態)
(4)ロボットにさせる運動:スケート(ロボットの脚の状態:ローラースケートを履いた状態)
図3は、上記(1)~(3)の場合のロボットの状態を示す図である。なお、図3において横軸は、時間軸である。
【0114】
図4は、上記(4)の場合のロボットの状態を示す図である。なお、図4において横軸は、時間軸である。
【0115】
図3図4に示すように、上記(1)~(4)の場合において、いずれも、ロボットは姿勢を適切に維持し(各時間ステップにおいて、平衡状態を維持し)、転倒することなく、各運動を行うことができた。特に、図4に示すように、ロボットの脚にローラースケートを履かせた状態において、斜面を滑り降りるという極めて複雑な運動を行った場合においても、本発明を適用したロボットは、姿勢を適切に維持し(各時間ステップにおいて、平衡状態を維持し)、転倒することなく、当該運動を行うことができた。
【0116】
これらの結果から分かるように、本発明により、従来技術では極めて難しいとされていた運動を、ロボットを転倒させることなく(ロボットの姿勢を適切に維持しつつ)、実行されることが可能となる。すなわち、本発明の有用性は、極めて高いことが分かる。
【0117】
[他の実施形態]
上記実施形態では、ロボット制御装置100が制御する対象がヒューマノイドロボットであることを想定しているが、これに限定されることはなく、ロボット制御装置100が制御する対象は、2足歩行ロボット以外の多足ロボットであってもよいし、また、ヒューマノイドロボット以外のロボットであってもよい。
【0118】
また、上記実施形態で説明したロボット制御装置100において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
【0119】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0120】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0121】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0122】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0123】
例えば、上記実施形態の各機能部を、ソフトウェアにより実現する場合、図5に示したハードウェア構成(例えば、CPU(GPUを含む)、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0124】
また、本明細書内の記載、特許請求の範囲の記載において、「最適化」(あるいは「最適」)とは、最も良い状態にすることをいい、システム(モデル)を「最適化」するパラメータとは、当該システムの目的関数の値が最適値となるときのパラメータのことをいう。「最適値」は、システムの目的関数の値が大きくなるほど、システムが良い状態となる場合は、最大値であり、システムの目的関数の値が小さくなるほど、システムが良い状態となる場合は、最小値である。また、「最適値」は、極値であってもよい。また、「最適値」は、所定の誤差(測定誤差、量子化誤差等)を許容するものであってもよく、所定の範囲(十分収束したとみなすことができる範囲)に含まれる値であってもよい。
【0125】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【0126】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0127】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0128】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0129】
100 ロボット制御装置
1 目標生成部
2 モデル予測制御部
3 PD制御部
31 第1PD制御部
32 第2PD制御部
33 加算部
4 合成部
Rbt ロボット

図1
図2
図3
図4
図5