(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024090839
(43)【公開日】2024-07-04
(54)【発明の名称】制御装置、移動体、制御方法及びプログラム
(51)【国際特許分類】
G05D 1/00 20240101AFI20240627BHJP
G05D 1/43 20240101ALI20240627BHJP
G05D 1/46 20240101ALI20240627BHJP
【FI】
G05D1/00 A
G05D1/02 H
G05D1/10
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022206982
(22)【出願日】2022-12-23
(71)【出願人】
【識別番号】000000974
【氏名又は名称】川崎重工業株式会社
(74)【代理人】
【識別番号】110003052
【氏名又は名称】弁理士法人勇智国際特許事務所
(72)【発明者】
【氏名】中村 和行
(72)【発明者】
【氏名】開田 真次
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301AA01
5H301AA05
5H301AA06
5H301AA10
5H301CC04
5H301CC07
5H301GG07
5H301GG08
5H301GG17
(57)【要約】
【課題】移動体において、障害物との衝突を効率的に回避しつつ目標位置に到達可能な技術を提供する。
【解決手段】移動体の推進装置を制御する制御装置は、第1検出装置が移動体の周囲を検出することにより生成された点群データが入力される入力部と、制御部とを備える。制御部は、移動体の自己位置と移動体の目標位置とを用いて移動体を目標位置まで移動させるための推進装置への指令値を生成し、生成された点群データに基づく点データが移動体を引き離すための仮想的な斥力を示すベクトルであって移動体との距離が近いほど大きくなる斥力ベクトルを複数の点データについて算出し、算出された複数の斥力ベクトルを合計して斥力ベクトル和を算出し、算出された斥力ベクトル和を用いて、生成された指令値を修正する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
移動体の推進装置を制御する制御装置であって、
第1検出装置が前記移動体の周囲を検出することにより生成された点群データが入力される入力部と、
制御部とを備え、
前記制御部は、
前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成し、
生成された前記点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出し、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出し、
算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正する、
制御装置。
【請求項2】
請求項1に記載の制御装置であって、
前記制御部は、
前記点群データを予め定められた大きさの第1領域で分割し、分割された前記第1領域内に含まれる前記点群データについて、1つの代表点データを特定し、
前記点データとして前記代表点データを用い、前記斥力ベクトルを複数の前記代表点データについて算出する、制御装置。
【請求項3】
請求項1に記載の制御装置であって、
前記制御部は、更に、予め定められた個数以下で集合する前記点データを、前記斥力ベクトル和を算出するために用いる複数の前記点データから除く、制御装置。
【請求項4】
請求項1に記載の制御装置であって、
前記制御部は、更に、前記移動体に対して予め定められた第2領域に存在する前記点データを、前記斥力ベクトル和を算出するために用いる複数の前記点データから除く、制御装置。
【請求項5】
請求項1に記載の制御装置であって、
前記指令値は、前記移動体を前記目標位置へ向かう推進方向へ推進させるための推力指令値を含み、
前記制御部は、前記斥力ベクトル和を用いて前記推力指令値を修正する、制御装置。
【請求項6】
請求項5に記載の制御装置であって、
前記指令値は、前記移動体の方位を制御するための方位指令値を含み、
前記制御部は、前記移動体の方位が前記推進方向に一致するように前記方位指令値を修正する、制御装置。
【請求項7】
請求項1に記載の制御装置と、
前記第1検出装置と、
前記自己位置を検出する第2検出装置と、
前記推進装置と、を備える、移動体。
【請求項8】
請求項7に記載の移動体であって、
前記推進装置は、前記指令値に応じて、前記移動体を水平方向と前記水平方向に対して直交する垂直方向とへ推進させる、移動体。
【請求項9】
移動体の推進装置を制御する方法であって、
前記推進装置を制御する制御装置が、
前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成し、
第1検出装置が前記移動体の周囲を検出することにより生成された点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出し、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出し、
算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正する、方法。
【請求項10】
移動体の推進装置を制御するプログラムであって、
前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成することと、
第1検出装置が前記移動体の周囲を検出することにより生成された点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出し、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出することと、
算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正することと、
をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、移動体の推進装置を制御する制御装置、制御装置を備える移動体、制御方法及びプログラムに関する。
【背景技術】
【0002】
移動体と障害物との衝突を回避しつつ、移動体を目標位置まで到達させる技術が知られている。例えば、特許文献1には、ロボットアームと障害物の最短距離と障害物の相対速度とに基づいてポテンシャル場を算出し、算出されたポテンシャル場を用いてロボットアームの加速度ベクトルを算出する制御装置が記載されている。制御装置は、ロボットアームが移動するごとにポテンシャル場及び加速度ベクトルを逐次算出し、算出された加速度ベクトルに基づいてロボットアームを移動させる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1記載の技術では、ポテンシャル場を算出するための最短距離はロボットアームの移動によって逐次変化するため、障害物を回避するための加速度ベクトルも逐次変化し得る。そのため、障害物の形状やロボットアームの加速性能によっては、ロボットアームと障害物との衝突が回避できない虞や回避が非効率になる虞がある。したがって、ロボットアームに限らず移動体において、障害物との衝突を効率的に回避しつつ目標位置に到達可能な技術が求められる。
【0005】
本開示は、ポテンシャル場を算出するための最短距離が移動体の移動によって逐次変化することに起因して移動体と障害物との衝突が回避できない虞や回避が非効率になる虞があるという課題に対し、障害物との衝突を効率的に回避させながら移動体を目標位置へ到達させることができる移動体の推進装置を制御する制御装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示の第1の形態によれば、移動体の推進装置を制御する制御装置が提供される。この制御装置は、第1検出装置が前記移動体の周囲を検出することにより生成された点群データが入力される入力部と、制御部とを備える。前記制御部は、前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成する。前記制御部は、生成された前記点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出する。前記制御部は、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出する。前記制御部は、算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正する。
【0007】
本開示の第2の形態によれば、移動体の推進装置を制御する方法が提供される。この方法は、前記推進装置を制御する制御装置が、前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成し、第1検出装置が前記移動体の周囲を検出することにより生成された点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出し、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出し、算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正する、方法である。
【0008】
本開示の第3の形態によれば、移動体の推進装置を制御するプログラムが提供される。このプログラムは、前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成することと、第1検出装置が前記移動体の周囲を検出することにより生成された点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出し、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出することと、算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正することと、をコンピュータに実行させる、プログラムである。
【発明の効果】
【0009】
本開示により、移動体の推進装置を制御する制御装置であって、障害物との衝突を効率的に回避させながら移動体を目標位置へ到達させることができる制御装置を提供できる。
【図面の簡単な説明】
【0010】
【
図1】第1実施形態における移動体の概略図である。
【
図2】第1実施形態における移動体の制御系統の構成を示すブロック図である。
【
図3】推進処理を説明するためのイメージ図である。
【
図4】第1実施形態における推進処理のフローチャートである。
【
図5】物体に対する移動体の回避動作の例を示すイメージ図である。
【
図6】別の物体に対する移動体の回避動作の例を示すイメージ図である。
【
図7】第2実施形態における移動体の概略図である。
【
図8】第2実施形態における推進処理のフローチャートである。
【
図9】第3実施形態における移動体の概略図である。
【発明を実施するための形態】
【0011】
<第1実施形態>
図1は、第1実施形態における移動体の概略図である。
図2は、第1実施形態における移動体の制御系統の構成を示すブロック図である。本実施形態の移動体は、自律型無人潜水機(Autonomous Underwater Vehicle)である。以下、本実施形態の移動体を、「AUV」とも呼ぶ。
【0012】
AUV1は、制御装置10と、第1検出装置30と、第2検出装置40と、推進装置50とを備える。AUV1は、AUV1に搭載されたバッテリの電力を動力として駆動される。
【0013】
推進装置50は、AUV1を水平方向と水平方向に直交する垂直方向とに移動可能に構成されている。推進装置50は、AUV1を前方へ移動させるための主推進用スラスタ51と、AUV1を上下方向に移動させるための垂直スラスタと、AUV1を左右方向に移動させるための水平スラスタなど、複数の推進器及びAUV1の進路を変更する舵装置を含む。
図1には、主推進用スラスタ51が例示されている。ただし、推進装置50は、上記の構成に限定されず、例えば推力を発生させる方向を変更可能な首振り式のスラスタを有していてもよい。推進装置50は、制御装置10から出力される指令値によって、AUV1を推進させる。本実施形態では、指令値は、現在位置から目標位置へ向かう推進方向へAUV1を移動させるための推力指令値と、AUV1の方位を制御するための方位指令値とを含む。
【0014】
図1には、AUV1の座標系であるAUV座標系が例示されている。AUV座標系は、互いに直交するX軸とY軸とZ軸とを含む。AUV座標系の原点Oは、AUV1の所定の点である。本実施形態では、原点Oは、AUV1の重心である。X軸は、Y軸、Z軸は、夫々、AUV1の前後方向、左右方向、上下方向に対応する。推進装置50は、制御装置10から出力されるX軸、Y軸、Z軸に対応する推力指令値と、X軸回り、Y軸回り、Z軸回りのAUV1の角度に対応する方位指令値とによって、AUV1を推進させる。なお、AUV1は、AUV1を前方へ移動させるための主推進用スラスタ51を主に使用すると、消費電力を抑制できるという特性を有する。例えば、AUV1の前後方向に対応するX軸が推進方向と一致すると、AUV1は主に主推進用スラスタ51によって推進できる。
【0015】
第1検出装置30は、AUV1の周囲を検出することにより点群データを生成するセンサである。点群データは、複数の点データの集合である。1つの点データには、AUV1に対する点データの相対的な位置情報が含まれる。以下の説明では、点データは、単に「点」とも呼ばれる。本実施形態では、第1検出装置30は、音波を発信して反射波を受信する音響センサである。第1検出装置30はAUV1の前方に設けられている。第1検出装置30は、音波の送受信を行って周囲を探知することによりAUV1の前方周囲の物体の位置を示す二次元点群データを取得する。なお、「物体」は、地形や構造物を含む。「物体」は、AUV1の推進に対する障害物となり得る。
【0016】
第1検出装置30は、AUV1の推進中に二次元点群データの取得を繰り返し行うことで、三次元点群データを生成する。三次元点群データの座標系は、例えばAUV座標系である。第1検出装置30は、生成した三次元点群データを制御装置10に入力する。なお、第1検出装置30は、点群データを取得可能な任意のセンサであればよく、例えば水中ライダ(Underwater LiDAR)であってもよいし、直接、三次元点群データを取得できるマルチビームソナーであってもよい。また、AUV1に設けられる第1検出装置30の数は、複数であってもよい。例えば、第1検出装置30は、AUV1の前方上部と前方下部とに、1つずつ設けられてもよい。
【0017】
第2検出装置40は、AUV1の現在位置を検出する。現在位置は、AUV1の自己位置とも呼ばれる。本実施形態では、第2検出装置40は、加速度センサとジャイロセンサとを含む慣性航法装置(Inertial Navigation System:INS)である。本実施形態では、第2検出装置40の座標系の原点及び各軸は、AUV座標系の原点及び各軸に一致する。第2検出装置40は、加速度センサとジャイロセンサとの検出値を用いて、所定の起点からのAUV1の移動距離を算出することで、AUV1の現在位置を検出する。第2検出装置40は、更に、ジャイロセンサの検出値を用いて、AUV1のX軸、Y軸、Z軸回りの角度を検出する。AUV1のX軸、Y軸、Z軸回りの角度は、夫々、AUV1のロール方向、ピッチ方向、ヨー方向の向きでもあり、AUV1の方位を表す。AUV1の方位は、AUV1の姿勢や、AUV1の向きとも呼ばれる。第2検出装置40は、AUV1の方位を検出する方位検出装置としても機能する。第2検出装置40は、AUV1の始動中に、現在位置及び方位を繰り返し検出して、制御装置10に入力する。なお、第2検出装置40は、DVL(Doppler Velocity Log)、GNSS(Global Navigation Satellite System)、USBL(Ultra Short Base Line)の少なくとも1つを含んでもよい。また、方位を検出するための検出装置は、自己位置を検出するための検出装置と別体であってもよい。
【0018】
図2に示すように、制御装置10は、CPU11と、メモリ15と、インターフェース17とを含むコンピュータとして構成されている。メモリ15は、不揮発性メモリと、揮発性メモリとを含む。インターフェース17は、信号の受信を行う入力部とも呼ばれる。また、インターフェース17は、信号の送信を行う出力部とも呼ばれる。CPU11は、メモリ15に記憶されたプログラムを展開して実行することにより、制御部21として機能する。
【0019】
制御部21は、制御装置10がオンにされ、インターフェース17を介して目標位置が入力されると、周囲の物体を回避させつつAUV1を目標位置へ到達させるための推進処理を実行する。目標位置は、ウェイポイント(Way Point)とも呼ばれる。なお、目標位置は、予めメモリ15に記憶されていてもよい。
【0020】
図3は、制御部21によって実行される推進処理を説明するためのイメージ図である。
図3には、水中を推進するAUV1と、AUV1の周囲に存在する物体101、102と、目標位置WPとが例示されている。推進処理は、AUV1の周囲の物体101、102の表面に存在する複数の微小な点P1、P2、P3、P4・・・の夫々が、AUV1を遠ざける仮想的な斥力を発生させているという考えに基づく技術を使用して行われる。点群データに基づく1つの点は、1つの微小な物体とみなせるためである。斥力は、1つの点を発生源とする仮想的な力であり、1つの点とAUV1の所定の点との距離が近いほど大きくなる。斥力は、1つの点がAUV1を遠ざけるようにAUV1に及ぼす仮想的な反発力でもある。1つの点がAUV1に及ぼす仮想的な斥力ベクトルを算出し、複数の点の斥力ベクトルを合計した斥力ベクトル和Rvは、AUV1の周囲に存在する物体の表面形状を反映した力となる。本処理では、制御部21が、斥力ベクトル和Rvを用いて推力指令値C1を修正して推進装置50へ出力することにより、AUV1は、周囲の物体101、102を避ける経路RTを取りながら、目標位置WPへ到達する。以下、制御部21が実行する推進処理について具体的に説明する。
【0021】
図4は、推進処理のフローチャートである。推進処理は、AUV1の移動中に繰り返し実行される。ステップS10では、制御部21は、AUV1を現在位置から目標位置まで到達させるための推進装置50に対する指令値を算出する。本実施形態では、制御部21は、第2検出装置40により検出された自己位置と、目標位置とを用いて、自己位置から目標位置までの三次元距離偏差を算出する。三次元距離偏差は、AUV座標系における、X軸、Y軸、Z軸ごとの距離である。三次元距離偏差を算出すると、制御部21は、各軸の距離偏差に比例した各軸の推力指令値を算出する。また、制御部21は、AUV1のX軸が推進方向に一致するように、方位指令値を算出する。ステップS10で算出される指令値は、現在位置と目標位置とを直線的に結び、かつ、船首方位が目標位置を向く指令値である。
【0022】
ステップS20では、制御部21は、第1検出装置30により生成された三次元点群データを用いて、三次元地図データを生成する。三次元地図データは、斥力ベクトルの算出において用いられる点データの集合である。ステップS20は、代表点データを特定するステップS22と、予め定められた条件に該当する点データを除去するステップS24とを含む。
【0023】
ステップS22では、制御部21は、三次元点群データを予め定められた大きさの第1領域に分割し、分割された各第1領域につき、1つの点のみを代表点データとして特定する。第1領域の大きさは、第1検出装置30の分解能や、第1領域の大きさとAUV1の挙動とに関するシミュレーション等により定められる。本実施形態では、第1領域は、予め定められた大きさの立方体グリッドである。制御部21は、三次元点群データを立方体グリッドに分割し、点群データを構成する点データが含まれるグリッドについて、代表点データを特定する。本実施形態では、代表点データは、グリッドの中心点である。制御部21は、点データが含まれないグリッドについては、代表点データを特定しない。制御部21は、点データが含まれる各グリッドについて代表点データを特定することで、三次元地図データを生成する。制御部21は、生成した三次元地図データを、メモリ15に記憶する。
【0024】
制御部21は、更に、ステップS24において、三次元地図データから、予め定められた第1条件を満たす点データをノイズとして除去する。本実施形態では、第1条件は、点データが、予め定められた個数以下で集合していることを含む。ステップS24の処理は、AUV1の推進に影響を与えない物体に基づく点データをノイズとみなして、三次元地図データから除去する処理である。本処理は、三次元地図データにおいて、所定の個数の点データが隣接して存在している場合には、当該点データを残す処理でもある。第1条件は、AUV1が推進する環境や、AUV1の推進装置50の性能等に応じて、実験やシミュレーションを用いて予め定められる。ステップS24が行われることにより、水中に浮遊するゴミ等のAUV1の推進に影響を与えない物体は、斥力ベクトルを算出するための点データとしてみなされなくなる。制御部21は、ステップS22で生成した三次元地図データから、第1条件を満たす点データを除去して、三次元地図データを更新する。制御部21は、更新した三次元地図データを、メモリ15に記憶する。なお、制御部21は、取得してから予め定められた期間が経過した三次元点群データや三次元地図データを、メモリ15から削除してもよい。
【0025】
ステップS30では、制御部21は、三次元地図データの各代表点データについて斥力ベクトルR1vを算出し、算出した複数の斥力ベクトルを合計して斥力ベクトル和Rvを算出する。斥力ベクトルR1vは、例えば、以下の式(1)で表され、斥力ベクトル和Rvは、例えば以下の式(2)で表される。式(1)において、L1は、三次元地図データにおける1つの点データとAUV1の原点Oとの距離である。Uvは、1つの点データからAUV1の原点Oに向かう単位ベクトルである。Jは、単位距離における斥力ベクトルの大きさを示す定数である。Jは、シミュレーションや実験により求められる。
【0026】
【0027】
【0028】
式(1)及び式(2)に示すように、本実施形態の斥力ベクトルR1vは、距離L1に反比例する。斥力ベクトルR1vは、AUV1と点データとの距離が近いほど大きくなるように定められればよい。斥力ベクトルR1vは、例えば、距離L1の二乗に反比例してもよい。
【0029】
図3で説明したように、AUV1の周囲に存在する物体101、102の微小な各点P1、P2、P3、P4・・・は、AUV1に作用する仮想的な斥力を発生させている。斥力は、AUV1を遠ざける方向に作用する。なお、三次元地図データは、第1検出装置30によって検出される物体により生成されるため、AUV1に対する斥力は、海底Sからも発生している。
図3及び
図3以降のイメージ図では、海底Sを表す点データが省略されている。
【0030】
ステップS40では、制御部21は、ステップS10で算出した指令値を修正する。本実施形態では、ステップS40は、推力指令値を修正するステップS42と、方位指令値を修正するステップS44とを含む。
【0031】
ステップS42では、制御部21は、算出した斥力ベクトル和を、ステップS10で算出したAUV座標系におけるX軸、Y軸、Z軸の推力指令値に加えることで、指令値を修正する。指令値は、物体からAUV1を遠ざけるように修正される。
【0032】
ステップS44では、制御部21は、更に、方位指令値を修正する。制御部21は、まず、AUV1の次回位置を推定する。次回位置は、ステップS42で修正した推力指令値が用いられ、次回の推進処理の演算が実行される時点においてAUV1が存在する位置である。次に、制御部21は、現在位置と次回位置とを結んだベクトルの方向とAUV1の船首方位とが一致するように、方位指令値を修正する。
【0033】
ステップS50では、制御部21は、修正した指令値を推進装置50に出力する。本実施形態では、制御部21は、推力指令値と方位指令値とを、推進装置50の備える各スラスタの回転数に変換する。ステップS50が行われることで、AUV1は、物体を回避しながら目標位置へ推進する。なお、AUV1の備える推進装置50が指令値を回転数へ変換する機能を有する場合には、制御部21は、指令値をそのまま推進装置50へ出力してもよい。
【0034】
ステップS60では、制御部21は、第2検出装置40から入力される現在位置と目標位置とを用いて、AUV1が目標位置に到達したか否かを判断する。現在位置が目標位置でない場合には、制御部21は、処理をステップS10に戻す。現在位置が目標位置である場合には、制御部21は、推進処理を終了する。
【0035】
図5は、物体103に対するAUV1の回避動作の例を示すイメージ図である。
図5には、ステップS10で算出される推力指令値C2と、ステップS30で算出される斥力ベクトル和Rvと、ステップS40で修正された推力指令値C3とが示されている。物体103は、上下方向及び左右方向に延在する壁状の物体である。目標位置WPは、物体103に対しAUV1と反対側に存在する。物体103の垂直方向における上端は、第1検出装置30の検出範囲外にあるため、物体103に関し、AUV1よりも上側部分の複数の点Pと下側部分の複数の点Pとが発生する斥力は、打ち消し合う。そのため、AUV1には、物体103に関し、AUV1よりも左側部分の複数の点Pと右側部分の複数の点Pとによる斥力ベクトル和Rvが作用する。したがって、推力指令値C2は、AUV1を物体103に対し平行に推進させる推力指令値C3へ修正される。また、方位指令値は、AUV1の船首方位が推力指令値C3の方向に一致するように修正される。その結果、AUV1は、物体103に対して平行に推進しつつ、目標位置WPへ推進する。
【0036】
図6は、物体104に対するAUV1の回避動作の例を示すイメージ図である。
図5の例と同様に、
図6には、ステップS10で算出される推力指令値C2と、ステップS30で算出される斥力ベクトル和Rvと、ステップS40で修正された推力指令値C3とが示されている。物体104は、左右方向に延在する柱状の物体である。目標位置WPは、物体104に対しAUV1と反対側に存在する。物体104の垂直方向における上端は、第1検出装置30の検出範囲内にあり、物体104の上側には、斥力を発生させる点Pが存在しない。そのため、AUV1には、物体104に関し、上向きの斥力ベクトル和Rvが作用する。したがって、推力指令値C2は、物体104を乗り越えつつ目標位置WPへAUV1を推進させる推力指令値C3へ修正される。また、方位指令値は、AUV1の船首方位が推力指令値C3の方向に一致するように修正される。
図6に示す例では、船首方位は、目標位置WPのある右側かつ物体104を乗り越える上側へ傾けられる。その結果、AUV1は、物体104を乗り越えるように上昇しつつ、船首方位を目標位置WPへ傾けて推進する。
【0037】
以上で説明した本実施形態の制御装置10によれば、制御部21が算出する斥力ベクトル和は、第1検出装置30によって検出可能な範囲に存在する物体の表面形状を反映する。また、制御部21は、斥力ベクトル和を用いて、推進装置50に対する指令値を修正する。そのため、本実施形態のAUV1は、物体の表面形状に沿うように移動して物体との衝突を効率的に回避しつつ、目標位置へ到達できる。
【0038】
例えば、AUV1に対して最短距離にある1つの物体とAUV1との間に作用する力を用いて指令値を修正する構成と比較して、本実施形態のAUV1は、物体を効率的に回避できる。AUV1と物体との最短距離は、AUV1の推進とともに逐次変化するため、最短距離のみを用いて指令値を修正する構成では、物体の表面形状や推進装置の性能によっては、物体との衝突が回避できない虞や回避が非効率になる虞があるためである。
【0039】
なお、三次元点群データに含まれる点データの数は、検出範囲が同じであっても、AUV1の移動速度によって変化し得る。例えば、AUV1の速度が大きいと点データの総数は小さく、AUV1の速度が小さいと点データの総数は大きくなり得る。つまり、点群データの空間密度は、AUV1の移動速度によって変化するので、斥力ベクトル和は、AUV1の移動速度の変化に影響され得る。しかし、本実施形態によれば、制御部21は、三次元点群データを用いて生成された三次元地図データを、予め定められた大きさの第1領域に分割し、分割された第1領域内の点群データにつき1つの点のみを代表点とする。そのため、第1領域に含まれる点データの数がAUV1の移動速度を反映していても、1つの点のみが斥力ベクトルを算出するための点として用いられる。したがって、斥力ベクトル和は、AUV1の移動速度の変化に影響されない。その結果、本実施形態のAUV1は、AUV1の速度によらず、物体との衝突を効率的に避けることができる。
【0040】
また、AUV1と水中のゴミ等の浮遊物との距離が近い場合には、浮遊物は大きな斥力を発生し得る。本実施形態では、制御部21は、予め定められた個数以下で集合する代表点データを、斥力ベクトル和を算出するための点データから除くので、浮遊物の発生する斥力は斥力ベクトル和に加えられない。そのため、本実施形態のAUV1は、浮遊物等の障害物とならない物体を回避せず、障害物となり得る物体のみを効率的に回避できる。
【0041】
また、本実施形態の移動体は、水中を推進するAUV1である。AUV1は、水平方向への移動と垂直方向への移動とを実行可能な推進装置50を備えている。そのため、本実施形態によれば、海底Sの地形に合わせてAUV1を垂直方向へ移動させて、AUV1を早期に目標位置へ到達させることもできる。
【0042】
また、制御部21は、AUV1の次回位置を推定し、現在位置と次回位置とを結んだベクトルの方向に船首方位が向くように、方位指令値を修正する。AUV1は、AUV1の船首方位が推進方向に一致すると主に主推進用スラスタ51が使用され、消費電力を抑制できるという特性を有する。そのため、本実施形態によれば、AUV1の消費電力が抑制される。なお、制御部21は、前回の推進処理の演算におけるAUV1の自己位置である前回位置と、現在位置とを結んだベクトルの方向に船首方位が向くように、方位指令値を修正してもよい。
【0043】
<第2実施形態>
以下では、上述の実施形態と同様の構成及び処理については同じ符号を使用し、詳細な説明及び図示を省略する。
図7は、第2実施形態における移動体としての車両1Aの概略図である。車両1Aは、レベル4以上の自動運転が可能な車両である。車両1Aは、制御装置10Aと、点群データを取得する第1検出装置30Aと、自己位置及び方位を検出する第2検出装置40Aと、推進装置50Aとを備える。第1検出装置30Aは、例えば、LiDARである。第2検出装置40Aは、例えば、GNSS及びジャイロセンサである。
【0044】
推進装置50Aは、全体として、車両1Aを水平方向に移動可能であり、垂直方向に移動不能である。本実施形態では、推進装置50Aは、駆動装置と、ブレーキ装置と、操舵装置とを含む。駆動装置は、車両1Aの車輪を駆動する駆動部(図示せず)を制御する機能を有する。ブレーキ装置は、車両1Aのブレーキ制御を実行する。操舵装置は、車両1Aの車輪の操舵角を制御することで、車両1Aのヨー方向の向きを変更する。
【0045】
図8は、制御装置10Aによって実行される推進処理のフローチャートである。本実施形態における三次元地図データを生成するステップS20は、更に、ステップS26を含む。ステップS26では、制御部21Aは、予め定められた第2領域に存在する点データを、三次元地図データから除去する。
図7には、第2領域の例が示されている。第2領域は、例えば、車両1Aが走行する地面Gに対応する仮想地面と仮想地面よりも下側部分とを含む領域AR1である。第2領域は、第1検出装置30Aの検出範囲、車両1Aの車体の構成、及び、車両1Aが走行する環境等に応じて、予め実験やシミュレーションにより定められる。制御部21Aは、三次元地図データから第2領域の点データを除去し、三次元地図データを更新する。また、ステップS40では、制御部21Aは、推力指令値に、斥力ベクトル和の水平方向に対応する成分を加える。本実施形態における車両1A及び制御装置10Aのその他の主な構成、及び、推進処理は、第1実施形態と同様であるため説明を省略する。
【0046】
第2実施形態によれば、制御部21Aは、仮想地面と仮想地面よりも下側部分とを含む領域AR1に含まれる点データを、斥力ベクトル和を算出するための点データから除く。そのため、斥力ベクトル和は、車両1Aの走行する地面よりも上側部分の点群データに基づいて算出される。したがって、本実施形態によれば、第1実施形態と同様に、車両1Aは、物体の表面形状に沿うように移動して物体との衝突を効率的に回避しつつ、目標位置へ到達できる。このように、移動体の周囲の物体が移動体を遠ざける仮想的な斥力を発生させるという考えに基づく技術は、車両1Aを含む陸上を移動する移動体にも適用できる。
【0047】
なお、第2領域は、
図7に示すように、車両1Aの車体よりも上側部分の領域AR2を含んでもよい。制御部21Aは、ステップS26において、領域AR1に加え、車体の上側部分の領域AR2の点データを除去してもよい。この形態によれば、車両1Aよりも上側に存在し、車両1Aの走行の障害とならない物体については、斥力ベクトルが算出されない。そのため、制御装置10Aの演算量が低減される。また、車両1Aは、走行の障害とならない物体に対する不要な回避動作を行わず、効率的に移動できる。
【0048】
<第3実施形態>
図9は、第3実施形態における移動体としてのドローン(drone)1Bの概略構成を示す図である。本実施形態の移動体は、操縦者に操縦されることなく自律航行可能な航空機である。なお、「航空機」としては、飛行機、ヘリコプターが例示される。飛行機は、通常の滑走により離着陸するものの他、VTOL機(Vertical Take-Off and Landing aircraft)を含む。
【0049】
ドローン1Bの推進装置50Bは、ドローン1Bの機体中央から放射状に配置された複数のモータ及び回転翼51B、52B、53B、54Bを備える。推進装置50Bは、制御装置10Bから出力される各回転翼の回転数や、回転速度を含む指令値によって、水平方向及び垂直方向に移動可能である。なお、第1実施形態のAUV1と異なり、ドローン1Bの消費電力は、使用されるロータによって変化しない。そのため、制御部21Bは、推進処理におけるステップS44を実行せず、方位指令値を算出しない。ドローン1B及び制御装置10Bのその他の主な構成、及び、推進処理は、第1実施形態のAUV1及び制御装置10と同様であるため、説明を省略する。第3実施形態の制御装置10B及びドローン1Bは、第1実施形態と同様の効果を奏する。
【0050】
なお、第1実施形態のAUV1と同様に、航空機が、機体の方位と推進方向とが一致すように推進すると消費電力を抑制できるという特性を有する場合には、制御部21Bは、ステップS44の処理を実行して、方位指令値を算出してもよい。
【0051】
<他の実施形態>
上述の各実施形態における推進処理の各ステップは、適宜入れ替えられてもよいし、同時に行われてもよい。例えば、指令値を算出するステップS10と、三次元地図データを生成するステップS20とは、同時に行われてもよいし、順序が入れ替えられてもよい。また、ステップS24、ステップS26の処理は、ステップS22において代表点データが特定されるよりも前に、点群データに対して行われてもよい。
【0052】
ステップS22の処理は、省略されてもよい。制御部21は、点群データの各点に対して、斥力ベクトルを算出してもよい。例えば、移動体1、1A、1Bの移動速度が一定である場合には、点群データの各点に対して算出された斥力ベクトルの合計は、周囲の物体の表面形状をより正確に反映する。そのため、この形態によっても、移動体1、1A、1Bは、物体との衝突を効率的に回避しながら目標位置へ到達できる。
【0053】
上述の制御装置10、10A、10Bによって制御される移動体は、上記実施形態の移動体に限らず、任意の移動体であってもよい。移動体は、例えば、除雪車、油圧ショベル、ロボットアーム等であってもよい。移動体が除雪車である場合には、ステップS22の第1条件は、空中の雪と点データの個数や隣接の度合いとの関係を実験やシミュレーションにより求めることで、定められてもよい。また、第2領域は、除雪車の走行する地面に堆積した雪及び堆積した雪よりも下側の領域を含んでもよい。この形態によれば、空中の雪や地面に堆積した雪が発生する斥力は、斥力ベクトル和に加えられない。そのため、除雪作業に対して障害物とならない物体に対しては回避動作が行われないので、除雪車は、除雪作業をしつつ、物体との衝突を回避して目標位置へ到達できる。
【0054】
第2検出装置40、40Aの座標系の原点及び各軸は、移動体1、1A、1Bの座標系の原点及び各軸に一致していなくともよい。制御装置10、10A、10Bは、第2検出装置40、40Aの座標系の任意の座標と移動体の座標系の任意の座標とを相互に変換可能であってもよい。
【0055】
第1検出装置30、30Aは移動体の周囲を検出することで二次元点群データを逐次取得し、制御装置10、10A、10Bが、逐次入力された二次元点群データを用いて三次元点群データを生成してもよい。
【0056】
制御部21、21Aが斥力ベクトルを算出する点群データは、二次元点群データであってもよい。点群データが二次元点群データである場合には、第1領域は、例えば、予め定められた大きさの正方形グリッドであってもよい。代表点データは、正方形グリッドにおける所定の点であってもよい。
【0057】
また、本明細書で開示する要素の機能は、開示された機能を実行するよう構成またはプログラムされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(Application Specific Integrated Circuits)、従来の回路、及び/または、それらの組み合わせ、を含む回路または処理回路を使用して実行できる。プロセッサは、トランジスタやその他の回路を含むため、処理回路または回路と見なされる。本開示において、回路、ユニット、または手段は、列挙された機能を実行するハードウエアであるか、または、列挙された機能を実行するようにプログラムされたハードウエアである。ハードウエアは、本明細書に開示されているハードウエアであってもよいし、あるいは、列挙された機能を実行するようにプログラムまたは構成されているその他の既知のハードウエアであってもよい。ハードウエアが回路の一種と考えられるプロセッサである場合、回路、手段、またはユニットはハードウエアとソフトウエアの組み合わせであり、ソフトウエアはハードウエア及び/またはプロセッサの構成に使用される。
【0058】
本開示は、上述した実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の形態で実現することができる。例えば、本開示は、以下の形態(aspect)によっても実現可能である。以下に記載した各形態中の技術的特徴に対応する上記実施形態中の技術的特徴は、本開示の課題の一部または全部を解決するために、あるいは、本開示の効果の一部または全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【0059】
<1>本開示の第1の形態によれば、移動体の推進装置を制御する制御装置が提供される。この制御装置は、第1検出装置が前記移動体の周囲を検出することにより生成された点群データが入力される入力部と、制御部とを備える。前記制御部は、前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成する。前記制御部は、生成された前記点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出する。前記制御部は、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出する。前記制御部は、算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正する。
この形態によれば、点群データに基づく仮想的な斥力ベクトルを合計した斥力ベクトル和は、移動体の周囲の物体の表面形状に応じた力となる。制御装置は、斥力ベクトル和を用いて移動体の推進装置に対する指令値を修正するので、物体との衝突を効率的に回避させながら移動体を目標位置へ到達させることができる。
【0060】
<2>上記形態において、前記制御部は、前記点群データを予め定められた大きさの第1領域で分割し、分割された前記第1領域内に含まれる前記点群データについて、1つの代表点データを特定してもよい。前記制御部は、前記点データとして前記代表点データを用い、前記斥力ベクトルを複数の前記代表点データについて算出してもよい。
この形態によれば、移動体の移動速度に応じて点群データの空間密度に粗密が生じても、1つの第1領域につき1つの代表点データが特定され、代表点データについて斥力ベクトルが算出される。そのため、斥力ベクトル和が移動体の移動速度に影響されることを抑制できる。したがって、制御装置は、物体との衝突をより効率的に回避させながら移動体を目標位置へ到達させることができる。
【0061】
<3>上記形態において、前記制御部は、更に、予め定められた個数以下で集合する前記点データを、前記斥力ベクトル和を算出するために用いる複数の前記点データから除いてもよい。
この形態によれば、他の点データから孤立した予め定められた個数以下の点データの発生する斥力は、斥力ベクトル和に加えられない。そのため、例えば、ゴミ等の障害物とならない物体に対する移動体の回避動作が抑制される。
【0062】
<4>上記形態において、前記制御部は、更に、前記移動体に対して予め定められた第2領域に存在する前記点データを、前記斥力ベクトル和を算出するために用いる複数の前記点データから除いてもよい。
この形態によれば、例えば、第2領域に存在する物体は、斥力ベクトル和を算出するために用いる複数の点データから除かれる。そのため、第2領域に存在する物体に対する移動体の回避動作が抑制される。また、斥力ベクトル和を算出するための制御装置の負荷が低減される。
【0063】
<5>上記形態において、前記指令値は、前記移動体を前記目標位置へ向かう推進方向へ推進させるための推力指令値を含んでもよい。前記制御部は、前記斥力ベクトル和を用いて前記推力指令値を修正してもよい。
この形態によれば、推力指令値は、移動体を障害物から遠ざけるように修正される。そのため、移動体と物体との衝突が回避される。
【0064】
<6>上記形態において、前記指令値は、前記移動体の方位を制御するための方位指令値を含んでもよい。前記制御部は、前記移動体の方位が前記推進方向に一致するように前記方位指令値を修正してもよい。
この形態によれば、方位指令値が修正されることで、移動体の方位が推進方向へ向けられるので、移動体を効率的に目標位置へ到達させることができる。
なお、この形態において、移動体の方位は、移動体の方位を検出する方位検出装置から制御装置に入力されてもよい。移動体の方位は、移動体の向きや、移動体の姿勢とも呼ばれる。例えば、移動体が艇体、機体で構成される場合には、移動体の方位は、夫々、船首方位、機首方位とも呼ばれる。また、移動体は、推進方向に対する移動体の向きによって、推進装置の動力使用量が変化するように構成されていてもよい。動力使用量は、移動体の方位が推進方向に一致することで低減されてもよい。
【0065】
<7>本開示の第2の形態によれば、上記形態に記載の制御装置と、前記第1検出装置と、前記自己位置を検出する第2検出装置と、前記推進装置と、を備える、移動体が提供される。
この形態によれば、物体との衝突を回避しつつ目標位置へ到達可能な移動体が提供される。
【0066】
<8>上記形態において、前記推進装置は、前記指令値に応じて、前記移動体を水平方向と前記水平方向に対して直交する垂直方向とへ推進させるように構成されていてもよい。
この形態によれば、移動体は、水平方向と垂直方向とに移動することによって、物体との衝突を効率的に回避できる。
【0067】
<9>本開示の第3の形態によれば、移動体の推進装置を制御する方法が提供される。この方法は、前記推進装置を制御する制御装置が、前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成し、第1検出装置が前記移動体の周囲を検出することにより生成された点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出し、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出し、算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正する、方法である。
この形態によれば、点群データに基づく仮想的な斥力ベクトルを合計した斥力ベクトル和は、移動体の周囲の物体の表面形状に応じた力となる。斥力ベクトル和を用いて移動体の推進装置に対する指令値が修正されるので、移動体と物体との衝突を効率的に回避し、移動体を目標位置へ到達させることができる。
【0068】
<10>本開示の第4の形態によれば、移動体の推進装置を制御するプログラムが提供される。このプログラムは、前記移動体の自己位置と前記移動体の目標位置とを用いて前記移動体を前記目標位置まで移動させるための前記推進装置への指令値を生成することと、第1検出装置が前記移動体の周囲を検出することにより生成された点群データに基づく点データが前記移動体を引き離すための仮想的な斥力を示すベクトルであって前記移動体との距離が近いほど大きくなる斥力ベクトルを、複数の前記点データについて算出し、算出された複数の前記斥力ベクトルを合計して斥力ベクトル和を算出することと、算出された前記斥力ベクトル和を用いて、生成された前記指令値を修正することと、をコンピュータに実行させる、プログラムである。
この形態によれば、点群データに基づく仮想的な斥力ベクトルを合計した斥力ベクトル和は、移動体の周囲の物体の表面形状に応じた力となる。斥力ベクトル和を用いて移動体の推進装置に対する指令値が修正されるので、移動体と物体との衝突を効率的に回避し、移動体を目標位置へ到達させることができる。
【0069】
本開示は、上記以外の種々の形態で実現することも可能である。例えば、制御装置の機能を実現するためのコンピュータープログラムを記録した一時的でない記録媒体(non-transitory storage medium)等の形態で実現することができる。
【符号の説明】
【0070】
1:移動体,AUV
1A:移動体,車両
1B:移動体,ドローン
10、10A、10B:制御装置、
11:CPU
15:メモリ
17:インターフェース
21,21A,21B:制御部
30,30A:第1検出装置
40,40A:第2検出装置
50,51,50A,50B,51B,52B,53B,54B:推進装置
101,102,103,104:物体
AR1,AR2:領域
G:地面
S:海底
O:原点
P,P1,P2,P3,P4:点
C1,C2,C3:推力指令値
Rv:斥力ベクトル和
RT:経路
WP:目標位置