(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022134905
(43)【公開日】2022-09-15
(54)【発明の名称】ビークルの経路生成方法、ビークルの経路生成装置、ビークル及びプログラム
(51)【国際特許分類】
G05D 1/02 20200101AFI20220908BHJP
G05B 13/02 20060101ALI20220908BHJP
【FI】
G05D1/02 H
G05B13/02 J
【審査請求】有
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2021034388
(22)【出願日】2021-03-04
(71)【出願人】
【識別番号】000006208
【氏名又は名称】三菱重工業株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】高木 一茂
(72)【発明者】
【氏名】藤島 泰郎
(72)【発明者】
【氏名】荒木 亮次
(72)【発明者】
【氏名】▲高▼尾 健司
【テーマコード(参考)】
5H004
5H301
【Fターム(参考)】
5H004GA29
5H004GB11
5H004HA07
5H004HB07
5H004KC02
5H004KC10
5H301AA01
5H301AA10
5H301BB05
5H301BB07
5H301CC03
5H301CC06
5H301CC10
5H301DD07
5H301DD17
5H301GG07
5H301GG08
5H301GG09
5H301GG17
5H301LL01
5H301LL02
5H301LL06
(57)【要約】
【課題】障害物を回避可能な経路を適切に設定する。
【解決手段】ビークルの経路生成方法は、ビークルの位置の情報を取得するステップと、ビークルの目的位置の情報を取得するステップと、障害物の位置の情報を取得するステップと、ビークルの位置、ビークルの大きさ、及び障害物の位置に基づき、先読みステップ毎のビークルが障害物に干渉しない旨の制約条件を設定するステップと、先読みステップ毎のビークルの位置と目的位置との偏差が小さくなるほど評価が高くなる評価関数と、制約条件とに基づき最適化計算を行い、ビークルの移動経路を算出するステップと、を含む。
【選択図】
図6
【特許請求の範囲】
【請求項1】
ビークルの位置の情報を取得するステップと、
前記ビークルの目的位置の情報を取得するステップと、
障害物の位置の情報を取得するステップと、
前記ビークルの位置、前記ビークルの大きさ、及び前記障害物の位置に基づき、先読みステップ毎の前記ビークルが前記障害物に干渉しない旨の制約条件を設定するステップと、
前記先読みステップ毎の前記ビークルの位置と前記目的位置との偏差が小さくなるほど評価が高くなる評価関数と、前記制約条件とに基づき最適化計算を行い、前記ビークルの移動経路を算出するステップと、
を含む、ビークルの経路生成方法。
【請求項2】
前記制約条件を設定するステップにおいては、前記ビークルの大きさに基づき、前記先読みステップでの前記ビークルの位置を含む領域であるビークル領域を設定し、前記障害物の位置が、前記先読みステップ毎の前記ビークル領域の範囲外となることを、前記制約条件として設定する、請求項1に記載のビークルの経路生成方法。
【請求項3】
前記制約条件を設定するステップにおいては、前記障害物の移動量にも基づき、前記ビークル領域を設定する、請求項2に記載のビークルの経路生成方法。
【請求項4】
前記制約条件を設定するステップにおいては、前記障害物の大きさにも基づき、前記ビークル領域を設定する、請求項2又は請求項3に記載のビークルの経路生成方法。
【請求項5】
前記制約条件を設定するステップにおいては、前記ビークルの駆動条件が所定範囲となることも、前記制約条件として設定する、請求項1から請求項4のいずれか1項に記載のビークルの経路生成方法。
【請求項6】
前記制約条件を設定するステップにおいては、前記先読みステップでの前記ビークルの位置が所定範囲となることも、前記制約条件として設定する、請求項1から請求項5のいずれか1項に記載のビークルの経路生成方法。
【請求項7】
前記ビークルの移動経路に基づき、前記ビークルの駆動条件を算出するステップを更に含む、請求項1から請求項6のいずれか1項に記載のビークルの経路生成方法。
【請求項8】
前記ビークルの駆動条件を、前記ビークルの速度及び操舵角とする、請求項7に記載のビークルの経路生成方法。
【請求項9】
前記ビークルの駆動条件を、前記ビークルの速度及び旋回曲率とする、請求項7に記載のビークルの経路生成方法。
【請求項10】
設定された前記ビークルの駆動条件に基づき前記ビークルを制御するステップを含む、請求項7から請求項9のいずれか1項に記載のビークルの経路生成方法。
【請求項11】
ビークルの位置の情報を取得する自己位置情報取得部と、
前記ビークルの目的位置の情報を取得する目的位置情報取得部と、
障害物の位置の情報を取得する障害物情報取得部と、
計算実行部と、
を含み、
前記計算実行部は、
前記ビークルの位置、前記ビークルの大きさ、及び前記障害物の位置に基づき、先読みステップ毎の前記ビークルが前記障害物に干渉しない旨の制約条件を設定し、
前記先読みステップ毎の前記ビークルの位置と前記目的位置との偏差が小さくなるほど評価が高くなる評価関数と、前記制約条件とに基づき最適化計算を行い、前記ビークルの移動経路を算出する、
ビークルの経路生成装置。
【請求項12】
請求項11に記載のビークルの経路生成装置を含む、ビークル。
【請求項13】
ビークルの位置の情報を取得するステップと、
前記ビークルの目的位置の情報を取得するステップと、
障害物の位置の情報を取得するステップと、
前記ビークルの位置、前記ビークルの大きさ、及び前記障害物の位置に基づき、先読みステップ毎の前記ビークルが前記障害物に干渉しない旨の制約条件を設定するステップと、
前記先読みステップ毎の前記ビークルの位置と前記目的位置との偏差が小さくなるほど評価が高くなる評価関数と、前記制約条件とに基づき最適化計算を行い、前記ビークルの移動経路を算出するステップと、
を、コンピュータに実行させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ビークルの経路生成方法、ビークルの経路生成装置、ビークル及びプログラムに関する。
【背景技術】
【0002】
ビークルを目的位置まで移動させるためには、ビークルの移動経路が設定される。このようなビークルは、障害物を回避しつつ目的位置まで到達することが求められる。例えば特許文献1には、移動する障害物を回避するように、経路を生成する旨が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、障害物を回避しつつ目的位置まで到達するための経路設定には、改善の余地があり、障害物を回避可能な経路を適切に設定することが求められている。
【0005】
本開示は、上述した課題を解決するものであり、障害物を回避可能な経路を適切に設定可能な、ビークルの経路生成方法、ビークルの経路生成装置、ビークル及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上述した課題を解決し、目的を達成するために、本開示に係るビークルの経路生成方法は、ビークルの位置の情報を取得するステップと、前記ビークルの目的位置の情報を取得するステップと、障害物の位置の情報を取得するステップと、前記ビークルの位置、前記ビークルの大きさ、及び前記障害物の位置に基づき、先読みステップ毎の前記ビークルが前記障害物に干渉しない旨の制約条件を設定するステップと、前記先読みステップ毎の前記ビークルの位置と前記目的位置との偏差が小さくなるほど評価が高くなる評価関数と、前記制約条件とに基づき最適化計算を行い、前記ビークルの移動経路を算出するステップと、を含む。
【0007】
上述した課題を解決し、目的を達成するために、本開示に係るビークルの経路生成装置は、ビークルの位置の情報を取得する自己位置情報取得部と、前記ビークルの目的位置の情報を取得する目的位置情報取得部と、障害物の位置の情報を取得する障害物情報取得部と、計算実行部と、を含み、前記計算実行部は、前記ビークルの位置、前記ビークルの大きさ、及び前記障害物の位置に基づき、先読みステップ毎の前記ビークルが前記障害物に干渉しない旨の制約条件を設定し、前記先読みステップ毎の前記ビークルの位置と前記目的位置との偏差が小さくなるほど評価が高くなる評価関数と、前記制約条件とに基づき最適化計算を行い、前記ビークルの移動経路を算出する。
【0008】
上述した課題を解決し、目的を達成するために、本開示に係るビークルは、前記ビークルの経路生成装置を含む。
【0009】
上述した課題を解決し、目的を達成するために、本開示に係るプログラムは、ビークルの位置の情報を取得するステップと、前記ビークルの目的位置の情報を取得するステップと、障害物の位置の情報を取得するステップと、前記ビークルの位置、前記ビークルの大きさ、及び前記障害物の位置に基づき、先読みステップ毎の前記ビークルが前記障害物に干渉しない旨の制約条件を設定するステップと、前記先読みステップ毎の前記ビークルの位置と前記目的位置との偏差が小さくなるほど評価が高くなる評価関数と、前記制約条件とに基づき最適化計算を行い、前記ビークルの移動経路を算出するステップと、を、コンピュータに実行させる。
【発明の効果】
【0010】
本開示によれば、障害物を回避可能な経路を適切に設定できる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、第1実施形態に係るビークル制御システムの模式図である。
【
図2】
図2は、管理システムの模式的なブロック図である。
【
図3】
図3は、第1実施形態に係るビークルの模式的なブロック図である。
【
図4】
図4は、第1実施形態に係る制御部の模式的なブロック図である。
【
図5】
図5は、制約条件を説明するための模式図である。
【
図6】
図6は、本実施形態に係る制御装置の処理フローを説明するフローチャートである。
【
図7】
図7は、制約条件の他の例を説明するための模式図である。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、本発明の好適な実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではなく、また、実施形態が複数ある場合には、各実施形態を組み合わせて構成するものも含むものである。
【0013】
(第1実施形態)
(制御システム)
図1は、第1実施形態に係るビークル制御システムの模式図である。
図1に示すように、第1実施形態に係る制御システム1は、ビークル10と管理システム12とを含む。ビークル10は、自動で移動可能な移動体であるが、それに限られず、運転者が操作する有人の移動体であってもよい。ビークル10は、地面を走行する移動体としてもよいし、空中を飛行する移動体としてもよいし、水中を移動する移動体としてもよい。したがって、ビークル10は、3次元で移動できる移動体も含むが、以下では説明のため、2次元平面を移動する場合として説明する。2次元平面を移動するビークル10としては、例えば、AGF(Automated Guided Forklift)やAGV(Automated Guided Vehicle)などが挙げられるが、ビークル10の種類は任意であってよい。以下、ビークル10が移動可能な領域、すなわちビークル10が移動を予定している領域を、領域ARとする。領域ARは、本実施形態では2次元平面であり、水平方向に沿った一方向を、X方向とし、水平方向に沿った方向であってX方向と直交する方向を、Y方向とする。なお、領域ARは、3次元空間であってもよい。
【0014】
本実施形態においては、ビークル10は、移動経路Rに沿って移動する。移動経路Rは、領域ARに存在する障害物Oを回避しつつ目的位置Pに向かうように、設定される。障害物Oは、ビークル10が回避する対象となる対象物である。障害物Oは、本実施形態では、位置が変化する可能性がある任意の対象物や、あるタイミングでは存在するが別のタイミングでは存在しなくなる可能性がある任意の対象物であってよい。言い換えれば、本実施形態の障害物Oは、永続的に位置が固定されて位置が既知の構造物ではないといえる。なお、障害物Oは、無生物であることに限られず、例えば人などの生物であってもよい。移動経路Rの設定方法については後述する。
【0015】
(管理システム)
管理システム12は、ビークル10を管理するシステムであり、本実施形態では、ビークル10の目的位置Pを設定する。管理システム12は、本実施形態ではWMS(Warehouse Management System)であるが、WMSに限られず任意のシステムであってよく、例えばいわゆる地上システムであってもよい。
【0016】
図2は、管理システムの模式的なブロック図である。管理システム12は、コンピュータであり、
図2に示すように、通信部20と、記憶部22と、制御部24とを含む。通信部20は、ビークル10などの外部の装置と通信を行う通信モジュールであり、例えばアンテナなどである。管理システム12は、無線通信で通信を行うが、通信方式は任意であってよい。記憶部22は、制御部24の演算内容やプログラムなどの各種情報を記憶するメモリであり、例えば、RAM(Random Access Memory)と、ROM(Read Only Memory)のような主記憶装置と、HDD(Hard Disk Drive)などの外部記憶装置とのうち、少なくとも1つ含む。記憶部22が記憶する制御部24用のプログラムは、管理システム12が読み取り可能な記録媒体に記憶されていてもよい。
【0017】
制御部24は、演算装置であり、例えばCPU(Central Processing Unit)などの演算回路を含む。制御部24は、目的位置情報取得部26を含む。制御部24は、記憶部22からプログラム(ソフトウェア)を読み出して実行することで、目的位置情報取得部26を実現して、その処理を実行する。なお、制御部24は、1つのCPUによってこの処理を実行してもよいし、複数のCPUを備えて、それらの複数のCPUで、処理を実行してもよい。また、目的位置情報取得部26を、ハードウェア回路で実現してもよい。
【0018】
目的位置情報取得部26は、ビークル10の目的位置Pの位置情報を取得する。目的位置情報取得部26は、例えばビークル10が実行する作業内容を設定し、作業内容に応じて目的位置Pを設定する。ただし、目的位置情報取得部26による目的位置Pの位置情報の取得方法は任意であり、例えばユーザにより指定されてもよい。目的位置情報取得部26は、ビークル10の目的位置Pの位置情報を、通信部20を介して、そのビークル10に送信する。
【0019】
なお、管理システム12は必須の構成でなく、例えば、ビークル10が目的位置Pを設定してもよい。
【0020】
(ビークル)
図3は、第1実施形態に係るビークルの模式的なブロック図である。
図3に示すように、ビークル10は、制御装置30と、通信部32と、自己位置検出部34と、障害物検出部36と、動力部38とを有する。
【0021】
(通信部)
通信部32は、外部の装置と通信を行う通信モジュールであり、例えばアンテナなどである。ビークル10は、無線通信で通信を行うが、通信方式は任意であってよい。本実施形態では、ビークル10は、通信部32を介して管理システム12と通信して、情報の送受信を行う。
【0022】
(自己位置検出部)
自己位置検出部34は、ビークル10の位置及び姿勢、すなわち自己位置及び自己姿勢を検出する装置である。ビークル10の位置とは、本実施形態においては、領域AR内においてビークル10が位置している座標を指す。ビークル10の姿勢とは、ビークル10が向いている方向を指し、本実施形態では、方向X及び方向Yに直交する方向から見た場合のビークル10の向き(回転角度)を指す。以降においても、特に断りがない限り、「位置」及び「姿勢」は、同様の意味を指す。自己位置検出部34は、任意の方法で位置及び姿勢を検出してよいが、例えば、自己位置検出部34の具体的構成例として、グローバル・ポジショニング・システム(GPS:Global Positioning System)等の測位システムを利用して位置を検出するための測位装置が挙げられる。また例えば、自己位置検出部34は、所定の起点に対する位置を検出する慣性航法装置であってもよい。また例えば、自己位置検出部34は、レーザ光により位置及び姿勢を検出するものであってもよい。この場合例えば、領域ARに反射体が設けられており、自己位置検出部34が反射体に向けてレーザ光を照射し、反射体から反射したレーザ光を検出することで、位置及び姿勢が検出できる。
【0023】
(障害物検出部)
障害物検出部36は、障害物Oの位置及び姿勢を検出するセンサである。障害物検出部36は、障害物Oの位置及び姿勢を検出可能であれば任意のセンサであってよく、例えば、2D-LiDAR(Light Detection And Ranging)、3D-LiDAR、カメラなどであってよい。
【0024】
(動力部)
動力部38は、ビークル10を移動させる動力として機能する。動力部38の具体的構成は、ビークル10の運用形態に応じる。一例として、ビークル10が地上を走行するビークルである場合、動力部38は、複数の車輪と、当該複数の車輪の一部又は全部を駆動する原動機を含む。ここに例示した動力部38の具体的構成はあくまで一例であってこれに限られるものでない。動力部38は、ビークル10を移動可能にする動力として機能すればよい。
【0025】
(制御装置)
制御装置30は、ビークル10の動作を制御する装置である。制御装置30は、コンピュータであり、制御部40と記憶部42とを備える。記憶部42は、制御部40の演算内容やプログラムなどの各種情報を記憶するメモリであり、例えば、RAMと、ROMのような主記憶装置と、HDDなどの外部記憶装置とのうち、少なくとも1つ含む。記憶部42が記憶する制御部40用のプログラムは、制御装置30が読み取り可能な記録媒体に記憶されていてもよい。
【0026】
図4は、第1実施形態に係る制御部の模式的なブロック図である。制御部40は、演算装置であり、例えばCPUなどの演算回路を含む。
図4に示すように、制御部40は、目的位置情報取得部50と、自己位置情報取得部52と、障害物情報取得部54と、計算実行部56と、駆動制御部58とを含む。制御部40は、記憶部42からプログラム(ソフトウェア)を読み出して実行することで、目的位置情報取得部50と自己位置情報取得部52と障害物情報取得部54と計算実行部56と駆動制御部58とを実現して、それらの処理を実行する。なお、制御部40は、1つのCPUによってこれらの処理を実行してもよいし、複数のCPUを備えて、それらの複数のCPUで、これらの処理を実行してもよい。また、目的位置情報取得部50と自己位置情報取得部52と障害物情報取得部54と計算実行部56と駆動制御部58との少なくとも一部を、ハードウェア回路で実現してもよい。
【0027】
(目的位置情報取得部)
目的位置情報取得部50は、ビークル10の目標とする移動先である目的位置Pの位置情報を取得する。目的位置情報取得部50は、通信部32を介して、管理システム12から、目的位置Pの位置情報を取得する。ただし、目的位置情報取得部50は、管理システム12から目的位置Pの位置情報を取得することに限られず、自身で目的位置Pを設定してもよい。
【0028】
(自己位置情報取得部)
自己位置情報取得部52は、ビークル10自身の位置及び姿勢の情報を取得する。自己位置情報取得部52は、自己位置検出部34を制御して、ビークル10自身の位置情報(座標情報)及び姿勢情報(向きを示す情報)を取得する。以下、位置情報及び姿勢情報を合わせて、適宜、位置姿勢情報と記載する。自己位置情報取得部52は、所定時間毎に、逐次、ビークル10の位置姿勢情報を取得する。ただし、自己位置情報取得部52は、自身でビークル10の位置及び姿勢を検出することに限られず、例えば、管理システム12などの外部の装置がビークル10の位置及び姿勢を検出し、自己位置情報取得部52が、その検出結果をビークル10の位置姿勢情報として取得してもよい。
【0029】
(障害物情報取得部)
障害物情報取得部54は、障害物Oの位置の情報を取得する。障害物情報取得部54は、障害物検出部36を制御して、障害物Oの位置情報を取得する。障害物情報取得部54は、所定時間毎に、逐次、障害物Oの位置情報を取得する。ただし、障害物情報取得部54は、自身で障害物Oの位置を検出することに限られず、例えば、管理システム12などの外部の装置が障害物Oの位置を検出し、障害物情報取得部54が、その検出結果を障害物Oの位置姿勢情報として取得してもよい。なお、障害物情報取得部54は、障害物Oの位置に加えて、障害物Oの姿勢も取得してよい。
【0030】
(計算実行部)
計算実行部56は、最適化計算を実行して、最適化されたビークル10の移動経路Rを実現できるビークル10の駆動条件を算出する。駆動条件とは、ビークル10の動力部38を動作させるための入力値を指す。本実施形態では、計算実行部56は、最適化計算の実行のために、先読みステップ毎のビークル10の位置が障害物Oに干渉しない旨の制約条件を設定する。先読みステップとは、現在(障害物Oの位置やビークル10の位置及び姿勢が直近で検出されたタイミング)以降の、離散化した各時刻を意味する。そして、計算実行部56は、先読みステップ毎のビークル10の位置と目的位置Pとの偏差が小さくなるほど評価が高くなる評価関数と、制約条件とに基づき、最適化計算を行い、最適化計算で最適化されたビークル10の移動経路Rを実現できるビークルの駆動条件を、算出する。以下、計算実行部56による最適化計算を具体的に説明する。なお、以降では、X方向及びY方向の二次元座標平面上でのビークル10の運動を例として説明するが、三次元座標上での運動モデルに対しても適用可能である。
【0031】
(先読みステップ毎のビークルの位置)
ここで、計算実行部56によって算出される最適化された移動経路Rは、先読みステップ毎の(現在以降の離散時刻毎の)ビークル10の位置及び姿勢の集合といえ、未来の経路であるといえる。ビークル10のX方向及びY方向での位置(座標)を[x,y]T、ビークル10の姿勢をθ、先読みステップ(離散時刻)をkとすると、先読みステップkでのビークル10の位置及び姿勢は、すなわち先読みステップkでの移動経路Rは、次の式(1)で表される。なお、Tは転置を示す。なお、上述のように、本実施形態の説明は、二次元平面座標上での運動を例としたものであり、例えば三次元座標上での運動モデルとする場合には、以降の式などは三次元座標に合わせたものとなる。
【0032】
【0033】
この場合、ビークル10の運動モデルは、次の式(2)のように表される。
【0034】
【0035】
式(2)のΔtは、(k)から(k+1)への遷移に係る時間幅である。Δtは、移動経路Rの更新周期(移動経路Rを更新してから次に移動経路Rを更新するまでの時間幅)と同じであってもよいが、例えば、更新周期よりも短くてもよいし、更新周期よりも長くてもよい。Δtを更新周期より短くすることで、詳細な移動経路Rを生成でき、Δtを更新周期より長くすることで、計算負荷を低減できる。また、u(k)は、システムの入力であり、ビークル10の駆動条件を指す。本実施形態の例では、u(k)は、ビークル10の速度v(k)、ビークル10の操舵角Φ(k)を用いて、次の式(3)のように表される。
【0036】
【0037】
二次元平面座標上での運動を想定した場合、システムの状態方程式であるfは、一例として、次の式(4)のように表される。なお、Lは、ホイールベースを指し、例えば前輪と後輪との間の距離である。
【0038】
【0039】
(制約条件)
計算実行部56は、最適化計算に用いる制約条件を設定する。計算実行部56は、ビークル10の位置、ビークル10の大きさ、及び障害物Oの位置に基づき、先読みステップ毎のビークル10が障害物Oに干渉しない旨を、制約条件として設定する。すなわち、本実施形態での制約条件は、それぞれの先読みステップにおいて、その大きさのビークル10が障害物Oに干渉しない、というものである。なお、ビークル10の大きさとは、本実施形態の例では、ビークル10の幅及び長さ(X方向及びY方向における長さ)である。ビークル10の大きさは、例えば設計情報として記憶部42などに予め記憶されており、計算実行部56は、記憶部42からビークル10の大きさの情報を読み出す。ただし、計算実行部56は、ビークル10の大きさの情報を任意の方法で取得してよい。
【0040】
図5は、制約条件を説明するための模式図である。制約条件の設定方法についてより具体的に説明する。
図5に示すように、計算実行部56は、ビークル10の大きさに基づき、先読みステップでのビークル10の位置を含む領域であるビークル領域ARを設定する。計算実行部56は、先読みステップでのビークル10の位置を、ビークル10の大きさに対応する面積分広げた領域を、ビークル領域ARとして設定する。そして、計算実行部56は、障害物Oの位置が、先読みステップ毎のビークル領域ARの範囲外となることを、制約条件として設定する。すなわち、計算実行部56は、先読みステップ毎にビークル領域ARを設定し、各先読みステップにおいて障害物Oの位置がビークル領域ARの範囲外となることを、制約条件として設定する。なお、
図5の例では、先読みステップでのビークル10の位置[x(k),y(k)]を中心とし、ビークル10のX方向の長さDxを長径としY方向の長さDyを短径とする楕円形の領域を、ビークル領域ARとして設定している。ただし、ビークル領域ARの設定方法はこれに限られず任意であり、例えばビークル領域ARを楕円形にしなくてもよい。
【0041】
本実施形態では、計算実行部56は、制約条件を設定する際に、先読みステップ毎のビークル10の位置及び姿勢を、仮に設定する。そして、計算実行部56は、ビークル10の座標系における障害物Oの位置(座標)を、先読みステップ毎に算出する。すなわち、計算実行部56は、障害物情報取得部54によって取得された、方向X及び方向Yの座標系における障害物Oの位置(座標)を、先読みステップでのビークル10の位置を座標中心とした位置(座標)に変換する。例えば、計算実行部56は、次の式(5)を用いて、ビークル10の座標系における障害物Oの位置を算出する。
【0042】
【0043】
なお、[x’ob,y’ob]が、障害物情報取得部54によって取得された方向X及び方向Yの座標系における障害物Oの位置であり、[xob(k),yob(k)]Tが、先読みステップkにおける、ビークル10の座標系における障害物Oの位置である。
【0044】
そして、計算実行部56は、制約条件として、次の式(6)を設定する。式(6)は、各先読みステップにおいて、障害物Oの位置が、楕円形のビークル領域ARの範囲外となることを示した式である。ただし、式(6)は、ビークル領域ARを楕円形とした場合の制約条件の式の一例であり、実際の制約条件の式は、ビーク領域ARの形状や大きさに応じて設定される。
【0045】
【0046】
なお、このように各先読みステップで制約条件を解くことができるのは、運動モデルをもとに、先読みステップでのビークル10の位置及び姿勢を予測計算して仮に設定しているためである。
【0047】
(最適化計算)
計算実行部56は、上記のように設定した制約条件と、先読みステップ毎のビークル10の位置と目的位置Pとの偏差が小さくなるほど評価が高くなる評価関数とに基づき、最適化計算を実行する。すなわち、計算実行部56は、モデル予測制御の考え方を用い、制約条件を満たす移動経路を予測(先読)し、各先読みステップでのビークル10と目的位置Pの関係において、距離が短いほど、評価が高くなる評価関数を用いて、ビークル10の各予測ステップの位置に関するビークル10と目的位置の偏差を評価して、移動経路Rを特定する。これにより、計算実行部56は、最適な移動経路Rを、すなわち先読みステップ毎の最適なビークル10の位置及び姿勢を、特定できる。言い換えれば、計算実行部56は、先読みステップ毎のビークル10の位置が障害物Oに干渉しない旨の制約条件を満たし、かつ、先読みステップ毎のビークル10の位置と目的位置Pとの偏差が最小となるような、先読みステップ毎の最適なビークル10の位置及び姿勢(すなわち最適な移動経路R)を、特定する。
【0048】
本実施形態では、移動経路Rを最適化する問題V(u,p,k)が、次の式(7)で表されると想定する。
【0049】
【0050】
ここで、J(u,p,k)は、最適化の目的を表す評価関数であり、経路計画であれば目的位置への接近や到達が含まれるような関数に設定される。本実施形態の例では、計算実行部56は、評価関数J(u,p,k)を、次の式(8)のように設定する。
【0051】
【0052】
ここで、pr=[x(k),y(k),θ(k)]Tは、すなわち式(8)でのxr、yr、θrは、目的となる位置及び姿勢である。また、A1、A2、A3は、重み係数であり任意に設定されてよい。この評価関数の元では、ビークル10の各先読みステップkにおける位置及び姿勢(p(k))と目的の位置及び姿勢(pr)との偏差が小さくなるように最適化される。すなわち、ビークル10が目的の位置及び姿勢に最短距離で近づくような最適化結果となる。
【0053】
以上のような最適化計算を実行することで、計算実行部56は、最適化計算のアウトプット(最適解)として、先読みステップ毎の駆動条件(システムの入力)であるu(k)の値を得る。計算実行部56が得る先読みステップ毎の駆動条件は、最適化された移動経路Rを実現するための駆動条件であるといえる。計算実行部56は、最適化計算で得られた先読みステップ毎の駆動条件に基づき、最適化された移動経路Rを算出してよい。例えば、計算実行部56は、最適化計算で得られたu(k)を式(2)に代入して、最適化された移動経路Rを算出してもよい。
【0054】
なお、最適化問題を解く手法としては、例として逐次二次計画法のような非線形最適化手法を用いてよい。ここで用いる最適化手法は、制約条件を課した最適化問題を解くことが可能である必要がある。なお、例えば式(2)や制約条件が非線形関数になる場合には、非線形最適化を用いることが好ましく、線形最適化手法は適さない可能性がある。
【0055】
(駆動制御部)
駆動制御部58は、計算実行部56が取得した駆動条件に基づき、ビークル10を制御する。駆動制御部58は、計算実行部56が取得した駆動条件で、動力部38を駆動する。これにより、駆動制御部58は、ビークル10を、最適化された移動経路Rに沿って移動させる。
【0056】
なお、以上の説明では、計算実行部56は、最適化計算を行うことで、最適化された移動経路Rを実現するための、先読みステップ毎の駆動条件をアウトプットとして算出していたが、それに限られない。例えば、計算実行部56は、最適化計算を行うことで、最適化された移動経路Rを算出してもよい。この場合、計算実行部56は、最適化された移動経路Rに基づき、先読みステップ毎の駆動条件を算出してよい。また、制御装置30の計算実行部56が移動経路Rを算出し、別の装置やプログラムが、制御装置30から移動経路Rの情報を取得して、駆動条件を算出してもよい。すなわち、制御装置30は、移動経路Rを設定する経路生成装置であると言い換えることもできる。
【0057】
(処理フロー)
次に、本実施形態の処理フローを説明する。
図6は、本実施形態に係る制御装置の処理フローを説明するフローチャートである。移動経路Rを設定する場合、制御装置30は、目的位置情報取得部50により、目的位置Pの位置情報を取得する。また、制御装置30は、自己位置情報取得部52及び障害物情報取得部54により、ビークル10の位置姿勢情報と、障害物Oの位置情報とを取得する(ステップS10)。そして、制御装置30は、計算実行部56により、ビークル10の位置姿勢情報及び目的位置Pの位置情報に基づき、先読みステップ毎の、ビークル10の位置及び姿勢を仮に設定する(ステップS12)。そして、計算実行部56は、先読みステップ毎のビークル10の位置及び姿勢と、ビークル10の大きさと、障害物Oの位置情報とに基づき、障害物Oとビークル10とが干渉しない旨の制約条件を設定し(ステップS16)、設定した制約条件と、評価関数とに基づき、最適化計算を実行する(ステップS18)。最適解が得られなかった場合には(ステップS20;No)、ステップS12に戻り、ビークル10の位置及び姿勢を設定し直し、最適解が得られるまで計算を繰り返す。最適化計算の結果、最適解が得られた場合には(ステップS20;Yes)、計算実行部56は、最適解として、最適な移動経路Rを実現できる駆動条件を取得する。駆動制御部58は、取得された駆動条件に基づき、ビークル10を制御して(ステップS24)、移動経路Rに沿ってビークル10を移動させる。そして、移動経路Rを更新する場合には(ステップS26;Yes)、すなわち例えば更新周期に達したら、ステップS10に戻り、ビークル10及び障害物Oの最新位置を取得して、それに基づき以降の処理を繰り返して移動経路Rを更新する。移動経路Rを更新しない場合であって(ステップS26;No)、処理を終了しない場合には(ステップS28;No)、ステップS24に戻り、今の移動経路Rでの移動を継続させる。処理を終了する場合には(ステップS28;Yes)、本処理を終了する。
【0058】
(効果)
このように、本実施形態においては、最適化計算を用いて移動経路Rを設定するため、障害物Oを回避するための制約条件を、式などを用いて適切に設定することが可能となり、目的位置に向かいつつ障害物Oを回避する移動経路Rを、適切に設定できる。また、本実施形態においては、ビークル10の大きさも考慮して、制約条件を設定しており、例えば障害物Oがビークル領域ARの範囲外となることを、制約条件としている。これにより、障害物Oを回避可能な経路を適切に設定することができる。さらに言えば、ビークル10の予測した位置にビークル10の大きさも反映できるため、障害物Oと重なることを禁止する占有領域(ここではビークル領域AR)を過大に設定する必要がなく、迂回経路を小さくすることもできる。また、目的との偏差を小さくする評価関数を用いることで、障害物Oを回避しつつ、最短の経路を生成することができる。なお、最適化計算に制約条件を課す方法は、上記の説明での方法に限られず、例えば、目的関数V(u,p,k)や評価関数J(u,p,k)に制約条件を組み込んでよい。また、以上の説明では、障害物Oが単数の場合を例にしたが、障害物Oを複数としてもよい。
【0059】
また、本実施形態においては、最適化計算を用いて移動経路Rを設定するため、実際のビークル10のキネマティクスを考慮することで、実現可能な移動経路Rを生成できる。例えば、非ホロノミック系で真横に移動できない運動拘束をもつ車両の場合、その運動拘束を考慮した移動経路Rを生成できる。このような運動拘束についての条件は、例えば式(2)に反映できる。
【0060】
なお、本実施形態においては、ビークル10が制御装置30を有し、ビークル10が有する制御装置30が、最適化計算などの移動経路Rの設定処理を行っていた。ただし、最適化計算などの移動経路Rの設定処理は、ビークル10が行うことに限られず、管理システム12などの外部の装置が行ってもよい。この場合、ビークル10は、最適化計算で得られた駆動条件や移動経路Rを外部の装置から取得して、取得した駆動条件や移動経路Rを用いて、ビークル10(動力部38)を制御してもよい。言い換えれば、制御装置30は、ビークル10が有していてもよいし、ビークル10以外の装置が有していてもよい。さらに言えば、目的位置情報取得部50と自己位置情報取得部52と障害物情報取得部54と計算実行部56との機能は、ビークル10が有していてもよいし、他の装置が有していてもよい。
【0061】
(制約条件の他の例)
以下、最適化計算に用いる制約条件の他の例について説明する。以降の例でも、駆動条件をアウトプットとして、移動経路Rを算出してもよいし、最適化された移動経路Rを実現可能な駆動条件を算出してもよい。
【0062】
(障害物の移動量の考慮)
例えば、計算実行部56は、障害物Oの移動量Δdにも基づき、先読みステップ毎のビークル10の位置が障害物Oに干渉しない旨の制約条件を設定してよい。ここでの移動量Δdは、障害物Pが移動すると予測される距離を指す。この場合、計算実行部56は、現在(障害物Oの位置を取得したタイミング)から先読みステップのタイミングまでの間に障害物Oが移動する移動量Δdの情報を取得し、その移動量Δdだけ障害物Oが移動した場合にも、ビークル10の位置が障害物Oに干渉しないことを、制約条件として設定する。例えば、計算実行部56は、次の式(9)を用いて、移動量Δdを算出してよい。
【0063】
【0064】
ここで、vobは、障害物Oの速度である。vobは、任意の方法で取得されてよい。例えば、vobは、予め設定されていてもよいし、計算実行部56によって検出されてもよい。計算実行部56は、vobを検出する場合は、速度計で検出した値を取得してもよいし、例えば自己位置情報取得部52が取得したタイミング毎のビークル10の位置に基づき算出してもよい。
【0065】
図7は、制約条件の他の例を説明するための模式図である。本例においては、計算実行部56は、先読みステップでのビークル10の位置を、ビークル10の大きさと移動量Δdとに対応する面積分広げた領域を、ビークル領域ARとして設定する。そして、計算実行部56は、障害物Oの位置が、先読みステップ毎のビークル領域ARの範囲外となることを、制約条件として設定する。これにより、障害物Oが移動したとしても、ビークル10に干渉することを抑制できる。
【0066】
(障害物の大きさの考慮)
例えば、計算実行部56は、障害物Oの大きさにも基づき、先読みステップ毎のビークル10の位置が障害物Oに干渉しない旨の制約条件を設定してよい。この場合、計算実行部56は、障害物Oの大きさの情報を取得し、その大きさの障害物Oに対してビークル10が干渉しないことを、制約条件として設定する。なお、障害物Oの大きさとは、本実施形態の例では、障害物Oの幅及び長さ(X方向及びY方向における長さ)である。障害物Oは、障害物Oの大きさを任意の方法で取得してよく、例えば障害物検出部36の検出結果から障害物Oの大きさを算出してもよいし、予め設定された障害物Oの大きさの情報を取得してもよい。
【0067】
本例においては、計算実行部56は、先読みステップでのビークル10の位置を、ビークル10の大きさと障害物Oの大きさとに対応する面積分広げた領域を、ビークル領域ARとして設定する。そして、計算実行部56は、障害物Oの位置が、先読みステップ毎のビークル領域ARの範囲外となることを、制約条件として設定する。これにより、障害物Oがビークル10に干渉することを、より好適に抑制できる。なお、計算実行部56は、障害物Oの移動量Δdと、障害物Oの大きさとの両方を制約条件に組み込んでよい。この場合例えば、計算実行部56は、先読みステップでのビークル10の位置を、ビークル10の大きさと障害物Oの大きさと障害物Oの移動量Δdとに対応する面積分広げた領域を、ビークル領域ARとして設定する。
【0068】
(駆動条件の考慮)
例えば、計算実行部56は、駆動条件が所定範囲となることも、制約条件として設定してよい。すなわち、計算実行部56は、移動速度や操舵角度などの、ビークル10の性能や運用条件によって決まるシステムの入力の上下限値を設定する。これにより、ビークル10が実現可能な移動経路Rを、適切に生成できる。例えば、計算実行部56は、駆動条件を所定範囲とする制約条件を、次の式(10)のように設定してよい。
【0069】
【0070】
なお、uminは駆動条件の下限値であり、umaxは駆動条件の上限値であり、ビークル10の性能や運用条件などに基づき、それぞれ任意に設定されてよい。
【0071】
また、計算実行部56は、駆動条件の単位時間当たりの変化量が所定範囲になることも、制約条件として設定してよい。すなわち、計算実行部56は、移動加速度や操舵角加速度などの、ビークル10の性能や運用条件によって決まるシステムの入力の時間変化レートの上下限値を設定して、実現可能な移動経路Rを生成する。例えば、計算実行部56は、駆動条件を所定範囲とする制約条件を、次の式(11)のように設定してよい。
【0072】
【0073】
なお、aminは駆動条件の単位時間当たりの変化量の下限値であり、amaxは駆動条件の単位時間当たりの変化量の上限値であり、ビークル10の性能や運用条件などに基づき、それぞれ任意に設定されてよい。また、例えば式(11)の{u(k+1)-u(k)/Δt}の項を、二乗した値としたり、絶対値としたりしてもよい。
【0074】
(ビークルの位置の考慮)
例えば、計算実行部56は、先読みステップでのビークル10の位置及び姿勢が所定範囲となることも、制約条件として設定してよい。すなわち、計算実行部56は、構造物など予め位置が既知の構造物がある領域など、ビークル10が進入できない領域を予め把握しておき、ビークル10が進入できる範囲内に、ビークル10が位置するように、制約条件を設定する。これにより、ビークル10が実現可能な移動経路Rを、適切に生成できる。例えば、計算実行部56は、ビークル10の位置及び姿勢を所定範囲とする制約条件を、次の式(12)のように設定してよい。
【0075】
【0076】
なお、pminはビークル10の位置及び姿勢の下限値であり、pmaxはビークル10の位置及び姿勢の上限値であり、構造物の位置などに基づき、それぞれ任意に設定されてよい。なお、ここではビークル10の位置及び姿勢が所定範囲となることを、制約条件として設定していたが、ビークル10の位置及び姿勢の両方に制約条件をかけることに限られず、ビークル10の位置と姿勢との少なくとも一方が所定範囲となることを、制約条件としてよい。
【0077】
(第2実施形態)
次に、第2実施形態について説明する。第1実施形態においては、駆動条件をビークル10の速度及び操舵角としていたが、第2実施形態においては、駆動条件をビークル10の速度及び旋回曲率とする点で、第1実施形態とは異なる。第2実施形態において、第1実施形態と構成が共通する箇所は、説明を省略する。第2実施形態でも、駆動条件をアウトプットとして、移動経路Rを算出してもよいし、最適化された移動経路Rを実現可能な駆動条件を算出してもよい。
【0078】
第2実施形態においては、計算実行部56は、駆動条件であるシステムの入力を、ビークル10の速度とビークル10の旋回曲率とする。旋回曲率とは、現在の操舵角でビークル10が移動したと仮定した場合の、ビークル10が描く円の半径(曲率半径)の逆数を指す。例えば、先読みステップkにおける旋回曲率c(k)は、次の式(13)のように定義される。
【0079】
【0080】
第1実施形態では、ビークルの速度と操舵角とを駆動条件としたため、ビークル10の運動モデルは、式(2)のように表されていたが、第2実施形態のように駆動条件をビークル10の速度と旋回曲率とした場合、ビークル10の運動モデルは、例えば次の式(14)のように表される。
【数14】
【0081】
第2実施形態においても、計算実行部56は、駆動条件をビークル10の速度と旋回曲率に変更した点以外は、第1実施形態と同様の方法で最適化計算を実施し、駆動条件の最適解を得る。ただし、第2実施形態における駆動条件の最適解は、ビークル10の速度と旋回曲率として、取得される。計算実行部56は、最適解として得られた旋回曲率を、例えば式(13)に代入して、操舵角を算出して、その操舵角を駆動条件として、ビークル10を制御してもよい。
【0082】
なお、第2実施形態のように旋回曲率を駆動条件とした場合でも、駆動条件に制約条件を設けることが可能である。この場合例えば、旋回曲率そのものに制限値を設定してもよいし、次の式(15)のように旋回曲率を操舵角に変換して制限値を設定してもよい。なお、cmaxは、旋回曲率の制限値であり、Φmaxは、操舵角の制限値である。
【0083】
【0084】
第2実施形態のように、旋回曲率を駆動条件とすることで、最適化計算において三角関数のtanΦを排除できるため、計算負荷を低減することが可能となる。
【0085】
(本開示の効果)
以上説明したように、本開示に係るビークル10の経路生成方法は、ビークル10の位置の情報を取得するステップと、ビークル10の目的位置Pの情報を取得するステップと、障害物Oの位置の情報を取得するステップと、ビークル10の位置、ビークル10の大きさ、及び障害物Oの位置に基づき、先読みステップ毎のビークル10が障害物Oに干渉しない旨の制約条件を設定するステップと、先読みステップ毎のビークル10の位置と目的位置Pとの偏差が小さくなるほど評価が高くなる評価関数と、制約条件とに基づき最適化計算を行い、ビークル10の移動経路Rを算出するステップと、を含む。本方法によると、ビークル10の大きさも考慮して制約条件を設定し、最適化計算を用いて移動経路Rを設定することで、障害物Oを回避可能な経路を適切に設定できる。さらに言えば、ビークル10の予測した位置にビークル10の大きさも反映できるため、障害物Oと重なることを禁止する占有領域(ここではビークル領域AR)を過大に設定する必要がなく、迂回経路を小さくすることもできる。
【0086】
制約条件を設定するステップにおいては、ビークル10の大きさに基づき、先読みステップでのビークル10の位置を含む領域であるビークル領域ARを設定し、障害物Oの位置が、先読みステップ毎のビークル領域ARの範囲外となることを、制約条件として設定する。本方法によると、このようにビークル領域ARを制約条件に用いることで、障害物Oを回避可能な経路を適切に設定できる。
【0087】
制約条件を設定するステップにおいては、障害物Oの移動量にも基づき、前記ビークル領域を設定する。このように障害物Oの移動量もビークル領域ARに含めることで、障害物Oを回避可能な経路を適切に設定できる。
【0088】
制約条件を設定するステップにおいては、障害物の大きさにも基づき、前記ビークル領域を設定する。このように障害物Oの大きさもビークル領域ARに含めることで、障害物Oを回避可能な経路を適切に設定できる。
【0089】
制約条件を設定するステップにおいては、ビークル10の駆動条件が所定範囲となることも、制約条件として設定する。このように駆動条件にも制約条件を課すことで、ビークル10が実現可能な移動経路Rを、適切に生成できる。
【0090】
制約条件を設定するステップにおいては、先読みステップでのビークル10の位置が所定範囲となることも、制約条件として設定する。このようにビークル10の位置にも制約条件を課すことで、ビークル10が実現可能な移動経路Rを、適切に生成できる。
【0091】
本経路生成方法は、ビークル10の移動経路Rに基づきビークル10の駆動条件を算出するステップをさらに含む。これにより、最適化された移動経路Rを実現可能なビークル10の駆動条件が算出されて、ビークル10を適切に制御できる。
【0092】
本経路生成方法は、ビークル10の駆動条件を、ビークル10の速度及び操舵角としてよい。ビークル10の速度及び操舵角を駆動条件として最適化計算を行うことで、アウトプットとしても速度及び操舵角を得ることができ、ビークル10を適切に制御できる。
【0093】
本経路生成方法は、ビークル10の駆動条件を、ビークル10の速度及び旋回曲率としてよい。ビークル10の旋回曲率を駆動条件として最適化計算を行うことで、最適化計算の計算負荷を低減して、処理時間を短縮できる。
【0094】
本経路生成方法は、設定されたビークル10の駆動条件に基づきビークル10を制御するステップを含む。本経路生成方法によると、ビークル10に適切に障害物Oを回避させることができる。
【0095】
本開示の制御装置30(経路生成装置)は、ビークル10の位置の情報を取得する自己位置情報取得部52と、ビークル10の目的位置Pの情報を取得する目的位置情報取得部50と、障害物Oの位置の情報を取得する障害物情報取得部54と、計算実行部56とを含む。計算実行部56は、ビークル10の位置、ビークル10の大きさ、及び障害物Oの位置に基づき、先読みステップ毎のビークル10が障害物Oに干渉しない旨の制約条件を設定する。そして、計算実行部56は、先読みステップ毎のビークル10の位置と目的位置Pとの偏差が小さくなるほど評価が高くなる評価関数と、制約条件とに基づき最適化計算を行い、ビークル10の移動経路Rを算出する。この制御装置30によると、障害物Oを回避可能な経路を適切に設定できる。
【0096】
本開示のビークル10は、制御装置30を含む。このビークル10は、障害物Oを回避できる。
【0097】
本開示のプログラムは、ビークル10の位置の情報を取得するステップと、ビークル10の目的位置Pの情報を取得するステップと、障害物Oの位置の情報を取得するステップと、ビークル10の位置、ビークル10の大きさ、及び障害物Oの位置に基づき、先読みステップ毎のビークル10が障害物Oに干渉しない旨の制約条件を設定するステップと、先読みステップ毎のビークル10の位置と目的位置Pとの偏差が小さくなるほど評価が高くなる評価関数と、制約条件とに基づき最適化計算を行い、ビークル10の移動経路Rを算出するステップと、をコンピュータに実行させる。本プログラムによると、障害物Oを回避可能な経路を適切に設定できる。
【0098】
以上、本発明の実施形態を説明したが、この実施形態の内容により実施形態が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
【符号の説明】
【0099】
10 ビークル
30 制御装置(経路生成装置)
50 目的位置情報取得部
52 自己位置情報取得部
54 障害物情報取得部
56 計算実行部
58 駆動制御部
O 障害物
P 目的位置