(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024123546
(43)【公開日】2024-09-12
(54)【発明の名称】姿勢推定装置、姿勢推定方法、およびプログラム
(51)【国際特許分類】
G06T 7/70 20170101AFI20240905BHJP
G06T 7/00 20170101ALI20240905BHJP
G06V 10/82 20220101ALI20240905BHJP
G06V 20/64 20220101ALI20240905BHJP
【FI】
G06T7/70 Z
G06T7/00 350C
G06T7/00 C
G06V10/82
G06V20/64
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023031054
(22)【出願日】2023-03-01
(71)【出願人】
【識別番号】000005326
【氏名又は名称】本田技研工業株式会社
(74)【代理人】
【識別番号】100165179
【弁理士】
【氏名又は名称】田▲崎▼ 聡
(74)【代理人】
【識別番号】100126664
【弁理士】
【氏名又は名称】鈴木 慎吾
(74)【代理人】
【識別番号】100154852
【弁理士】
【氏名又は名称】酒井 太一
(74)【代理人】
【識別番号】100194087
【弁理士】
【氏名又は名称】渡辺 伸一
(72)【発明者】
【氏名】奈良村 五十志
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096BA05
5L096FA67
5L096HA11
5L096KA04
(57)【要約】
【課題】インハンド操作のような自己遮蔽が発生する環境であっても、物体の姿勢、および物体を操作する操作装置の姿勢のうちのすくなくとも1つを高精度、かつ効率的に推定することが可能になる姿勢推定装置、姿勢推定方法、およびプログラムを提供することを目的とする。
【解決手段】姿勢推定装置は、実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用い、操作装置のニューラル三次元表現と、操作対象物体毎のニューラル三次元表現とをそれぞれに学習し、それぞれの学習結果を、占有空間を利用して組み合わせたデータを前記レンダラーに入力することで、操作対象物体の姿勢、および操作装置の姿勢のうちの少なくとも1つを推定する姿勢推定部、を備える。
【選択図】
図8
【特許請求の範囲】
【請求項1】
実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用い、前記操作装置のニューラル三次元表現と、前記操作対象物体毎のニューラル三次元表現とをそれぞれに学習し、それぞれの学習結果を、占有空間を利用して組み合わせたデータを前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定する姿勢推定部、
を備える姿勢推定装置。
【請求項2】
前記動作環境の対象は、関節を有する物体であり、
前記微分可能レンダラーはEigen NeRFまたはNeRFである、
請求項1に記載の姿勢推定装置。
【請求項3】
前記姿勢推定部は、
外界センサの姿勢を取得し、
物体座標系基準の外界センサ座標変換行列によって、前記外界センサの原点から所定の画素を結んだ直線である各Rayの座標系を前記物体座標系基準に座標変換して前記レンダラーに入力して操作対象物体の画像をレンダリングし、
操作装置座標系基準における前記操作装置の関節角度情報を取得して前記レンダラーに入力して前記操作装置の画像をレンダリングし、
レンダリングした前記操作対象物体の画像と前記操作装置の画像と、観測画像との輝度差に基づく第1損失関数を算出し、
前記占有空間において、前記操作装置の占有空間に、前記操作対象物体が侵入しているか否かを示す第2損失関数を算出し、
前記第1損失関数と前記第2損失関数を加算し、関した損失関数が最小となる前記操作対象物体の姿勢をロボット座標系基準で算出する、
請求項1または請求項2に記載の姿勢推定装置。
【請求項4】
前記姿勢推定部は、
操作対象物体座標系基準の前記操作対象物体の占有マップと、操作装置座標系基準の前記操作装置の占有マップと、をワールド座標系基準に座標変換する、
請求項1または請求項2に記載の姿勢推定装置。
【請求項5】
前記姿勢推定部は、背景のニューラル三次元表現を学習し、学習した前記背景のニューラル三次元表現も前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定する、
請求項1または請求項2に記載の姿勢推定装置。
【請求項6】
前記姿勢推定部は、外界センサの原点から所定の画素を結んだ直線である各Rayの座標系をワールド座標系における外界センサ座標系に座標変換して前記背景の画像をレンダリングし、
レンダリングした前記操作対象物体の画像と前記操作装置の画像と前記背景の画像と、観測画像との輝度差に基づく第1損失関数を算出する、
請求項5に記載の姿勢推定装置。
【請求項7】
姿勢推定部が、実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用い、前記操作装置のニューラル三次元表現と、前記操作対象物体毎のニューラル三次元表現とをそれぞれに学習し、
前記姿勢推定部が、それぞれの学習結果を、占有空間を利用して組み合わせたデータを前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定する、
姿勢推定方法。
【請求項8】
姿勢推定装置のコンピュータに、
実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用い、前記操作装置のニューラル三次元表現と、前記操作対象物体毎のニューラル三次元表現とをそれぞれに学習させ、
それぞれの学習結果を、占有空間を利用して組み合わせたデータを前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、姿勢推定装置、姿勢推定方法、およびプログラムに関する。
【背景技術】
【0002】
物体の姿勢を推定する手法としては、操作対象の特徴ベクトルを検出しPnP(Perspective-n-Point)問題として物体姿勢を推定する古典的な手法や、画像と物体姿勢を直接回帰するE2E(End-to-End)な手法がある。また、近年、iNeRFのようなNeRF表現を用いてカメラ姿勢(カメラ座標と物体座標は逆行列で表現できる)を推定する方法が提案されている(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Lin Yen-Chen1, Pete Florence, et al., “iNeRF: Inverting Neural Radiance Fields for Pose Estimation”, IROS 2021, 2021
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術では、ロボットハンドによる自己遮蔽に弱い、姿勢推定が手と干渉した結果を出力するという課題があった。また、iNeRFでは、カメラ姿勢と輝度差について勾配を見ているだけなので学習が安定しない(ハイパーパラメータ設定が煩雑)。また、ロボットハンドと複数物体の姿勢推定を行うためには、ロボットハンドと物体の組み合わせで学習データを取得する必要があるためデータ収集が困難であった。
【0005】
本発明は、上記の問題点に鑑みてなされたものであって、インハンド操作のような自己遮蔽が発生する環境であっても、物体の姿勢、および物体を操作する操作装置の姿勢のうちのすくなくとも1つを高精度、かつ効率的に推定することが可能になる姿勢推定装置、姿勢推定方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
(1)上記目的を達成するため、本発明の一態様に係る姿勢推定装置は、実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用い、前記操作装置のニューラル三次元表現と、前記操作対象物体毎のニューラル三次元表現とをそれぞれに学習し、それぞれの学習結果を、占有空間を利用して組み合わせたデータを前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定する姿勢推定部、を備える姿勢推定装置である。
【0007】
(2)(1)の姿勢推定装置において、前記動作環境の対象は、関節を有する物体であり、前記微分可能レンダラーはEigen NeRFまたはNeRFであるようにしてもよい。
【0008】
(3)(1)または(2)の姿勢推定装置において、前記姿勢推定部は、外界センサの姿勢を取得し、物体座標系基準の外界センサ座標変換行列によって、前記外界センサの原点から所定の画素を結んだ直線である各Rayの座標系を前記物体座標系基準に座標変換して前記レンダラーに入力して操作対象物体の画像をレンダリングし、操作装置座標系基準における前記操作装置の関節角度情報を取得して前記レンダラーに入力して前記操作装置の画像をレンダリングし、レンダリングした前記操作対象物体の画像と前記操作装置の画像と、観測画像との輝度差に基づく第1損失関数を算出し、前記占有空間において、前記操作装置の占有空間に、前記操作対象物体が侵入しているか否かを示す第2損失関数を算出し、前記第1損失関数と前記第2損失関数を加算し、関した損失関数が最小となる前記操作対象物体の姿勢をロボット座標系基準で算出するようにしてもよい。
【0009】
(4)(1)から(3)のうちのいずれか1つの姿勢推定装置において、前記姿勢推定部は、操作対象物体座標系基準の前記操作対象物体の占有マップと、操作装置座標系基準の前記操作装置の占有マップと、をワールド座標系基準に座標変換するようにしてもよい。
【0010】
(5)(1)から(4)のうちのいずれか1つの姿勢推定装置において、前記姿勢推定部は、背景のニューラル三次元表現を学習し、学習した前記背景のニューラル三次元表現も前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定するようにしてもよい。
【0011】
(6)(5)の姿勢推定装置において、前記姿勢推定部は、外界センサの原点から所定の画素を結んだ直線である各Rayの座標系をワールド座標系における外界センサ座標系に座標変換して前記背景の画像をレンダリングし、レンダリングした前記操作対象物体の画像と前記操作装置の画像と前記背景の画像と、観測画像との輝度差に基づく第1損失関数を算出するようにしてもよい。
【0012】
(7)上記目的を達成するため、本発明の一態様に係る姿勢推定方法は、姿勢推定部が、実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用い、前記操作装置のニューラル三次元表現と、前記操作対象物体毎のニューラル三次元表現とをそれぞれに学習し、前記姿勢推定部が、それぞれの学習結果を、占有空間を利用して組み合わせたデータを前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定する、姿勢推定方法である。
【0013】
(8)上記目的を達成するため、本発明の一態様に係るプログラムは、姿勢推定装置のコンピュータに、実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用い、前記操作装置のニューラル三次元表現と、前記操作対象物体毎のニューラル三次元表現とをそれぞれに学習させ、それぞれの学習結果を、占有空間を利用して組み合わせたデータを前記レンダラーに入力することで、前記操作対象物体の姿勢、および前記操作装置の姿勢のうちの少なくとも1つを推定させる、プログラムである。
【発明の効果】
【0014】
(1)~(8)によれば、インハンド操作のような自己遮蔽が発生する環境であっても、物体の姿勢、および物体を操作する操作装置の姿勢のうちのすくなくとも1つを高精度、かつ効率的に推定することが可能になる。
【図面の簡単な説明】
【0015】
【
図4】NeRFによるシーン表現と微分可能レンダリングの概要を示す図である。
【
図5】P-NeRFのネットワーク構成の一例を表す図である。
【
図6】第1実施形態に係るシステムの構成例と処理の概要を示す図である。
【
図7】各座標系と変換について説明するための図である。
【
図8】第1実施形態に係る姿勢推定装置の構成例を示す図である。
【
図9】第1実施形態に係る姿勢推定の処理手順のフローチャートである。
【
図10】第1実施形態に係る姿勢推定の処理手順のフローチャートである。
【
図11】第1実施形態に係る姿勢推定の処理手順のフローチャートである。
【
図12】第1実施形態に係るOccupancy Gridの構成手順のフローチャートである。
【
図13】各座標系と座標変換行列の定義を示す図である。
【
図14】第2実施形態に係る処理の概要を示す図である。
【
図15】第2実施形態に係る姿勢推定の処理手順のフローチャートである。
【
図16】第2実施形態に係る姿勢推定の処理手順のフローチャートである。
【
図17】第2実施形態に係るOccupancy Gridの構成手順のフローチャートである。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態について図面を参照しながら説明する。なお、以下の説明に用いる図面では、各部材を認識可能な大きさとするため、各部材の縮尺を適宜変更している。
なお、実施形態を説明するための全図において、同一の機能を有するものは同一符号を用い、繰り返しの説明は省略する。
また、本願でいう「XXに基づいて」とは、「少なくともXXに基づく」ことを意味し、XXに加えて別の要素に基づく場合も含む。また、「XXに基づいて」とは、XXを直接に用いる場合に限定されず、XXに対して演算や加工が行われたものに基づく場合も含む。「XX」は、任意の要素(例えば、任意の情報)である。
【0017】
(実施形態の概要)
図1は、実施形態の概要を説明するための図である。
図1の例では、作業環境でロボットrobが、作業の例として対象物体objを把持している。ロボットrobは、例えば2つ以上の指部を備えるロボットハンドである。このような作業環境には、環境stat(含む背景)も存在している。実施形態では、環境とロボットハンドと対象物体それぞれについて、NeRF(Neural Radiance Fields)表現を予め学習させる。なお、NeRFについては後述する。実施形態では、環境stat、ロボットrob、対象物体objそれぞれにNeRF表現を用いる。なお、F
θ*は、MLP(Multi Layer Perceptron;多層パーセプトロン)である。
【0018】
なお、環境とロボットハンドの基準座標は同じであるか、または座標変換行列が既知であるとする。ロボットハンドと実際のカメラ姿勢は、例えばカメラ較正やロボットハンドが備えるエンコーダの検出値におって計算可能である。また、ロボットハンドのNeRF表現には、後述するEigen NeRFを用いる。
【0019】
(NeRFの概要)
次に、NeRFの概要を説明する。NeRFは、主に、複数の視点の画像から、任意の視点(新たな視点)の画像を生成するタスク(新規視点画像生成(Novel View Synthesis)という)を実現するために提案された手法である。
図2は、NeRFの概要を説明するための図である。NeRFは、ある視点の三次元位置を示す位置ベクトルx
→=(x,y,z)と、その視点からシーンを観測する際の視線の方向を示す方向ベクトルd
→=(θ,φ)とが指定されると、視線上においてN個のサンプリング点を定め、各サンプリング点の色を示す色ベクトルc
→=(R,G,B)と色の密度σを出力する。上付き矢印
→はベクトルを表している(図と数式では、太字で示している)。例えば、xは三次元空間の幅を表し、yは奥行きを表し、zは高さを表し。θ及びφのうち一方は仰角を表し、θ及びφのうち他方は方位角を表す。Rは赤色を表し、Gは緑色を表し、Bは青色を表している。
【0020】
図3は、NeRFによるシーン表現と微分可能レンダリングの概要を示す図である。MLP(F
θ)には、観測画像g11から5次元の入力(位置と視線)が入力され、RGBと色の密度σを出力し、カメラ光線に沿ったレンダリング画像g12が合成される。損失関数Lは、この観測ピクセル画像g21におけるC(r
→)と、レンダリングピクセル画像g22におけるC^(r
→)との差の合計である。なお、C(r
→)は、光線rの焦点から見た色であり、色と密度を書けた物を光線上で積分したものである。NeRFでは、ボリュームレンダリングを使って三次元オブジェクトを画像としてレンダリングし、得られた画像と、学習データ中の画像とを比較して損失関数を計算し、この損失関数を最小化するようにする(例えば参考文献1参照)。なお、レンダリングは、微分可能レンダラーを用いて行う。
【0021】
参考文献1;Ben Mildenhall, Pratul P. Srinivasan, :NeRF : Representing Scenes as Neural Radiance Fields for View Synthesis”, 10.48550/arXiv.2003.08934 , 2020.
【0022】
(Eigen NeRFの概要)
次に、Eigen NeRFの概要を説明する。
図4は、P-NeRFを模式的に表す図である。
図4のように、P-NeRFに対して、高次元化されたベクトルγ(x
→)、γ(d
→)、γ(e
→)が入力される。これを受けてP-NeRFは、それら高次元化されたベクトルが入力されたことに応じて色ベクトルc
→と密度σを出力する。P-NeRFによって出力された色ベクトルc
→と密度σに基づいて、別視点画像データが生成される。
【0023】
図5は、P-NeRFのネットワーク構成の一例を表す図である。P-NeRF(エンドエフェクタの関節の姿勢によって条件付けられたNeRF)は、
図5のように、複数の中間層を含む。中間層は、FC(Fully Connected)層であり、密度σを出力する出力層と、色ベクトルc
→を出力する出力層とに途中で分岐している。例えば、各中間層の次元数は256であってよく、活性化関数はReLUであってよい。
【0024】
次元圧縮され次元数が一定のベクトルである固有把持表現e→により条件付けられたP-NeRFは、次式(1)によって表される。実施形態では、固有把持表現e→により条件付けられたP-NeRFを「Eigen NeRF(Eigengrasp-conditioned NeRF)」と言う。
【0025】
【0026】
Eigen NeRFは、γ(x→)、γ(d→)、γ(e→)が入力されたことに応じて色ベクトルc→と密度σを出力する。Eigen NeRFによって出力された色ベクトルc→と密度σを視線方向(方向ベクトルd→)上においてボリュームレンダリングすることで、位置ベクトルx→が示す三次元位置から観測したときに得られるであろうシーンの別視点画像データが生成される。例えば、ボリュームレンダリングとして、人間が知覚する視覚が網膜に入射する光の輝度から決定されるように、視線方向(方向ベクトルd→)上の色を密度に応じて積算することで、別視点画像中の画素値が決定される。
【0027】
3次元空間上を進む光線r上の各サンプル点において、NeRFによって決定された各サンプル点の色ベクトルc→と密度σから、画像空間上の画素値がボリュームレンダリングによって決定される。この一連のレンダリング手順を定式化する。光線rに沿った画像空間上の色C(r)を決定するために、ボリュームレンダリングでは、オブジェクトOBが位置する3次元空間上を通る光線rを画像空間上の一点を決定する方向dに沿って飛ばす。この方向dは、カメラのパラメータから決定される。光線上の密度σ(r→(t))と色c(r→(t),d→)をtで積分することで、画像面上の色を決定できる。なお、パラメータtは、カメラの位置を原点としたとき、光線r上の任意の点r(t)はカメラ原点から方向d→に向かってどれだけ進むかを示すパラメータである。
【0028】
また、Eigen NeRFでは、MLPへの入力として、上記のカメラの位置と方向(x,y,z,θ,φ)に加えてロボットハンドの各関節の位置とロール、ピッチ(x,y,z,roll,pitch,yaw)を用いる(例えば、特願2022-148974号参照)。
【0029】
<第1実施形態>
本実施形態では、ロボットハンドにEigen NeRFを用い、対象物体にNeRF表現を用いる。本実施形態で求めたいものは、例えばロボットから見た物体の姿勢である。
【0030】
図6は、本実施形態に係るシステムの構成例と処理の概要を示す図である。なお、カメラ60の光線方向rは、光線方向R(二重線文字)の集合の要素である。ロボットハンド50の関節jは、ロボットハンド50の関節J(二重線文字)の集合の要素である。d
→は光線方向のベクトルである。カメラ60の位置x
→は、[x y z]
T(Tは倒置を表す)である。光線rは、(x
→,d
→)=(x,y,z,θ,φ)の集合に含まれている。座標変換G
→は、(R
→,t)の集合に含まれている。カメラ座標の原点は、O
cameraである。ロボット座標の原点は、O
robotである。対象物体obj座標の原点は、O
objectである。
【0031】
ロボットハンド50に関する第1のMLPのFθ_robotの入力は、カメラ60の位置と方向と、ロボットハンド50の関節毎のパラメータ(iは関節の番号であり、1~Pの間の整数)であり、出力は(r,g,b,σ)である。
対象物体objに関する第2のMLPのFθ_objectの入力は、(γ(x→)(G→)),(γ(d→)(G→))であり、出力は(r,g,b,σ)である。
【0032】
この2つのMLPの出力に重み付けされ加算され、レンダリングピクセル画像が生成される。そして、レンダリングピクセル画像における色C^(r→)と、観測ピクセル画像における色C(r→)との損失関数を最小にするようにバックプロパゲーション(Backpropagation)によってMLPが学習される。
【0033】
(座標系と変換)
しかしながら、本実施形態では、複数のNeRFを用いるにあたり、座標系が異なっているため、座標系の変換が必要である。
図7は、各座標系と変換について説明するための図である。
図7のように、ロボットハンド50の作業空間には、センサ(カメラ60)の座標系(以下、「外界センサの座標系」ともいう)と、ワールド座標系と、ロボット座標系と、対象物体の座標系がある。
【0034】
worldTrobotは、ワールド座標からロボット座標への変換である。worldTsensorは、ワールド座標からセンサ座標への変換である。robotTobjectは、ロボット座標から対象物体の座標への変換である。robotTsensorは、センサ座標からロボット座標への変換である。objectTsensorは、対象物体の座標からセンサ座標への変換である。
【0035】
ここで、ロボット座標から見たセンサの位置は、ロボットハンド50が備えるエンコーダの値を用いて求めるか、iNeRFの手法で求めるか、予めカメラ60とロボットハンド50の関係をキャリブレーションすることで求めることができるため既知である。このため、
worldT
robotと、
robotT
sensorは既知である。
ワールド座標からセンサ座標への変換
worldT
sensorは、
図7のように、
worldT
robotと
robotT
sensorをかけることで求めることができるので既知である。
【0036】
これに対して、ロボット座標から対象物体の座標への変換robotTobjectは未知である。
また、対象物体の座標からセンサ座標への変換objectTsensorは、robotTobject)
-1・robotTsensorで求められるがrobotTobjectが未知のため、objectTsensorも未知である。
なお、本実施形態では、ワールド座標系から見たロボット座標系の移動量を、自己位置推定アルゴリズムを用いて推定する。なお、自己位置推定アルゴリズムには、例えばセンサオドメトリを用いる。または、Lidarセンサを用いたAdaptive Monte Carlo Localization法や、Visual SLAM の様にMAP生成と同時に行ってもよい。また、ロボット座標系のオフセット値は任意の設計値を用いる。そして、ロボット座標系から見たセンサ座標系は、順キネマティック(順運動学)およびセンサ取付位置較正によって計算する。そして、本実施形態では、この2つの座標変換を既知として扱う。
【0037】
(Occupancy Grid Map)
ここで、Occupancy Gridマップ(占有格子地図)の概要を説明する。
Occupancy Gridを用いた手法では、空間を2次元の格子状に区切り、各格子(セル)内にどれだけの確率で物体が存在するかを逐次計算する。なお、格子サイズ、パラメータは予め設定しておく(例えば、参考文献2参照)。
【0038】
参考文献2;Payam Nikdel, Richard Vaughan, “Recognizing and Tracking High-Level, Human-Meaningful Navigation Features of Occupancy Grid Maps”, arXiv:1903.03669v1 [cs.RO] , 2019
【0039】
後述するOccupancy Gridの構成では、次式(2)を用いて占有マップの座標をワールド座標系基準に変換する。なお、式(2)においてAOB(Aはobject,world,robot、Bはobject,world,robot)は、占有マップを表している。なお、ロボット座標から対象物体の座標への変換robotTobjectが未知であるため、Tの上に「~」を付けて表している。なお、左上の添え字は、基準座標系を示している。
【0040】
【0041】
なお、objectOobjectは、物体座標系基準における物体の占有マップである。robotOrobotは、ロボット座標系基準におけるロボットの占有マップである。worldOworldは、ワールド座標系における背景の占有マップである。rorldOr
bjectは、ロボット座標系における物体の占有マップである。worldOobjectは、ワールド座標系における物体の占有マップである。worldOrobotは、ワールド座標系におけるロボットの占有マップである。
【0042】
この占有空間における損失関数Linterupt(G)(第2損失関数)は、次式(3)で求めることができる。この式の意味合いは、占有マップを用いて物体の重なり具合を損失関数として利用している。
【0043】
【0044】
なお、Ωrobotは、ワールド座標系において、Occupancy Grid(占有格子)における占有マップOrobotのうちロボットが存在する領域の集合を意味する。また、xはΩobjのボクセルである。
【0045】
また、対象物体の座標からセンサ座標への座標変換G→による損失関数Lphotomethic(G)(第1損失関数)は、次式(4)となる。
【0046】
【0047】
なお、C(*r→)は観測画像における画素値であり、C^(*r→)はレンダリング画像における画素値である。*rは、*座標系におけるrを表している。
【0048】
本実施形態では、上記の損失関数Lphotomethic(G)と損失関数Linterupt(G)を重み付けして加算してBackpropagationで用いる。
【0049】
(姿勢推定装置)
図8は、本実施形態に係る姿勢推定装置の構成例を示す図である。
図8のように、姿勢推定装置1は、例えば、Eigen NeRFモデル格納部11と、NeRFモデル格納部12と、外界センサ13と、姿勢推定部14と、意図推定部15と、動作生成部16と、内界センサ17と、制御部18と、駆動部19と、アクチュエータ20と、記憶部21を備える。
【0050】
なお、操作対象を操作する操作装置は、例えば、Eigen NeRFモデル格納部11と、NeRFモデル格納部12と、外界センサ13と、意図推定部15と、動作生成部16と、内界センサ17(カメラ60)と、制御部18と、駆動部19と、アクチュエータ20と、記憶部21を備えていてもよい。操作装置は、姿勢推定部14を備えていてもよい。
【0051】
姿勢推定装置1は、例えば、アームや多指を備えるハンドを備えるロボットハンド、またはロボット等である。なお、ロボットやロボットハンドが、姿勢推定装置1の全ての機能または一部の機能を備えていてもよい。
【0052】
Eigen NeRFモデル格納部11は、ロボットに関して学習済みのEigen NeRFモデルを格納する。
【0053】
NeRFモデル格納部12は、物体に関するNeRFモデルを物体毎に格納する。
【0054】
外界センサ13は、例えば、ロボットが作業を行う環境に設置されているカメラ、またはロボットが備えるカメラである。外界センサ13は、例えばRGB(赤緑青)撮影装置であり、撮影したRGB画像を姿勢推定部14に出力する。
【0055】
姿勢推定部14には、外界センサ13からRGB画像が入力され、内界センサ17からロボットの関節角情報が入力される。姿勢推定部14は、Eigen NeRFモデルを用いてロボット画像をレンダリングする。姿勢推定部14は、NeRFモデルを用いて物体画像をレンダリングする。姿勢推定部14は、実データと動作環境で得られたデータとの一貫性が保たれる操作装置の姿勢および操作対象物体の姿勢のうちの少なくとも1つを逐次的に推定で用いるレンダラーに微分可能レンダラーを用いる。姿勢推定部14は、操作装置のニューラル三次元表現と、操作対象物体毎のニューラル三次元表現とをそれぞれに学習する。姿勢推定部14は、それぞれの学習結果を、占有空間を利用して組み合わせたデータをレンダラーに入力することで、操作対象物体の姿勢、およびの姿勢のうちの少なくとも1つを推定する。物理シミュレータの対象は、関節を有する物体であり、例えばロボットやロボットハンドである。微分可能レンダラーは、Eigen NeRFまたはNeRFである。なお、姿勢推定部14の処理の詳細は後述する。
【0056】
意図推定部15は、作業者が入力した操作入力情報に基づいて、作業者の作業に関する意図推定を行って手先目標姿勢を生成する。意図推定部15は、生成した手先目標姿勢を動作生成部16に出力する。作業者は、例えば手にデータグローブを付けて手を動かして操作入力してもよい。なお、意図推定方法は後述する。
【0057】
動作生成部16は、姿勢推定部14が出力する物体姿勢情報と、意図推定部15が出力する手先目標姿勢を用いて、ロボットに対する軌道列を生成する。
【0058】
内界センサ17は、関節毎に取り付けられているセンサである。内界センサ17は、指先に付けられている6軸センサである。内界センサ17は、アクチュエータに取り付けられているエンコーダである。
【0059】
制御部18は、動作生成部16から軌道列を取得し、内界センサ17から検出値を受け取る。制御部18は、受け取った軌道列と検出値を用いて、ロボットハンドの手先で対象物体を把持させる等、手先目標姿勢となるようにアクチュエータを駆動する動作指示を生成する。
【0060】
駆動部19は、制御部18が出力する動作指示に応じてアクチュエータ20を駆動する。
【0061】
アクチュエータ20は、駆動部19の駆動に応じて動作する。アクチュエータ20は、例えば、ロボットハンドの指部の関節、掌の関節、手首、腕等に取り付けられている。
【0062】
記憶部21は、初期値、座標変換式、損失関数の式やパラメータ等を記憶する。
【0063】
(意図推定)
次に、意図推定方法を説明する。
意図推定部15は、取得した操作入力情報を用いて、作業内容であるタスクを推定する。なお、タスクは、例えば、物体の把持、物体を把持して移動、物体を把持して移動後に置く等である。意図推定部15は、例えば特願2021-058952号の手法を用いて意図推定を行う。意図推定部15は、学習済みのモデルを備えていてもよい。この場合、また、意図推定部15は、例えば、作業者の指先の位置情報と、操作者の視線情報に基づいて対象物体を推定するようにしてもよい。この場合、作業者は、操作入力を、データグローブに加えて、視線検出可能手段を備えるHMD(ヘッドマウントディスプレイ)を装着して作業を行う。また、推定されるタスクは、例えば作業者が行おうとしている作業の分類(タクソノミー(参考文献3参照))である。
【0064】
参考文献3;Thomas Feix, Javier Romero,et al., “The GRASP Taxonomy of Human GraspTypes” IEEE Transactions on Human-Machine Systems (Volume: 46, Issue: 1, Feb.2016),IEEE,p66-77
【0065】
(姿勢推定の処理手順)
次に、対象物体の姿勢の推定手順例を説明する。
図9~11は、本実施形態に係る姿勢推定の処理手順のフローチャートである。
【0066】
(ステップS101)姿勢推定部14は、外界センサ13から観測画像を取得する。
【0067】
(ステップS102)姿勢推定部14は、取得した観測画像に対して周知の画像処理を行って物体を抽出し、抽出した物体毎に物体ラベルを付与する。姿勢推定部14は、観測画像に対して物体ラベル毎に領域を分割する。
【0068】
(ステップS103)姿勢推定部14は、対象物体が存在しているか否かを判別する。なお、対象物体の個数は1つに限らず、2つ以上であってもよい。姿勢推定部14は、対象物体が存在する場合(ステップS104;YES)、ステップS104の処理に進める。姿勢推定部14は、対象物体が存在しない場合(ステップS104;NO)、処理を終了する。
【0069】
(ステップS104)姿勢推定部14は、ロボット座標系基準で外界センサ13の姿勢を取得する。なお、外界センサ13(カメラ)の姿勢は、後述するように最適化によって求める。
姿勢推定部14は、以下の処理のうち、ステップS105~S109と、ステップS110~S112の処理を例えば並列で行う。
【0070】
(ステップS105)姿勢推定部14は、NeRFモデル格納部12から、物体ラベルに紐付くNeRFモデルを取得する。
【0071】
(ステップS106)姿勢推定部14は、物体姿勢値を初期化する。
【0072】
(ステップS107)姿勢推定部14は、物体座標系基準の外界センサ座標系の座標変換行列objTsensorを記憶部21から取得する。
【0073】
(ステップS108)姿勢推定部14は、NeRFモデルへの入力である各Ray(センサ原点からある画素を結んだ直線)を、物体座標系基準の外界センサ座標系の座標変換行列objectTsensorを用いて、ロボット座標系から物体座標基準に座標変換する。なお、Rayは、外界センサ座標系基準であるため、得られた座標変換行列を左から掛ければ物体座標系から見たRayを得ることができる。なお、未知のロボット座標系から見た物体座標系への座標変換行列robotTobjectの逆行列を、既知のロボット座標系から見た外界センサ座標系robotTsensorへの座標変換行列に左から掛けることで、物体座標系から見た外界センサ座標系への座標変換行列を得る。なお、ロボット座標系から見た物体座標系への座標変換行列が未知であるため、本実施形態では、適切な初期値で初期化する。この初期値は、後述する最適化演算によって修正されていく。これにより、ロボット座標系から見た物体座標と、ロボット座標系から見た外界センサ座標が与えられる。ロボット座標系から見た物体座標は、初期値を適当に決定し最適化演算によって修正される。ロボット座標系から見た外界センサ座標は、例えばFK(Forward Kinematics;順運動学)を解くなどで計算する。ここで、物体座標系から見た外界センサ座標は、ロボット座標系から見た物体座標の逆行列をロボット座標系から見た外界センサ座標の変換行列に左側から掛けることで得ることができる。
【0074】
(ステップS109)姿勢推定部14は、座標変換したRayに基づく情報をNeRFモデルへ入力して、対象物体の画像をレンダリングする。姿勢推定部14は、処理後、ステップS113の処理に進める。
【0075】
(ステップS110)姿勢推定部14は、Eigen NeRFモデル格納部11から、Eigen NeRFモデルを取得する。
【0076】
(ステップS111)姿勢推定部14は、内界センサ17から、例えばロボットハンドの指部と腕等の関節角度を取得する。
【0077】
(ステップS112)姿勢推定部14は、取得した関節角度と外界センサから取得した画像に基づく情報をEigen NeRFモデルへ入力して、ロボットの画像をレンダリングする。姿勢推定部14は、処理後、ステップS113の処理に進める。
【0078】
(ステップS113)姿勢推定部14は、ステップS109で作成した物体のレンダリング画像と、ステップS112で作成したロボットのレンダリング画像を加算する。なお、それぞれのMLPに入力されるx,dは、座標変換によって各座標系基準の外界センサ位置姿勢を意味する。なお、
図14において、物体のMLPに入力しているx,dに入力するGは、座標変換行列を意味する。この場合は、ロボット座標系基準の外界センサ座標とロボット座標系基準の物体座標との座標変換行列を意味する。なお、後述する背景のMLPにも、ロボット座標系基準の外界センサ座標とロボット座標系基準の世界座標との座標変換行列を入力する必要がある。推定姿勢が正しければ単純に足し合わせるだけでもよく、重みを掛けてから足し合わせてもよい。なお、重みは、各MLPから出力されるσを正規化するために使用する。
【0079】
(ステップS114)姿勢推定部14は、合成した画像と観測画像との輝度差L1である損失関数Lphotomethic(G)を計算する。
【0080】
(ステップS115)姿勢推定部14は、Occupancy Gridを構成する。なお、Occupancy Gridの構成方法は後述する。
【0081】
(ステップS116)姿勢推定部14は、ロボットのOccupancy Gridに物体がどの程度侵入しているかを示すL2である損失関数L
interupt(G)を計算する。そして、後述するステップS404(
図17)と同様に、各占有マップの座標系を同じにするように座標変換を行う。
【0082】
(ステップS117)姿勢推定部14は、ロボット座標系基準で損失関数が最小となる物体姿勢を推定する。なお、損失関数は、損失関数L
interupt(G)と、損失関数L
photomethic(G)を重み付けして加算したものである。なお、姿勢推定部14は、損失関数が最小となるように、例えば後述するステップS119(
図13)の条件のように、閾値として設定した残差より小さくなるまで処理を繰り返す。
【0083】
(ステップS118)姿勢推定部14は、検出された全ての対象物体についての処理が終了したか否かを判別する。姿勢推定部14は、検出された全ての対象物体についての処理が終了した場合(S118;YES)、処理を終了する。姿勢推定部14は、検出された全ての対象物体についての処理が終了していない場合(S118;NO)、ステップS107の処理に戻す。
【0084】
(Occupancy Gridの構成方法)
次に、Occupancy Gridの構成の手順例を説明する。
図12は、本実施形態に係るOccupancy Gridの構成手順のフローチャートである。
【0085】
(ステップS201)姿勢推定部14は、物体座標系における対象物体の占有マップを取得する。
【0086】
(ステップS202)姿勢推定部14は、ロボット座標系におけるロボットの占有マップを取得する。
【0087】
(ステップS203)姿勢推定部14は、ワールド座標系基準で、物体の占有マップとロボットの占有マップの座標変換を行う。なお、姿勢推定部14は、ロボット座標と物体座標が未知であるため、初期値を与える。初期値は、例えば他の物体姿勢推定法を用いて設定する。姿勢推定部14は、例えば、物体姿勢推定法に、DenseFusion法(例えばChen Wang, Danfei Xu, et al, “DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion”,
<https://sites.google.com/view/densefusion>参照)を用いる。通常のVisionベースの手法では自己遮蔽等により精度が悪化するため、DenseFusion法を用いて精度向上させることが期待される。
【0088】
(カメラ姿勢推定処理例)
次に、
図13を用いて、カメラ姿勢推定処理例を説明する。
図13は、各座標系と座標変換行列の定義を示す図である。
【0089】
ここで、ワールド座標系のrは、worldr→
i=worldTsensor・sensorr→
iで変換可能である。ロボット座標系のrは、robotr→
i=robotTsensor・sensorr→
iで変換可能である。物体のrは、objr→
i=objTsensor・sensorr→
iで変換可能である。
なお、sensorr→
iは、外界センサ13が撮影した観測画像の画素値のベクトルである。
【0090】
図13では、未知の座標変換であるロボット座標系から物体座標系を
robotT
~
objで示している。また、未知の座標変換である物体座標系からセンサ座標系を
objT
~
sensorで示している。また、
図13において、ベクトルはRayと同じ意味で用いている。
【0091】
本実施形態では、上述したように、ワールド座標系から見たロボット座標系の移動量は、自己位置推定アルゴリズムを用いて推定する。本実施形態では、ロボット座標系のオフセット値に、任意の設計値を用いる。本実施形態では、ロボット座標系から見たセンサ座標系を、順キネマ及びセンサ取付位置較正によって計算する。すなわち、本実施形態では、ワールド座標系から見たセンサ座標系への座標変換を計算によって求める。また、上述したように、本実施形態では、ロボット座標系から見た物体座標系への座標変換行列
robotT
objectの逆行列を、ロボット座標系から見たセンサ座標系への座標変換行列
robotT
sensorに左から掛けることで、物体座標系から見たセンサ座標系への座標変換行列を得る。なお、本実施形態では、この2つの座標変換を既知として扱った。
なお、
図7を用いて説明したように、
worldT
robotと、
robotT
sensor、
worldT
sensorは既知である。これに対して、
robotT
object、
objectT
sensorは未知であるため、本実施形態では、適切な初期値で初期化する。この初期値は、最適化演算によって修正されていく。
【0092】
以上のように、本実施形態では、ロボットハンドのEigen NeRF表現と物体のNeRF表現を組み合わせた。また、本実施形態では、複数のNeRF表現を用いるため、座標変換を行った後にレンダリングを行うようにした。また本実施形態では、占有空間を用いてデータを組み合わせてレンダラーに入力するようにした。
【0093】
これにより、本実施形態によれば、インハンド操作のような自己遮蔽が発生する環境であっても、物体の姿勢を高精度、かつ効率的、レンダリングが高速であれば高速に推定することが可能になる。また、本実施形態によれば、ロボットハンドと物体のNeRF 表現はそれぞれ別で学習して組み合わせるため、様々な物体の組み合わせにも対応できる。
【0094】
<第2実施形態>
本実施形態では、
図14のように、ロボットハンドにEigen NeRFを用い、対象物体と背景にNeRF表現を用いる。
図14は、本実施形態に係る処理の概要を示す図である。
なお、背景については、NeRFには、(γ(x
→)、γ(d
→))が入力され、(r、g、b、σ)が出力される。そして、ロボットのEigen NeRFの出力と、物体のNeRFの出力と、背景のNeRFの出力とを加算してレンダリング画像を生成する。なお、背景のNeRFモデルは、例えばNeRFモデル格納部12に格納されている。
【0095】
(姿勢推定の処理手順)
次に、対象物体の姿勢の推定手順例を、
図11、15、16を用いて説明する。
図15~16は、本実施形態に係る姿勢推定の処理手順のフローチャートである。なお、第1実施例と同様の処理については、同じ符号を用いて説明を省略する。
【0096】
(ステップS101~S104)姿勢推定部14は、ステップS101~S104の処理を行う。
姿勢推定部14は、以下の処理のうち、ステップS105~S109と、ステップS110~S112と、ステップS301~S304の処理を例えば並列で行う。
【0097】
(ステップS105~S109)姿勢推定部14は、ステップS105~S109の処理を行う。姿勢推定部14は、処理後、ステップS113の処理に進める。
【0098】
(ステップS110~S112)姿勢推定部14は、ステップS110~S112の処理を行う。姿勢推定部14は、処理後、ステップS113の処理に進める。
【0099】
(ステップS301)姿勢推定部14は、例えばNeRFモデル格納部12から、背景のNeRFモデルを取得する。
【0100】
(ステップS302)姿勢推定部14は、ワールド座標系基準の外界センサ座標系の座標変換行列worldTsensorを記憶部21から取得する。
【0101】
(ステップS303)姿勢推定部14は、NeRFモデルへの入力である各Rayを、ワールド座標系基準の外界センサ座標系の座標変換行列worldTsensorを用いて、ワールド座標基準に座標変換する。
【0102】
(ステップS304)姿勢推定部14は、外界センサ13の画像に基づく情報をNeRFモデルへ入力して、背景の画像をレンダリングする。姿勢推定部14は、処理後、ステップS113の処理に進める。
【0103】
(ステップS113)姿勢推定部14は、ステップS109で作成した物体のレンダリング画像と、ステップS112で作成したロボットのレンダリング画像と、ステップS304で作成した背景のレンダリング画像を合成する。
【0104】
(ステップS114~S119)姿勢推定部14は、ステップS114~S119(
図11)の処理を行う。
【0105】
ここで、仮に、各MLPに正確な外界センサ位置姿勢が入力されると観測画像と同等(輝度差がない)の画像を合成することになる。これに対して、本実施形態では、レンダリングの段階での座標系が、各MLPでそれぞれ異なる。本実施形態では、座標変換によって間接的に紐づけられているため、レンダリングされた画像が外界センサ座標からの視点に基づいているようにした。推定した物体姿勢が真値からズレていると、座標変換行列もズレ、その結果、レンダリング結果も観測画像と輝度差が大きくなる。本実施形態では、この輝度差および占有マップの干渉を利用して最適な物体姿勢を推定する。
【0106】
(Occupancy Gridの構成方法)
次に、Occupancy Gridの構成の手順例を説明する。
図18は、本実施形態に係るOccupancy Gridの構成手順のフローチャートである。
【0107】
(ステップS401)姿勢推定部14は、物体座標系における対象物体の占有マップを取得する。
【0108】
(ステップS402)姿勢推定部14は、物体座標系における対象物体の占有マップを取得する。
【0109】
(ステップS403)姿勢推定部14は、ロボット座標系におけるロボットの占有マップを取得する。
【0110】
(ステップS404)姿勢推定部14は、ワールド座標系基準で、背景の占有マップと物体の占有マップとロボットの占有マップの座標変換を行う。なお、上述したステップS203と同様に、姿勢推定部14は、ロボット座標と物体座標が未知であるため、初期値を与える。初期値は、例えば他の物体姿勢推定法を用いて設定する。
【0111】
以上のように、本実施形態では、第1実施形態に加えて背景画像情報を用い、背景画像情報をNeRFモデルに入力するようにした。また、本実施形態では、この背景のNeRFも用いてレンダリング画像を生成するようにした。
【0112】
これにより、本実施形態によれば、背景も考慮して物体の姿勢を精度良く推定できる。また、本実施形態によれば、静的環境において、背景(つまり、ロボットと物体以外)との干渉を用いることで、推定される姿勢に制約が掛かるので演算量を削減できる。なお、背景を含めない場合は、観測画像から背景部分を除去する処理が追加される。
【0113】
<変形例>
なお、上述した各実施形態では、物体の姿勢を推定する例を説明したが、姿勢推定装置1は、例えばロボットの姿勢を推定するようにしてもよい。
例えば、ロボットの占有マップは、ロボットの関節角が変化するたびに変化する。なお、NeRFとしてモデル化できていれば、占有マップは変化しない。また、モデル化された以外のものが現れた場合には、外界センサ13の検出値に基づいて、占有マップを構成するようにしてもよい。
【0114】
なお、本発明における姿勢推定装置1の全てまたは一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより姿勢推定装置1が行う処理の全てまたは一部を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0115】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0116】
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形および置換を加えることができる。
【符号の説明】
【0117】
1…姿勢推定装置、11…Eigen NeRFモデル格納部、12…NeRFモデル格納部、13…外界センサ、14…姿勢推定部、15…意図推定部、16…動作生成部、17…内界センサ、18…制御部、19…駆動部、20…アクチュエータ、21…記憶部、50…ロボットハンド、60…カメラ