(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-22
(45)【発行日】2022-12-01
(54)【発明の名称】移動体
(51)【国際特許分類】
G01B 11/00 20060101AFI20221124BHJP
B66F 9/24 20060101ALI20221124BHJP
G05D 1/02 20200101ALI20221124BHJP
G01B 11/26 20060101ALI20221124BHJP
G06T 7/70 20170101ALI20221124BHJP
【FI】
G01B11/00 H
B66F9/24 P
G05D1/02 K
G01B11/26 H
G06T7/70 Z
(21)【出願番号】P 2019011111
(22)【出願日】2019-01-25
【審査請求日】2021-06-07
(73)【特許権者】
【識別番号】000003609
【氏名又は名称】株式会社豊田中央研究所
(73)【特許権者】
【識別番号】000003218
【氏名又は名称】株式会社豊田自動織機
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】田中 稔
(72)【発明者】
【氏名】藤井 亮暢
(72)【発明者】
【氏名】津坂 祐司
(72)【発明者】
【氏名】三田 達也
(72)【発明者】
【氏名】野々垣 保紀
【審査官】眞岩 久恵
(56)【参考文献】
【文献】特開平11-278799(JP,A)
【文献】特開2018-084995(JP,A)
【文献】特開平06-115897(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01B 11/00-11/30
B66F 9/24
G05D 1/02
G06T 7/70
(57)【特許請求の範囲】
【請求項1】
第1マーカ
および第2マーカが予め定められた第1所定距離だけ離して配置されているマーカ群を備えた対象物の位置および姿勢を認識する移動体であって、
前記マーカ群を撮像するための光学センサと、
前記移動体が移動した1つまたは複数の移動点の各々で前記光学センサを用いて前記対象物を撮像した画像に基づいて、前記1つまたは複数の移動点の各々において前記
第1マーカおよび前記第2マーカの位置および姿勢を推定するマーカ群位置姿勢推定部と、
複数のセンサノードと、
第1マーカノードと、
第2マーカノードと、前記複数のセンサノードと前記
第1マーカノード
および前記第2マーカノードとの相対的位置関係
の制約条件を規定する複数の
第1アークと、
前記第1マーカと前記第2マーカとの相対的位置関係の制約条件を規定する第2アークと、を備えるグラフ構造データを生成するグラフ構造データ生成部と、
生成した前記グラフ構造データ
を最適化することで、前記
第1マーカおよび前記第2マーカの位置および姿勢の推定値を補正する補正部と、
を備え、
前記複数のセンサノードは、前記1つまたは複数の移動点のそれぞれにおける前記光学センサの位置および姿勢を示すノードであり、
前記
第1マーカノード
および前記第2マーカノードは、前記マーカ群位置姿勢推定部で推定された前記
第1マーカおよび前記第2マーカの位置および姿勢を示すノードであ
り、
前記第2アークの制約条件は前記第1アークの制約条件よりも強く、
前記最適化では、前記第2アークよりも前記第1アークの方がより修正される、
移動体。
【請求項2】
前記移動体が時刻t
iの移動点から時刻t
i+1の移動点まで移動した場合に、前記時刻t
i+1の移動点における前記移動体の位置および姿勢を算出する移動体位置姿勢算出部をさらに備え、
前記マーカ群位置姿勢推定部は、前記時刻t
i+1の移動点において前記マーカ群の位置および姿勢を推定し、
前記グラフ構造データ生成部は、前記時刻t
i+1の移動点におけるセンサノードおよびマーカノードと、前記時刻t
i+1の移動点におけるセンサノードとマーカノードとの相対的位置関係を規定するアークと、を生成して、前記グラフ構造データに追加する、請求項1に記載の移動体。
【請求項3】
前記移動体は、前記対象物を保持可能な支持構造部を備えており、
前記移動体は、前記補正部によって補正された前記マーカ群の位置および姿勢に基づいて、前記支持構造部をアクセスするアクセス位置を推定するアクセス位置推定部をさらに備える、請求項1に記載の移動体。
【請求項4】
前記補正部によって補正された前記マーカ群の位置および姿勢に基づいて、前記移動体の現在位置から前記対象物までの軌道および速度パターンを生成する軌道生成部と、
生成した前記軌道および速度パターンに基づいて前記移動体を前記対象物まで移動させる移動制御部と、
前記アクセス位置推定部で推定した前記アクセス位置に基づいて、前記支持構造部を前記アクセス位置にアクセスさせるアクセス制御部と、
をさらに備える、請求項3に記載の移動体。
【請求項5】
前記支持構造部はフォークであり、
前記対象物はパレットであり、
前記光学センサは、前記フォークの動作と一体化して動作する、請求項3または4に記載の移動体。
【請求項6】
前記マーカ群は、水平方向に前記第1所定距離だけ離れた2つ以上のマーカを備える、請求項1~5の何れか1項に記載の移動体。
【請求項7】
前記マーカ群は、水平方向に前記第1所定距離だけ離れた前記2つ以上のマーカよりも上方または下方側に、さらに1つ以上のマーカを備える、請求項6に記載の移動体。
【請求項8】
前記マーカ群位置姿勢推定部は、前記光学センサで撮像された画像内に前記マーカ群が複数存在する場合に、複数のマーカ群の各々の位置および姿勢を推定し、
前記グラフ構造データ生成部は、前記複数のマーカ群の各々の位置および姿勢を示す複数の前記
第1マーカノード
および前記第2マーカノードを生成する、請求項1~7の何れか1項に記載の移動体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示する技術は、対象物の位置および姿勢を認識する移動体に関する。
【背景技術】
【0002】
特許文献1には、マーカをパレットや荷台などの荷役対象物に貼り付け、カメラで撮像したマーカ画像に対してパターンマッチング処理を行うことで、マーカの位置や大きさを算出する技術が開示されている。これにより、フォークリフトに対する荷役対象物の相対的な位置や姿勢を検出している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1の技術は、荷役対象物の奥行方向の3次元的な姿勢は算出できない。奥行方向の3次元的な姿勢の一例としては、荷役対象物のヨー方向(上下を軸とした回転方向)やピッチ方向(左右を軸とした回転方向)の回転姿勢が挙げられる。本明細書は、荷役対象物の三次元的な位置姿勢を高精度に推定することが可能な技術を開示する。
【課題を解決するための手段】
【0005】
本明細書に開示する移動体の一実施形態は、複数のマーカが予め定められた第1所定距離だけ離して配置されているマーカ群を備えた対象物の位置および姿勢を認識する移動体である。移動体は、マーカ群を撮像するための光学センサを備える。移動体は、移動体が移動した1つまたは複数の移動点の各々で光学センサを用いて対象物を撮像した画像に基づいて、1つまたは複数の移動点の各々においてマーカ群の位置および姿勢を推定するマーカ群位置姿勢推定部を備える。移動体は、複数のセンサノードと、マーカノードと、複数のセンサノードとマーカノードとの相対的位置関係を規定する複数のアークと、を備えるグラフ構造データを生成するグラフ構造データ生成部を備える。移動体は、生成したグラフ構造データを、複数のアークから算出される誤差関数の和が最小となるように最適化することで、マーカ群の位置および姿勢の推定値を補正する補正部を備える。複数のセンサノードは、1つまたは複数の移動点のそれぞれにおける光学センサの位置および姿勢を示すノードである。マーカノードは、マーカ群位置姿勢推定部で推定されたマーカ群の位置および姿勢を示すノードである。
【0006】
上記の移動体では、1つまたは複数の移動点のそれぞれにおける光学センサの位置および姿勢を示す複数のセンサノードと、マーカ群位置姿勢推定部で推定されたマーカ群の位置および姿勢を示すマーカノードと、複数のセンサノードとマーカノードとの相対的位置関係を規定する複数のアークと、を備えたグラフ構造データを生成することができる。そしてグラフ構造データを最適化することで、マーカ群の位置および姿勢の推定値を補正することができる。1つまたは複数の移動点の各々において推定した、マーカ群の位置および姿勢の複数の推定結果を用いて、全体最適化することができる。よって、ある1つの移動点で推定したマーカ群の位置および姿勢の推定結果を用いる場合と比して、マーカ群の位置および姿勢をより正確に推定することが可能となる。
【0007】
移動体が時刻tiの移動点から時刻ti+1の移動点まで移動した場合に、時刻ti+1の移動点における移動体の位置および姿勢を算出する移動体位置姿勢算出部をさらに備えてもよい。マーカ群位置姿勢推定部は、時刻ti+1の移動点においてマーカ群の位置および姿勢を推定してもよい。グラフ構造データ生成部は、時刻ti+1の移動点におけるセンサノードおよびマーカノードと、時刻ti+1の移動点におけるセンサノードとマーカノードとの相対的位置関係を規定するアークと、を生成して、グラフ構造データに追加してもよい。効果の詳細は実施例で説明する。
【0008】
移動体は、対象物を保持可能な支持構造部を備えていてもよい。移動体は、補正部によって補正されたマーカ群の位置および姿勢に基づいて、支持構造部をアクセスするアクセス位置を推定するアクセス位置推定部をさらに備えていてもい。効果の詳細は実施例で説明する。
【0009】
移動体は、補正部によって補正されたマーカ群の位置および姿勢に基づいて、移動体の現在位置から対象物までの軌道および速度パターンを生成する軌道生成部をさらに備えていてもよい。移動体は、生成した軌道および速度パターンに基づいて移動体を対象物まで移動させる移動制御部をさらに備えていてもよい。移動体は、アクセス位置推定部で推定したアクセス位置に基づいて、支持構造部をアクセス位置にアクセスさせるアクセス制御部をさらに備えていてもよい。効果の詳細は実施例で説明する。
【0010】
支持構造部はフォークであってもよい。対象物はパレットであってもよい。光学センサは、フォークの動作と一体化して動作してもよい。効果の詳細は実施例で説明する。
【0011】
マーカ群は、水平方向に第1所定距離だけ離れた2つ以上のマーカを備えていてもよい。効果の詳細は実施例で説明する。
【0012】
マーカ群は、水平方向に第1所定距離だけ離れた2つ以上のマーカよりも上方または下方側に、さらに1つ以上のマーカを備えていてもよい。効果の詳細は実施例で説明する。
【0013】
マーカ群位置姿勢推定部は、光学センサで撮像された画像内にマーカ群が複数存在する場合に、複数のマーカ群の各々の位置および姿勢を推定してもよい。グラフ構造データ生成部は、複数のマーカ群の各々の位置および姿勢を示す複数のマーカノードを生成してもよい。効果の詳細は実施例で説明する。
【図面の簡単な説明】
【0014】
【
図4】実施例1における車体およびパレットの位置関係を示す図である。
【
図5】
図4の位置関係から生成されたグラフ構造データを示す図である。
【
図6】位置姿勢推定処理の内容を示すフローチャートである。
【
図7】荷役処理の内容を示すフローチャートである。
【
図8】マーカノードの位置及び姿勢を補正できる理由を説明する図である。
【
図9】マーカの位置および姿勢の推定結果の一例を示す図である。
【
図10】実施例2における車体およびパレットの位置関係を示す図である。
【
図11】
図10の位置関係から生成されたグラフ構造データを示す図である。
【
図12】実施例3における車体、パレットおよび柱の位置関係を示す図である。
【
図13】
図12の位置関係から生成されたグラフ構造データを示す図である。
【発明を実施するための形態】
【実施例1】
【0015】
(フォークリフト1の構成)
以下、
図1および
図2を参照して、本実施例のフォークリフト1について説明する。
図1はフォークリフト1の概略斜視図であり、
図2はブロック図である。フォークリフト1は、無人フォークリフトである。
図1に示すように、フォークリフト1は、車体2、制御部10(
図2に図示)、マスト20、フォーク22、バックレスト23、カメラ固定部24、カメラ30、を備えている。
【0016】
車体2は、その両側面のそれぞれに前輪28及び後輪29を備えている。前輪28は、駆動機構を介して駆動輪モータ(不図示)が接続されており、移動制御部17(
図2に図示)によって回転駆動されるようになっている。後輪29は、操舵装置(不図示)に接続されており、移動制御部17によって車輪の向きが調整される。移動制御部17が駆動輪モータ及び操舵装置を制御することで、車体2は路面を走行すると共に、車体2の進行方向を変えることができる。
【0017】
マスト20は、車体2の前面に取付けられている支柱であり、その軸線は上下方向に伸びている。フォーク22は、マスト20に上下方向に移動可能に取付けられている。フォーク22は、一対のツメ22a、22bを有している。ツメ22a、22bは、車体2の左右方向に互いに離間した位置に配置されており、マスト20側から車体2の前方に向かって伸びている。フォーク22は、荷役装置制御部18(
図2に図示)により昇降される。フォーク22の上下方向の位置は、荷役装置制御部18の駆動量によって特定可能となっている。
【0018】
バックレスト23は、フォーク22の上に載せた荷物がマスト20の後方に落下するのを防ぐ部材である。カメラ固定部24は、バックレスト23と一体化するようにカメラ30を固定する部材である。これにより、フォーク22がマスト20によって上下するときや、不図示のチルト機構によって前後に傾くときに、カメラ30も一体となって動く。よって、フォーク22を基準としたマーカ画像を取得することができる。
【0019】
図2のブロック図を説明する。フォークリフト1は、制御部10、グラフ構造記憶部19、フォーク22、前輪28、後輪29、カメラ30、エンコーダ40、を備える。制御部10は、フォークリフト1を制御する装置である。制御部10は、例えば、CPU、ROM、RAM等を備えたコンピュータによって構成することができる。コンピュータがプログラムを実行することで、制御部10は、
図2に示すマーカ群位置姿勢推定部11~荷役装置制御部18等として機能する。制御部10は、位置姿勢推定モジュールMOD1と、車両制御モジュールMOD2とを備える。位置姿勢推定モジュールMOD1は、後述する位置姿勢推定処理(
図6)を実行する。車両制御モジュールMOD2は、後述する荷役処理(
図7)を実行する。位置姿勢推定モジュールMOD1と車両制御モジュールMOD2とは、互いに独立しており並列に動作可能である。位置姿勢推定モジュールMOD1は、マーカ群位置姿勢推定部11、グラフ構造データ生成部13、グラフ最適化部14、アクセス位置推定部15を備えている。車両制御モジュールMOD2は、車体位置姿勢算出部12、軌道生成部16、移動制御部17、荷役装置制御部18を備えている。マーカ群位置姿勢推定部11~荷役装置制御部18の各々の動作内容の詳細は、後述する。グラフ構造記憶部19は、後述するグラフ構造データを記憶する部位である。エンコーダ40は、車輪の回転角を検出するセンサを備えた部位である。その他の部位については、
図1で説明済みである。
【0020】
(パレットの構成)
図3に、本実施形態に係るパレット50の一例を示す。パレット50は、カゴパレットである。パレット50の正面下部には、フォーク22を挿入するための空間SPが配置されている。空間SP内には、パレット基準座標PCが予め設定されている。y方向(左右方向)におけるパレット基準座標PCの原点位置は、パレット50の正面中央である。z方向(上下方向)におけるパレット基準座標PCの原点位置は、フォーク22を差す高さである。パレット基準座標PCの原点位置は、設計者によって決定された位置であり、空間上の仮想的な位置である。
【0021】
パレット50の正面には、2つのマーカM1およびM2を備えたマーカ群MGが配置されている。本実施形態では、マーカM1およびM2は、AR(Augmented Reality)マーカである。すなわちマーカM1およびM2は、拡張現実システムにおいて、付加情報を表示する位置を指定するための標識となるマーカである。
図3において、マーカ基準座標MC1およびMC2は、マーカM1およびM2の各々の位置および姿勢(向き)を示している。マーカM1およびM2は、予め定められた第1所定距離D1だけ互いに離れて、水平方向に配置されている。またマーカM1およびM2は、同一面内に配置されている。これにより、パレット基準座標PCの原点とマーカ基準座標MC1およびMC2の原点との相対位置が一意に決まる。具体的には、最初にマーカM1およびM2の配置位置や第1所定距離D1を決定する。そして、荷取り位置との距離を測定する、または、設計情報から距離を算出することで、マーカM1およびM2とパレット基準座標PCの原点との相対位置をデータファイルに登録する。よって、マーカM1およびM2の位置と、パレット基準座標PCとの関係を既定(拘束)することができる。換言すれば、マーカM1およびM2は、パレット基準座標PCとの位置関係が既定できる場所に設置しなければならない。
【0022】
(パレットの自動荷役)
図4~
図9を用いて、パレットの自動荷役の具体的な処理について説明する。本説明例では
図4に示すように、時刻t
iにおける位置P1から時刻t
i+1における位置P2へ、軌道TR1を通って車体2が走行する場合の処理内容を説明する。
図4において、車体基準座標VC1およびVC2は、時刻t
iおよびt
i+1の各々における車体2の位置および姿勢(向き)を示している。車体基準座標VC1およびVC2の原点は、車体2の原点を示している。カメラ基準座標CC1およびCC2は、時刻t
iおよびt
i+1の各々におけるカメラ30の位置および姿勢(向き)を示している。
【0023】
(位置姿勢推定処理の内容)
図6の位置姿勢推定処理は、新たな荷役処理の開始でスタートする。具体的には、後述する荷役処理のS210で荷役処理を開始することが判断されることによってスタートする。S10において、画像データ受信処理が行われる。本説明例では、
図4の時刻t
iにおける位置P1において、カメラ30がパレット50を撮像する。そして制御部10は、カメラ30から画像データを受信する。
【0024】
S20において、マーカ群位置姿勢推定部11は、受信した画像データに基づいてマーカM1およびM2の位置および姿勢を推定する。この推定処理は、公開されているソフトライブラリを用いることができるため、説明を省略する。
図9に、マーカの位置および姿勢の推定結果の一例を示す。カメラ30による計測結果に基づく推定結果では、マーカの位置および姿勢には誤差が含まれる。例えば
図9の推定結果では、マーカ基準座標MC1およびMC2が示すマーカM1およびM2の姿勢は、誤差を含むため、パレット50の正面に対して垂直になっていない状態である。すなわち
図9の推定結果では、マーカM1およびM2のヨー角姿勢を正確に推定できていない。
【0025】
S30において、車体位置姿勢算出部12は、車体2の位置および姿勢を算出する。具体的には、エンコーダ40によって検出された前輪28の回転角に基づいて、車体2の移動方向及び移動量を求める。
【0026】
S35において、グラフ最適化部14は、グラフ最適化処理を実行するか否かを判断する。この判断は、例えば、グラフ最適化処理を前回実行した時点から車体2が0.5m以上進んだか否かによって行われてもよい。これにより、グラフ構造が必要以上に長大ならないように抑制することができる。否定判断される場合(S35:NO)にはS10へ戻り、肯定判断される場合(S35:YES)にはS40へ進む。
【0027】
S40~S70において、グラフ構造データ生成処理が行われる。グラフ構造データは、制御部10にて中間情報として生成されるデータである。グラフ構造データは、マーカM1およびM2の位置および姿勢の推定の誤差を抑制するために用いられるデータである。
【0028】
図5に示すグラフ構造データについて説明する。グラフ構造データは、車体ノードVN1およびVN2、センサノードSN1およびSN2、マーカノードMN1およびMN2を備える。車体ノードVN1およびVN2は、時刻t
iおよびt
i+1の移動点の各々における車体2の位置および姿勢を示す情報である。センサノードSN1およびSN2は、時刻t
iおよびt
i+1の移動点の各々におけるカメラ30の位置および姿勢を示す情報である。マーカノードMN1およびMN2は、時刻t
iおよびt
i+1の移動点の各々において推定されたマーカM1およびM2の位置および姿勢を示す情報である。
図5では説明の便宜上、マーカノードMN1およびMN2を円で示している。しかし実際は、
図9で説明したように、マーカノードMN1およびMN2は、ヨー角姿勢などの姿勢情報も有している。
【0029】
またグラフ構造データは、アークAC1およびAC2、アークAVC1およびAVC2、アークAVN12、アークAM、を備える。アークは、相対位置の制約条件である。アークAC1は、センサノードSN1とマーカノードMN1との相対的位置関係、および、センサノードSN1とマーカノードMN2との相対的位置関係を規定する情報である。同様に、アークAC2は、センサノードSN2とマーカノードMN1との相対的位置関係、および、センサノードSN2とマーカノードMN2との相対的位置関係を規定する情報である。アークAVC1およびAVC2は、車体ノードとセンサノードとの間の相対的位置関係を規定する情報である。アークAVN12は、車体ノードVN1とVN2との相対的位置関係を規定する情報である。アークAMは、マーカM1とM2との間の相対的位置関係を規定する情報である。
【0030】
各アークは、「ノード間の相対位置・姿勢の初期値」と「確からしさ」に関する事前知識を保持している。「確からしさ」は、情報行列で表すことができる。情報行列は、ノード間の相対位置および姿勢の誤差についての分散共分散行例の逆行列である。アークAVC1およびAVC2によって規定される車体ノードとセンサノードとの間の相対位置および姿勢は、フォークリフト1の設計事項であるため、既知である。同様に、アークAMによって規定されるマーカM1とM2との間の相対位置および姿勢は、
図3で説明したように既知である。アークAVCおよびアークAMは既知であるため、グラフ構造記憶部19に予め保存しておき、グラフ構造生成時に読み出して利用することができる。
【0031】
グラフ構造データの生成処理の具体例を説明する。S40において、グラフ構造データ生成部13は、車体位置姿勢算出部12で得られた車体2の位置および姿勢を表す車体ノードを設定する。本説明例では、車体位置姿勢算出部12で時刻t
i+1における車体基準座標VC2(
図4)が求められる。そして、車体基準座標VC2に対応する車体ノードVN2(
図5)が追加される。
【0032】
S50において、グラフ構造データ生成部13は、カメラ30の位置および姿勢を表すセンサノードを設定する。センサノードの設定は、カメラ30と、車体2の後輪29の車軸との既知の位置関係に基づいて行うことができる。本説明例では、センサノードSN2(
図5)が追加される。
S60において、グラフ構造データ生成部13は、S20で推定したマーカM1およびM2の位置および姿勢を表すマーカノードMN1およびMN2(
図5)を設定する。
【0033】
S70において、グラフ構造データ生成部13は、センサノードとマーカノード間、車体ノードとセンサノード間、車体ノード間、マーカM1とM2との間、にアークを追加する。本説明例では、アークAC2、アークAVC2、アークAVN12およびアークAMが追加される。S80において、グラフ構造データ生成部13は、ノードやアークが追加されたグラフ構造データをグラフ構造記憶部19に記憶する。
【0034】
S100においてグラフ最適化部14は、グラフ構造記憶部19に記憶されているグラフ構造データを最適化する。最適化には、例えば、Graph-Based SLAM(Simultaneous Localization and Mapping)を用いることができる。Graph-Based SLAMは、カメラ位置やマーカ位置をノード(頂点)、それらの間の相対位置の制約条件をアーク(辺)とするグラフに対して、各制約の誤差総和を最小化するように最適化計算を行う手法である。過去から現在までの車体2の移動に伴う全データを利用して全体最適化を行うため、過去に遡ってマーカ位置を修正できるという特徴を有する。
【0035】
Graph-Based SLAMを具体的に説明する。各ノードの相対位置制約からの誤差の総和を評価関数として、非線形最小二乗問題を解く。この評価関数は次式となる。
【数1】
ここで、Cは制約条件の集合である。e
ij(x
i,x
j)はノードx
iとノードx
jの間の相対位置制約からの誤差ベクトル関数である。Σ
ijはその制約の共分散行列である。制約の共分散によるマハラノビス距離の二乗和が最小となるように上式を最小化することで、各ノードの位置、姿勢関係を最適化する。これにより、マーカノードMN1およびMN2の位置および姿勢を補正することができる。
【0036】
図8を用いて、マーカノードの位置及び姿勢を補正できる理由を説明する。
図8では、時刻t
iにおける位置P1、時刻t
i+1における位置P2、時刻t
i+2における位置P3の各々において、マーカM1およびM2の位置姿勢を推定(S20)した場合の例である。すなわち、多視点からの観測を行った例である。マーカを用いた位置姿勢の推定では、カメラ30からマーカを結んだ線上(奥行方向)に距離の誤差が生じる。例えば、カメラ30とマーカとの距離が4mの場合に、標準偏差20mmである。一方、横方向には誤差はほとんど生じない。すると、位置P1~P3の各々におけるマーカM1の位置姿勢の推定結果には、誤差の異方性を示す誤差楕円EE11~EE13が存在する。そこで、複数の異なる方向からの観測結果によるグラフ構造を作成し、最適化することで、誤差楕円EE11~EE13の交点IS1を解として求めることができる。また同様に、マーカM2においても誤差楕円EE21~EE23の交点IS2を解として求めることができる。よって、マーカの位置および姿勢の誤差を補正できる。そして後述するように、マーカM1およびM2の間には位置および姿勢に関する強い制約(高い確からしさ)が存在するため、奥行き方向の位置、および、マーカ基準座標MC1およびMC2のヨー角姿勢を正確に推定することが可能となる。
【0037】
S110において、アクセス位置推定部15は、マーカノードの補正された位置および姿勢から、フォーク22を差し込むアクセス位置を推定する。具体的には、パレット基準座標PCの原点および座標姿勢を推定する。
図3で説明したように、マーカM1およびM2とパレット基準座標PCとの相対位置関係は既知であるため、パレット基準座標PCの原点および座標姿勢は容易に算出できる。そしてアクセス位置推定部15は、推定したアクセス位置を、軌道生成部16および荷役装置制御部18へ出力する。
【0038】
S120において、位置姿勢推定処理を終了するか否かが判断される。具体的には、後述する荷役処理のS280でパレット50をすくう処理が完了しているか否かによって、S120で位置姿勢推定処理を終了するか否かが判断される。否定判断される場合(S120:NO)にはS10へ戻る。そしてグラフ最適化処理を実行することが再度判断されると(S35:YES)、時刻ti+2における車体ノードVN3およびセンサノードSN3がグラフ構造データに新たに追加される。また、センサノードSN3とマーカノードMN1およびMN2との間のアークAC3、車体ノードVN3とセンサノードSN3との間のアークAVC3、車体ノードVN2とVN3との間のアークAVN23、がグラフ構造データに新たに追加される。そして、S100でグラフ構造データが再度最適化され、S110でマーカノードの位置姿勢が再度補正される。一方、肯定判断される場合(S120:YES)には、位置姿勢推定処理を終了する。
【0039】
(荷役処理の内容)
図7を用いて荷役処理を説明する。S210において車両制御モジュールMOD2は、荷役処理を開始するか否かを判断する。例えば、ユーザによる荷役開始操作の入力の有無に応じて判断してもよい。否定判断される場合(S210:NO)にはS210へ戻り待機し、肯定判断される場合(S210:YES)にはS220へ進む。
【0040】
S220において軌道生成部16は、目標位置を取得する。目標位置の取得は、前述した位置姿勢推定処理(
図6)のS110でフォーク22のアクセス位置の1回目の推定が行われたことに応じて、実行することができる。目標位置は、フォーク22のアクセス位置より30cmほど手前に設定してもよい。S230において、軌道生成部16は、S110で算出されたパレット基準座標PCの原点および座標姿勢に基づいて、車体2の現在位置から対象物までの軌道および速度パターンを生成する。S240において移動制御部17は、生成した軌道および速度パターンに基づいて、目標位置に向けて車体2を移動させる。
【0041】
S250において移動制御部17は、目標位置に到達したか否かを判断する。否定判断される場合(S250:NO)にはS240へ戻りさらに車体2を移動させ、肯定判断される場合(S250:YES)にはS260へ進む。ここで、荷役処理(
図7)と並列動作している位置姿勢推定処理(
図6)では、車体2が移動することに従って、グラフ構造の追加(S40~S70)、グラフ構造の最適化(S100)およびアクセス位置の推定(S110)が繰り返し実行される。すなわち、車体2の移動中に、フォーク22から見た目標位置が更新される。そして、随時更新された目標位置に向かって車体2を移動させることができる。よって、パレット50への近接動作を正確に行うことが可能となる。
【0042】
S260において荷役装置制御部18は、不図示の荷役アクチュエータを介してフォーク22の位置を調整する。具体的には、リフト機構でフォーク22の高さを調整し、サイドシフト機構でフォーク22の横位置を調整する。S270において荷役装置制御部18は、算出されたパレット基準座標PCの原点および座標姿勢に基づいて、フォーク22をアクセス位置に差し込む。具体的には、パレット50の奥行を考慮して、車体2を直進させる。S280において、荷役装置制御部18は、パレット50をすくう。具体的には、チルト機構によってフォーク22を傾けるとともにマスト20によってフォーク22を上昇させる。
【0043】
S290において、荷降ろし動作および待機位置への復帰動作を行う。これらの動作は自動で行ってもよいし、オペレータが操作してもよい。これらの動作は従来技術で実現できるため、説明は省略する。
【0044】
(効果)
パレットや荷台などの対象物に貼り付けられたマーカを、正対したカメラで遠方から撮像して対象物の位置や姿勢を認識する技術では、一般的に、対象物の奥行方向の位置や、マーカの法線ベクトルによって推測されるヨー方向やピッチ方向の回転姿勢を正確に求めることが困難なため、フォークをパレットに差し込む際に意図しない衝突等が発生してしまう場合がある。本明細書の技術では、複数のセンサノードと、マーカノードと、複数のアークと、を備えるグラフ構造データを生成し、生成したグラフ構造データを最適化する。複数のセンサノードは、異なる時刻の複数の移動点のそれぞれにおけるカメラ30の位置および姿勢を示す情報である。マーカノードは、異なる時刻の複数の移動点のそれぞれで推定されたマーカM1およびM2の位置および姿勢を表す情報である。従って、異なる時刻の複数の移動点の各々において推定された、マーカM1およびM2の位置および姿勢の複数の推定結果を用いて、マーカM1およびM2の位置および姿勢の推定値を補正することができる。換言すると、マーカを用いて推定した対象物の奥行方向の情報と、複数の移動点の移動量の累積によって求めた車体2の位置(オドメトリ)の奥行方向の情報とを、グラフ構造を用いることで関連付けることができる。そして、対象物の奥行方向の情報の精度不足分を、オドメトリの奥行方向の情報を用いることで補完することができる。以上より、ある1つの移動点で推定したマーカM1およびM2の位置および姿勢の推定結果を用いる場合と比して、マーカM1およびM2の位置および姿勢をより正確に推定することが可能となる。
【0045】
本明細書の技術では、カメラ、車体、マーカの相対位置関係を、グラフ構造データを用いて表現している。そして、マーカM1とM2との間の相対的位置関係は、既知であり、高精度に位置決めされている。換言すると、マーカ間のアークAMの「確からしさ」は高い。よって、最適化によって修正する必要のあるアークを、センサノードとマーカ間のアークACに絞ることが可能となる。全てのアークの「確からしさ」が低い場合に比して、マーカM1およびM2の位置および姿勢をより正確に推定することが可能となる。
【0046】
車体2が時刻tiの移動点から時刻ti+1の移動点まで移動した場合に、グラフ構造データ生成部13は、時刻ti+1の移動点におけるセンサノードおよびマーカノードと、時刻ti+1の移動点におけるセンサノードとマーカノードとの相対的位置関係を規定するアークと、を生成する(S40~S70)。そして、生成した時刻ti+1の移動点におけるセンサノード、マーカノードおよびアークを、時刻tiまでの移動点について生成されたグラフ構造データに、新たに追加することができる(S80)。すなわち本実施例に係るフォークリフト1は、グラフ構造データを走行中に更新することが可能である。
【0047】
図3に示すように、マーカM1およびM2は、予め定められた第1所定距離D1だけ互いに離れて、水平方向に配置されている。すなわち、ヨー方向の回転軸(
図3のz軸)に対して直交する方向に、マーカM1およびM2を配置している。これにより、パレット50の奥行方向の3次元的な姿勢である、ヨー方向の回転姿勢の推定精度を高くすることができる。換言すると、2つのマーカM1およびM2の各々のヨー方向の計測精度は低い。例えばマーカ正面から観測した場合の計測精度が、数度の角度の独立したばらつきを持つ場合がある。一方、位置(特に横方向や上下方向)の計測精度は、ヨー方向の計測精度に比して高い。そして
図3で説明したように、二つのマーカ間の第1所定距離D1は正確に規定されている。また、マーカ基準座標MC1およびMC2の法線方向(
図3のx軸負方向)は、二つのマーカを結んだ方向(
図3のy軸方向)に対して直交するように正確に位置決めされている。この事前知識を元にグラフ構造の最適化を行うことにより、マーカのヨー角姿勢の推定精度を高めることができる。
【実施例2】
【0048】
実施例2は、マーカ群を備えたパレットが複数存在する場合における、自動荷役の処理例である。パレットが複数存在する点以外は、実施例1と処理内容は共通する。以下に、実施例1と異なる点のみを説明する。例として、
図10に示すように、パレット50に加えてパレット50aが配置されている場合について説明する。パレット50aは、マーカM1aおよびM2aを備えている。マーカM1aおよびM2aの内容や位置関係は、パレット50のマーカM1およびM2と同様である。また、
図10の位置関係に基づいて、
図11のグラフ構造データが生成される場合について説明する。
【0049】
図10の時刻t
iにおける位置P1において、カメラ30によって、パレット50および50aが撮像される(
図6のS10)。マーカ群位置姿勢推定部11は、マーカM1、M2、M1a、M2aの位置および姿勢を推定する(S20)。グラフ構造データ生成部13は、
図11に示すように、マーカノードMN1およびMN2に加えて、マーカノードMN1aおよびMN2aを設定する(S60)。またアークAC1、アークAVC1、アークAVN12、アークAMに加えて、アークAC1aを設定する(S70)。以後の処理は、実施例1と同様であるため、説明を省略する。
【0050】
以上より、
図11に示すように、複数のパレットについてグラフ構造データを生成することができる。そして、複数のパレットについてのグラフ構造データを最適化(S100)することができる。複数のパレットの各々に配置されているマーカの位置および姿勢を、同時にまとめて補正することが可能となる。
【実施例3】
【0051】
実施例3は、パレットに加えて、柱や壁など既知の固定物にもマーカを配置した、自動荷役の処理例である。固定物にもマーカが配置されている点以外は、実施例1と処理内容は共通する。以下に、実施例1と異なる点のみを説明する。例として、
図12に示すように、パレット50に加えて柱PL1~PL4が配置されている場合について説明する。柱PL1~PL4は、マーカMP1~MP4を備えている。また、時刻t
iにおける位置P11から時刻t
i+3における位置P14へ、車体2が走行する場合の処理内容を説明する。また、
図12の位置関係に基づいて、
図13のグラフ構造データが生成される場合について説明する。
図13では、柱PL1~PL4の各々に対応して、柱ノードPN1~PN4が配置されている。
【0052】
グラフ構造データ生成部13は、
図13に示すように、柱ノードPN1~PN4の間にアークAP1~AP5を設定する。センサノードSN11と柱ノードPN1およびPN2との間に、アークAC11を設定する。センサノードSN12と柱ノードPN3との間に、アークAC12を設定する。センサノードSN13と柱ノードPN4との間に、アークAC13を設定する。センサノードSN14とマーカノードMN1およびMN2との間に、アークAC14を設定する。
【0053】
以上より
図13に示すように、柱PL1~PL4についてもグラフ構造データを生成することができる。そして、生成したグラフ構造データを最適化(S100)することができる。柱PL1~PL4は、その相対位置や姿勢は既知であるため、柱ノードPN1~PN4の間に設定されたアークAP1~AP5は、「確からしさ」が高い。「確からしさ」が高いアークAP1~AP5をグラフ構造データに含めることができるため、アークAP1~AP5を含まない場合に比して、グラフ構造データに含まれる誤差の総和を小さくすることができる。より正確にマーカノードMN1およびMN2の位置および姿勢を補正することが可能となる。
【0054】
以上、本明細書が開示する技術の実施例について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【0055】
(変形例)
本実施形態では、マーカの位置および姿勢を認識する移動体としてフォークリフトを説明したが、この形態に限られない。マーカの位置・姿勢情報を利用して移動可能な移動体であれば、本明細書の技術を適用可能である。移動体の他の例としては、移動ロボット、モバイルマニュピレータ、ドローンなどが挙げられる。
【0056】
車体(移動体)ノードを含まないグラフ構造データを用いてもよい。この場合、例えば
図5のグラフ構造データの例では、車体ノードVN1およびVN2、アークAVC1およびAVC2、アークAVN12を省略することができる。例えば手持ちカメラのように、カメラの位置姿勢の情報がない場合においても、複数の異なる方向からの観測結果と誤差モデルに対してGraph-Based SLAMを適用することより、マーカ位置を高精度に推定することができる。この原理は、
図8で説明済みである。これにより、車体2の移動前においてパレット誘導用の軌道および速度パターンを生成する段階(S230)で、軌道の精度を向上させる効果を得ることができる。なお、グラフ構造の最適化では、必ずしも観測時のカメラ位置の初期値は必要ない。カメラノードの位置は、グラフ構造の最適化の結果、求めることができる。
【0057】
本実施例では、異なる時刻の複数の移動点における複数のセンサノードを備えるグラフ構造データを生成する場合を説明したが、この形態に限られない。例えば
図9に示すように、1の時刻の1つの移動点における1つのセンサノードを備えるグラフ構造を用いても、マーカM1およびM2の位置および姿勢を推定することが可能である。
【0058】
図3において、複数のマーカが同一面内に水平方向に配置されている場合を説明したが、この形態に限られない。パレット基準座標PCの原点とマーカ基準座標の原点との相対位置が一意に決まる態様であれば、複数のマーカが異なる面内に配置されていてもよいし、複数のマーカが水平方向に配置されていなくてもよい。
【0059】
図3において、第1所定距離D1離れて水平方向に配置されているマーカM1およびM2に加えて、マーカM1およびM2よりも上方側(z軸正方向側)または下方側(z軸負方向側)に、さらに1つ以上のマーカを備えてもよい。これにより、ピッチ方向の回転軸(
図3のy軸)に対して直交する方向に、追加のマーカを配置することができる。パレット50の奥行方向の3次元的な姿勢である、ピッチ方向の回転姿勢の推定精度を高くすることができる。
【0060】
パレットに取り付けるマーカ数が2個である場合を説明したが、この形態に限られない。マーカ間にアークを配置できればよいため、マーカは複数枚であればよい。
【0061】
図3では、パレット50の正面のみにマーカを配置する形態を説明したが、この形態に限られない。パレット50の正面に対して斜め方向からカメラ30がパレット50を撮像する場合に備えて、パレット50の側面にもマーカを配置してもよい。
【0062】
マーカをパレットに配置する方法は、マーカ間の相対位置が一意に決まるのであれば、様々であってよい。テープでの貼付、接着、ねじ式、磁石式、ピン止めなどの態様でもよい。レーザー印刷、ホットスタンプ印刷、スクリーン印刷などによって、パレットにマーカを直接印刷してもよい。透明なポケットにマーカが差し込まれているマーカ取り付け部を、パレットに固定する態様でもよい。
【0063】
本実施例ではマーカとしてARマーカを用いる態様を説明したが、この形態に限られない。マーカの位置および姿勢が求まるのであれば、どのようなマーカを用いてもよい。例えば、不可視マーカを用いてもよい。
【0064】
カメラ30は単眼カメラに限らず、ステレオカメラや不可視マーカ用カメラでもよい。
【0065】
カメラ30は、フォーク22と一体化していれば、その取り付け方は自由である。例えば
図1において、ツメ22aと22bの間であって、フォーク22のバックレスト面より奥側(車体2側)に配置されていてもよい。
【0066】
パレット50がカゴパレットである場合を説明したが、平パレットなど他の形状のパレットでもよい。
【0067】
本実施例では、S30において車体位置姿勢算出部12はエンコーダ40で車体2移動量を求めているが、この形態に限られない。2次元レーザセンサ等を使ったレーザーオドメトリを用いてもよい。
【0068】
制御部10はフォークリフト1に搭載される形態に限られない。例えば、インターネットなどのネットワーク上に配置されたサーバであってもよい。
【0069】
本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【0070】
カメラ30は、光学センサの一例である。グラフ最適化部14は、補正部の一例である。フォーク22は、支持構造部の一例である。
【符号の説明】
【0071】
1:フォークリフト 11:マーカ群位置姿勢推定部 12:車体位置姿勢算出部 13:グラフ構造データ生成部 14:グラフ最適化部 15:アクセス位置推定部 16:軌道生成部 17:移動制御部 18:荷役装置制御部 19:グラフ構造記憶部 22:フォーク 30:カメラ