(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023081297
(43)【公開日】2023-06-09
(54)【発明の名称】移動体およびプログラム
(51)【国際特許分類】
G05D 1/02 20200101AFI20230602BHJP
B61B 13/00 20060101ALN20230602BHJP
【FI】
G05D1/02 S
B61B13/00 A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022168465
(22)【出願日】2022-10-20
(31)【優先権主張番号】P 2021194967
(32)【優先日】2021-11-30
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2022044252
(32)【優先日】2022-03-18
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2022088871
(32)【優先日】2022-05-31
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】保坂 健人
(72)【発明者】
【氏名】工藤 宏一
(72)【発明者】
【氏名】北原 拓
【テーマコード(参考)】
3D101
5H301
【Fターム(参考)】
3D101BA20
3D101BB18
3D101BB57
5H301AA01
5H301BB10
5H301CC03
5H301CC06
5H301CC10
5H301GG08
5H301GG09
5H301GG12
5H301GG16
5H301HH19
5H301LL01
5H301LL06
5H301LL07
5H301LL08
5H301LL11
5H301LL14
(57)【要約】
【課題】センサによるスキャンをしていない領域の障害物予測に基づいて、移動体を連続した障害物に衝突させずに走行させる。
【解決手段】移動領域の障害物マップに基づき走行路面を走行する移動体であって、移動体の進行方向前面に配置され、かつ、走行路面に対して所定の傾斜角度を有して斜め下向きに設けられた測距センサと、測距センサの測定結果が走行路面に対する凹凸を示す特徴量を含み、測距センサによる複数回の測定結果が類似する凹凸を示す特徴量を含む場合に、連続した障害物と判定する判定部と、凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいて、測距センサによってスキャンしていない移動体の前方領域の障害物マップを生成するマップ生成部と、を備える。
【選択図】
図2
【特許請求の範囲】
【請求項1】
移動領域の障害物マップに基づき走行路面を走行する移動体であって、
前記移動体の進行方向前面に配置され、かつ、前記走行路面に対して所定の傾斜角度を有して斜め下向きに設けられた測距センサと、
前記測距センサの測定結果が前記走行路面に対する凹凸を示す特徴量を含み、前記測距センサによる複数回の測定結果が類似する前記凹凸を示す特徴量を含む場合に、連続した障害物と判定する判定部と、
前記凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいて、前記測距センサによってスキャンしていない前記移動体の前方領域の障害物マップを生成するマップ生成部と、を備える、
移動体。
【請求項2】
前記判定部は、
前記凹凸を示す特徴量が連続した長さで続いている場合、前記凹凸に関する他の所定の特徴量が所定の長さで連続しているとみなす、
請求項1に記載の移動体。
【請求項3】
前記マップ生成部は、
カーブフィッティング予測を実施して、前記移動体の前記前方領域の前記障害物マップを生成する、
請求項1または請求項2に記載の移動体。
【請求項4】
前記移動体の傾き量を検知する傾きセンサをさらに備え、
前記判定部は、
前記測距センサによって測定された前記走行路面に対する高低差を、前記傾き量に基づき補正する、
請求項1に記載の移動体。
【請求項5】
前記測距センサは、
前記走行路面に対する前記傾斜角度が水平方向に対して35度以上であり、
前記走行路面を走行する駆動部材の走行方向の先端部より1m以上先を検知できる高さに設置されている、
請求項1に記載の移動体。
【請求項6】
前記測距センサは、2次元方向の測距が可能な2D-LiDAR(Light Detection And Ranging)である、
請求項1に記載の移動体。
【請求項7】
前記測距センサは、3次元方向の測距が可能な3D-LiDAR(Light Detection And Ranging)である、
請求項1に記載の移動体。
【請求項8】
走行路面に対して所定の傾斜角度を有して斜め下向きに設けられた測距センサを、進行方向前面に備える移動体を制御するコンピュータを、
前記測距センサの測定結果が前記走行路面に対する凹凸を示す特徴量を含み、前記測距センサによる複数回の測定結果が類似する前記凹凸を示す特徴量を含む場合に、連続した障害物と判定させ、
前記凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいて、前記測距センサによってスキャンしていない前記移動体の前方領域の障害物マップを作成させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、移動体およびプログラムに関する。
【背景技術】
【0002】
従来、化学プラントなどの屋外に設置されている構造物(配管、メータ、バルブなど)に漏れや異常が無いかについて、点検員が目視で点検していた。近年、上述の点検作業において、自律移動する移動体により無人化しようとする技術が開発されている。
【0003】
例えば、特許文献1には、距離測定装置による一次元のレーザ走査をK回行い、a回前(K-a回)の走査からK回目までのレーザ走査の全てについて、連続して凹形状の障害物として検出する技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の技術によれば、レーザ走査しているライン上の障害物しか検知できないので、障害物が前方に続いているかどうか、などの予測に基づいた動作をすることができない、という課題がある。
【0005】
本発明は、上記に鑑みてなされたものであって、センサによるスキャンをしていない領域の障害物予測に基づいて、移動体を連続した障害物に衝突させずに走行させることを目的とする。
【課題を解決するための手段】
【0006】
上述した課題を解決し、目的を達成するために、本発明は、移動領域の障害物マップに基づき走行路面を走行する移動体であって、前記移動体の進行方向前面に配置され、かつ、前記走行路面に対して所定の傾斜角度を有して斜め下向きに設けられた測距センサと、前記測距センサの測定結果が前記走行路面に対する凹凸を示す特徴量を含み、前記測距センサによる複数回の測定結果が類似する前記凹凸を示す特徴量を含む場合に、連続した障害物と判定する判定部と、前記凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいて、前記測距センサによってスキャンしていない前記移動体の前方領域の障害物マップを生成するマップ生成部と、を備える。
【発明の効果】
【0007】
本発明によれば、センサによるスキャンをしていない領域の障害物予測に基づいて、移動体を連続した障害物に衝突させずに走行させることができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、実施形態にかかる走行装置の構成の一例を示す図である。
【
図2】
図2は、実施形態にかかる走行装置の測距センサの設置例を示す図である。
【
図3】
図3は、実施形態にかかる走行装置の測距センサの設置位置の根拠について説明する図である。
【
図4】
図4は、実施形態にかかる走行装置のハードウェア構成の一例を示すブロック図である。
【
図5】
図5は、走行装置の自律走行にかかる機能構成を示すブロック図である。
【
図6】
図6は、ステアリングコントロール部の速度制御にかかる機能構成を示すブロック図である。
【
図7】
図7は、実施形態にかかる走行装置における路面障害物の検知処理の手順の一例を示すフローチャートである。
【
図8】
図8は、検出履歴保存処理を実行する理由を示す図である。
【
図9】
図9は、重複データ除去処理を実行する理由を示す図である。
【
図10】
図10は、実施形態にかかる走行装置における路面障害物の検知処理の手順の別の一例を示すフローチャートである。
【
図11】
図11は、検出履歴保存処理を省略する理由を示す図である。
【
図12】
図12は、重複データ除去処理を省略する理由を示す図である。
【
図13】
図13は、実施形態にかかる走行装置による検知例を示す図である。
【
図14】
図14は、実施形態にかかる走行装置における段差・平面候補点抽出処理の手順の一例を示すフローチャートである。
【
図15】
図15は、実施形態にかかる走行装置における段差候補点クラスタリング処理の手順の一例を示すフローチャートである。
【
図16】
図16は、実施形態にかかる走行装置における平面候補点クラスタリング処理の手順の一例を示すフローチャートである。
【
図17】
図17は、実施形態にかかる走行装置における縁石検出処理の手順の一例を示すフローチャートである。
【
図18】
図18は、実施形態にかかる走行装置における縁石検出処理で得られる縁石検出データのプロット例を示す図である。
【
図19】
図19は、実施形態にかかる走行装置における溝検出処理の手順の一例を示すフローチャートである。
【
図20】
図20は、実施形態にかかる走行装置における溝検出処理で得られる溝検出データのプロット例を示す図である。
【
図21】
図21は、実施形態にかかる走行装置における縁石・溝検出履歴データ生成・保存処理の手順の一例を示すフローチャートである。
【
図22】
図22は、実施形態にかかる走行装置が過去のスキャン結果を参照して移動方向を変更する例を示す図である。
【
図23】
図23は、実施形態にかかる走行装置による遮蔽物に対する対応例を示す図である。
【
図24】
図24は、実施形態にかかる走行装置における予測処理の手順の一例示すフローチャートである。
【
図25】
図25は、実施形態にかかる走行装置1が検知ラインより前方の障害物の予測をした例を示す図である。
【発明を実施するための形態】
【0009】
以下、発明を実施するための最良の形態を、図面に従って詳細に説明する。
【0010】
(走行装置の構成例)
図1は、実施形態にかかる走行装置1の構成の一例を示す図である。
【0011】
図1(a)は、本実施の形態にかかる走行装置1の外観斜視図である。
図1(b)は、実施形態にかかる走行装置1の前面図(
図1(a)のP矢視図)である。
図1(c)は、本実施形態にかかる走行装置1の側面図(
図1(a)のQ矢視図)である。
【0012】
なお、本明細書において、x方向は走行装置1の横幅方向を意味する。また、y方向は走行装置1の進行方向を意味し、z方向は走行装置1の高さ方向を示す。また、これらx,y,zで表される座標をロボット座標と呼ぶことがある。すなわち、ロボット座標は走行装置1を中心とする座標である。
【0013】
移動体としての走行装置1は、履帯式走行体11a,11bおよび本体10を有する。
【0014】
履帯式走行体11a,11bは、走行装置1の移動手段となるユニットである。また、履帯式走行体11a,11bは、金属またはゴム製のベルトを用いた履帯(クローラ)式の走行体である。
【0015】
履帯式の走行体は、自動車のようなタイヤで走行する走行体と比較して接地面積が広く、例えば、足場の悪い環境においても、安定した走行を行うことができる。また、タイヤで走行する走行体は、回転動作を行う際に旋回スペースを必要とするのに対して、履帯式の走行体を備えた走行装置は、いわゆる超信地旋回を行うことができるため、限られたスペースでも回転動作をスムーズに行うことができる。
【0016】
ここで、超信地旋回とは、左右の履帯を互いに逆方向に等速回転させることによって、車体の中心を軸としてその場で旋回することを指す。このような旋回方法は、スピンターン(spin turn)等とも呼ばれる。
【0017】
2つの履帯式走行体11a,11bは、本体10を挟んで、走行装置1が走行可能な状態で設置される。なお、履帯式走行体の数は、2つに限定されるものではなく、3つ以上であってもよい。例えば、走行装置1は、3つの履帯式走行体を平行に三列に整列させる等、走行装置1が走行可能な状態で設置されてもよい。また例えば、走行装置1は、4つの履帯式走行体を自動車のタイヤのように前後左右に配列させてもよい。
【0018】
履帯式走行体11(11a,11b)は、三角形の形状を有する。三角形の形状の履帯式走行体11によれば、例えば前後のサイズに制約がある場合、前後の限られたサイズの中で接地面積を大きくすることができる。これにより、上述のように、走行時の安定性を向上させることができる。一方で、下側(転輪側)よりも上側(駆動輪側)の方が長い、いわゆる戦車タイプの履帯は、前後のサイズに制約がある場合には全体的に接地面積が小さくなって不安定になる。このように、履帯式走行体11は、比較的に小型の走行装置1の走行性を高める場合に有効である。
【0019】
本体10は、履帯式走行体11a,11bを走行可能な状態で支持する支持体であるとともに、走行装置1を駆動させるための制御を行う制御装置である。また、本体10は、履帯式走行体11a,11bを駆動させるための電力を供給する図示しないバッテリを搭載する。
【0020】
走行装置1の本体10は、電源ボタン12、起動ボタン13、非常停止ボタン14、状態表示ランプ15、および蓋部16を備える。
【0021】
電源ボタン12は、走行装置1の周辺にいる人が、走行装置1の電源をオンまたはオフする際に押下する操作手段である。起動ボタン13は、走行装置1の周辺にいる人が、2つの履帯式走行体11a,11bをスタートさせる際に押下する操作手段である。非常停止ボタン14は、走行装置1の周辺にいる人が、走行中の走行装置1を停止させる際に押下する操作手段である。
【0022】
状態表示ランプ15は、走行装置1の状態を通知するための通知手段である。状態表示ランプ15は、例えば、バッテリ残量の低下等の走行装置1の状態が変化した場合、周囲の人に、走行装置1の状態変化を知らせるために点灯する。また、状態表示ランプ15は、例えば走行装置1の走行を妨げる障害物の存在等が検知された場合等、異常発生のおそれがある場合に点灯する。
【0023】
なお、
図1は、走行装置1に状態表示ランプ15が2つ備えられている例を示すが、状態表示ランプ15の数は、1つであってもよく、3つ以上であってもよい。また、通知手段は、状態表示ランプ15のみならず、スピーカから発せられる警告音等によって走行装置1の状態を通知する構成であってもよい。
【0024】
蓋部16は、本体10の上面に設けられ、本体10の内部を封止する。また、蓋部16は、本体10の内部の通気を行うための通気口を有する通気部16aを有する。
【0025】
走行装置1は、本体10の進行方向前面に、水平方向検知用の測距センサ112を備える。水平方向検知用の測距センサ112は、光による検知と2次元方向の測距を行う2D-LiDAR(Light Detection And Ranging)方式のセンサであり、MEMS(Micro Electro Mechanical Systems)方式や回転ミラー方式が有る。
【0026】
測距センサ112は、レーザ光を物体に照射し、物体に当たって跳ね返ってくるまでの時間の計測結果に基づいて、物体までの距離および物体が存在する方向を測定する。
【0027】
加えて、走行装置1は、本体10の進行方向前面に、斜め方向検知用の測距センサ113を備える。斜め方向検知用の測距センサ113もまた、2次元方向の測距が可能な2D-LiDAR方式のセンサであり、MEMS方式や回転ミラー方式が有る。測距センサ113は、水平な走行路面に対しては所定の傾斜角度を有して斜め下向きになるように、水平よりも下方に角度をつけて取り付けられる。
【0028】
測距センサ113は、レーザ光を路面障害物等の物体に照射し、物体に当たって跳ね返ってくるまでの時間の計測結果に基づいて、物体までの距離および物体が存在する方向を測定する。
【0029】
ところで、測距センサ113の設置位置には、履帯式走行体11a,11bの履帯の幅および長さによって、また、検知したい物体の大きさ、幅、深さ、高さによって、適正値がある。
【0030】
図2は、実施形態にかかる走行装置1の測距センサ113の設置例を示す図である。
図2(a)は、測距センサ113の設置角度および設置高さの例を示す図である。
図2(b)は、測距センサ113のレーザ照射範囲の一例を示す図である。
【0031】
図2(a)に示すように、測距センサ113は、例えば走行路面への照射角度が走行路面を基準として35度以上となるように設置される。また、測距センサ113は、走行路面を走行する駆動部材(駆動輪)である履帯式走行体11a,11bの走行方向の先端部から1m以上先を検知できるような高さに設置されている。
【0032】
ここで、測距センサ113は、測距センサ113前方のx方向を含む所定範囲に、レーザ照射を行うことができる。
図2(b)は、このようなレーザ照射範囲のうちxy平面またはxz平面の断面を切り取ったものである。
【0033】
図2(b)に示すように、測距センサ113のレーザ照射範囲は、測距センサ113前方のx方向を中心として、例えば270度の範囲に設定可能である。すなわち、測距センサ113は、x方向を90度として-45度以上+45度以下の範囲SG、つまり、180度±45度の範囲SGにレーザを照射することができる。
【0034】
なお、測距センサ113の走行路面に対する上述の照射角度は、測距センサ113の照射面に対して直角に照射されるレーザの照射角度である。つまり、測距センサ113は、照射面が走行路面に対して35度以上の傾斜角度となるよう、斜め下向きに設けられている。
【0035】
測距センサ113は、この270°の照射範囲において、例えば0.25°のステップ角でレーザ照射をするよう設定可能である。すなわち、測距センサ113は、270°の範囲内を1080ステップに分割する分解能で、レーザを照射することができる。
【0036】
また、測距センサ113のレーザ照射距離Lirは、例えば10m以上20m以下に設定可能である。
【0037】
なお、例えば走行装置1の高速走行ではより遠くが見たい、走行装置1の旋回時には足元が見たい、という要望がある。そこで、走行装置1の走行速度、路面障害物等の検知物体の大きさなどに応じて、測距センサ113のレーザ照射角度を適正化するようにしてもよい。
【0038】
測距センサ113としては、3次元方向の測距が可能な3D-LiDARを用いることができる。3D-LiDARとしては、レーザービームの走査方向と直交する方向に複数のレーザービームを照射して同時に複数の照射角の測距データを取得できるようにしたものや、MEMSミラーなどを用いてレーザービームを3次元の方向に走査して、3次元データを取得するものなどがある。3D-LiDARは、一度に3次元のデータを取得するため、2D-LiDARと比較して、ロボットの振動やチルト方向のブレによる走行路面の検知への悪影響が少ない。
【0039】
3D-LiDARの設置位置については、観測したい路面位置は変わらないため、2D-LiDARと同じような条件で設置すると良い。前方方向については1m以上前方の路面情報を得たいので、3D-LiDARは、レーザービームの照射位置を、1m以上前方を見ることができるような配置とする。また、3D-LiDARは、レーザービームの照射位置を、進行方向に対して上下の角度(チルト方向)についても1m先の路面が35°以上の角度でレーザービームを照射できるような配置とする。
【0040】
走行装置1は、上述の
図1に示した履帯式走行体11a,11bを備えることにより、走行路面に凹凸を有するような不整地においても安定して走行することができる。
【0041】
ただし、履帯式走行体11a,11bにおいては、不整地の走行路面の凹凸によって、履帯の一部が接地できずに浮いてしまうことがある。そのため、不整地を走行時に本体10が前後に揺れることに起因して、測距センサが検出する高さ位置が変化してしまう、という課題がある。
【0042】
加えて、走行時の振動で測距センサが誤動作する可能性がある、という課題がある。例えば、MEMS方式のようなミラー偏光タイプのセンサは振動に弱く、振動で停止する場合がある。
【0043】
そこで、実施形態においては、走行装置1は、慣性計測装置(IMU:Inertial Measurement Unit)を本体10に備える。IMUは、走行装置1の傾き量を検知する傾きセンサである。IMUの詳細構成については後述する。
【0044】
さらに、測距センサ113を、バネやゴムなどで支持した衝撃吸収構造の上に取り付けるようにしてもよい。また、IMUも、衝撃吸収構造の上に取り付けるようにしてもよい。これにより、測距センサ113の揺れを抑えることができるので、走行装置1の走行時の振動での誤動作を軽減することができる。
【0045】
なお、衝撃吸収構造をアクティブステアリング機構とした場合には、測距センサ113を水平に保つことも可能である。また、測距センサ113は、アームを介して本体10に設けられていてもよい。
【0046】
ところで上述のように、測距センサ113の走行路面に対する照射角度が直角に近くなるほど、走行装置1の進行方向であるx方向の分解能が高まり検知精度を高めることができる。したがって、照射角度がなるべく深くなるよう測距センサ113を設置することが好ましい。
【0047】
一方で、上記のように測距センサ113を設置すると、走行装置1の進行方向であるx方向にレーザ照射される距離が短くなり、走行装置1の進行方向における検知距離が短くなってしまうため、遠方まで検知することができなくなってしまう。
【0048】
測距センサ113による走行路面へのレーザの照射角度を浅くすれば遠方まで検知することができるが、走行装置1の振動による揺らぎ及びばらつきの影響が大きくなってしまう。また、照射角度が浅いと、下り坂を走行する場合等には走行路面への照射ができなくなってしまう可能性もある。
【0049】
そこで、測距センサ113の設置位置を高くすることで、同じ照射角度であっても遠方まで検知することが可能となり、上記のような課題を解決することができる。このように、測距センサ113の照射角度と設置高さとの双方が適正な値に調整されていることが好ましい。
【0050】
ここで、
図3を用いて、上記のように、測距センサ113の走行路面への照射角度を水平方向に対して35度以上とし、測距センサ113を履帯式走行体11a,11bの走行方向の先端部より1m以上先を検知できる高さとする設定位置の根拠について詳細に説明する。
【0051】
図3は、実施形態にかかる走行装置1が備える測距センサ113の設定位置の根拠について説明する図である。
図3(a)は、測距センサ113に必要とされる照射距離の根拠を説明する図である。
図3(b)は、測距センサ113の照射角度および高さ位置の設定根拠を説明する図である。
【0052】
測距センサ113の照射角度は、例えば走行装置1の速度、検知が必要な物体の大きさ等で適正化されていることが好ましい。
【0053】
図3(a)に示すように、走行装置1が接地長L及び幅Wの履帯式走行体11を備える場合、例えば長さL/2以下、または幅W/2以下の穴に転落する恐れは略ない。このため、制動距離LB、及び測距センサ113の検知距離LSの走行装置1が、前方の障害物に接触または転落することなく停止するためには、少なくとも検知距離LS>制動距離LB-L/2、より好ましくは検知距離LS>制動距離LBに設定すればよい。
【0054】
上記のように、検知距離LS>制動距離LBとなるよう、測距センサ113の検知距離LSを設定することで、走行装置1を安全に停止させることができる。ここで、走行装置1の制動距離LBが例えば0.60mである場合、走行装置1を安全に停止可能な検知距離LSを例えば1mなどとすることができる。
【0055】
図3(b)に示すように、測距センサ113の取り付け可能高さzとして、走行装置1のレイアウトに照らし、例えばz=0.4125mと、z=0.97mとの2点を想定することとする。また、このとき、走行装置1において最も進行方向側に突き出したバンパーの先端位置から1mの検知距離x
dが得られるように、測距センサ113の照射角度θを調整することとする。
【0056】
取り付け可能高さzを0.4125mとした場合、測距センサ113の取り付け角度、つまり、走行路面に対する照射角度θは20度となり、照射角度θの傾きaは、tanθ=tan20=0.36である。
【0057】
取り付け可能高さzを0.97mとした場合、測距センサ113の取り付け角度、つまり、走行路面に対する照射角度θは35度となり、照射角度θの傾きaは、tanθ=tan36=0.70である。
【0058】
走行路面に細かい凹凸がある場合、それぞれの取り付け可能高さzにおける傾きaの逆数で、測距センサ113の検知距離が変動して検知精度が低下してしまう。このことから、35度の深い角度を取ることができる取り付け可能高さz=0.97mを採用することとする。
【0059】
以上のことから、測距センサ113の走行路面への照射角度の適正値として、上述のように水平方向に対して35度以上の設定値を採用した。また、測距センサ113の検知距離の適正値として、測距センサ113を履帯式走行体11a,11bの走行方向の先端部より1m以上の設定値を採用した。また、測距センサ113の取り付け高さの適正値として、測距センサ113を履帯式走行体11a,11bの走行方向の先端部より1m以上先を検知できる0.97mを採用した。
【0060】
ここで、例えば特許文献1では、距離測定装置の検知距離を考慮したうえでの照射角度および設置高さの詳細について検討されていない。したがって、例えば特許文献1の技術では、距離測定装置から適正な検知結果を得ることができない。このため、移動体を安全に走行させることが困難となってしまう場合があると考えられる。
【0061】
なお、測距センサ113として3D-LiDARを用いる場合においても、上述の設置設計の考え方は変わらない。ビーム照射角35度以下は段差検知が難しいため、3D-LiDARは、35度以下のビームができる角度、かつ1m程度前方が検知できる高さで取り付ける。また、MEMSスキャン方式で円錐状のビーム照射範囲を持つ3D-LiDARを測距センサ113として用いる場合においては、中心から外れるほど検知幅が狭くなってしまう。そのため、測距センサ113として3D-LiDARを用いる場合においては、ビームの中心が照射角度35度、1m先を検知する位置になるように設置することが望ましい。
【0062】
(走行装置のハードウェア構成例)
次に、
図4を用いて、走行装置1のハードウェア構成の一例について説明する。
図4は、実施形態にかかる走行装置1のハードウェア構成の一例を示すブロック図である。
【0063】
図4に示すように、走行装置1は、CPU(Central Processing Unit)101、メモリ102、補助記憶装置103、カメラ111、測距センサ112,113、衛星測位システム114、IMU115、バッテリ121、モータドライバ122a,122b、走行用モータ132a,132b、ブレーキドライバ123a,123b、ブレーキ用モータ133a,133b、電源SW141、起動SW142、及び非常停止SW143を有する。
【0064】
CPU101は、走行装置1全体の制御を行う。CPU101は、メモリ102に記憶された走行プログラムに従って動作することにより、判定部および障害物マップを生成するマップ生成部として機能する。CPU101は、メモリ102に記憶された走行プログラムに従って動作することにより、マップ生成部が生成した障害物マップを用いて走行する。メモリ102は、CPU101により走行プログラム等を実行するための一時記憶領域である。補助記憶装置103は、CPU101により実行される走行プログラム等を格納する。
【0065】
走行装置1で実行される走行プログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0066】
また、走行装置1で実行される走行プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、走行装置1で実行される走行プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、走行装置1で実行される走行プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0067】
モータドライバ122(122a,122b)は、2つの履帯式走行体11a,11bにそれぞれ設けられた走行用モータ132(132a,132b)のドライバである。ブレーキドライバ123(123a,123b)は、2つの履帯式走行体11a,11bにそれぞれ設けられたブレーキ用モータ133(133a,133b)のドライバである。モータドライバ122及びブレーキドライバ123は、CPU101からのコマンドを受けて走行用モータ132及びブレーキ用モータ133をそれぞれ制御する。
【0068】
電源SW141は、走行装置1の電源をオンまたはオフするスイッチである。電源SW141は、上述の電源ボタン12(
図1参照)の押下と連動して作動する。起動SW142は、2つの履帯式走行体11a,11bをスタートさせるスイッチである。起動SW142は、上述の起動ボタン13(
図1参照)の押下と連動して作動する。非常停止SW143は、2つの履帯式走行体10a,10bを非常停止させるスイッチである。非常停止SW143は、上述の非常停止ボタン14(
図1参照)の押下と連動して作動する。
【0069】
カメラ111は、全天球カメラ、ステレオカメラ、赤外線カメラ等を含む。測距センサ112は、上述の通り、水平方向検知用のLiDAR方式のセンサである。測距センサ113は、上述の通り、斜め方向検知用のLiDAR方式のセンサである。
【0070】
衛星測位システム114は、衛星からの電波を受信して、その受信結果に基づいて、地球上における走行装置1の位置を測定する。衛星測位システム114は、RTK(Real Time Kinematic)-GNSS(Global Navigation Satellite System)を使用する。RTK-GNSSによる位置推定においては、RTK-GNSS測位における高精度測位解(Fix解)が得られているときは、数cmの精度を得ることができる。
【0071】
衛星測位システム114は、GNSS受信用の2つのアンテナを備える。衛星測位システム114は、2つのアンテナで得られた位置情報に一定距離以上のずれがあるときには、位置情報の信頼性(精度)が低くなっていると判断する。
【0072】
IMU115は、3軸の加速度センサ及び回転角速度センサなどを備える。走行装置1は、IMU115の計測データを用いて走行装置1の本体10の傾き量を検出して、測距センサ113によって測定された走行路面に対する高低差を、走行装置1の傾き量に基づき補正する。
【0073】
なお、IMU115は、測距センサ113の近傍に設けられていることが好ましい。測距センサ113がアームを介して本体10に設けられている場合には、IMU115はアームに設けられていることが好ましい。また、本実施形態においては、IMU115は、走行装置1の姿勢を推定する自己位置推定用のIMUを兼ねる。
【0074】
これにより、不整地を走行時に本体10が前後に揺れることに起因して、測距センサ113が検出する高さ位置が変化してしまう、という課題を解決することができる。
【0075】
判定部として機能するCPU101は、測距センサ113による1回の測定結果に走行路面に対する凹凸を示す特徴量が含まれており、測距センサ113による複数回(N回)の測定結果において、同じ場所に同じくらいの凹凸が測定された場合、つまり、これらの凹凸を類似する凹凸として、これらの類似する凹凸を示す特徴量が含まれている場合に、連続した障害物と判定する。
【0076】
また、マップ生成部として機能するCPU101は、所定の半径内に凹凸を示す特徴量が所定個数続いた場合に、凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいてカーブフィッティング予測を実施して、斜め方向検知用の測距センサ113によってスキャンしていない移動体の前方領域の障害物マップを生成する。
【0077】
続いて、走行装置1の自律走行にかかる動作について説明する。
【0078】
図5は、走行装置1の自律走行にかかる機能構成を示すブロック図である。
図5に示すように、走行装置1の自律走行においては、衛星測位システム114を用いた走行装置1の自己位置推定にかかる機能と、走行装置1の走行制御にかかる機能と、を含む。
【0079】
まず、走行装置1の自己位置推定について説明する。
【0080】
図5に示すように、走行装置1は、走行装置1の自己位置推定にかかる機能として、オドメトリ計算部151と、自己位置推定部152と、を備える。
【0081】
走行装置1の自己位置推定に関しては、上述のように衛星測位システム114を用いた高精度位置情報を利用するが、位置更新周期が200ms~1s程度とばらつきが大きい。そのため、オドメトリ計算部151は、2つの履帯式走行体11a,11bをそれぞれ駆動する走行用モータ132a,132bの回転角ωから走行装置1の自己位置を推定するオドメトリ計算を行う。走行用モータ132a,132bの回転角ωは、走行用モータ132a,132bのモータ駆動用のホールセンサパルスや、エンコーダ、タコメータなどの外部センサから得ることができる。
【0082】
自己位置推定部152は、自己位置推定結果(X,Y,θ)を出力する。より詳細には、自己位置推定部152は、オドメトリ計算部151で計算したオドメトリ情報を、RTK-GNSSを含む衛星測位システム114で得られた位置情報とIMU115で計測された姿勢変化とを用いて補正することで、安定した自己位置推定を行う。
【0083】
ところで、RTK-GNSSによる位置情報は、反射物などの影響で急に数十cm~数mずれることが有る。したがって、自己位置推定部152は、このような急な位置推定のずれにより不安定な動作をしないように、前述の2つのアンテナで取得された位置情報が一定以上ずれていない時には、上述したようなオドメトリ計算部151で計算したオドメトリ情報の補正を行う。一方、自己位置推定部152は、前述の2つのアンテナで取得された位置情報が一定以上ずれていたり、RTK-GNSS測位における高精度測位解(Fix解)が得られていなかったりする場合には、オドメトリ計算部151でのオドメトリの計算結果のみで自己位置推定を行う。
【0084】
次に、走行装置1の速度制御について説明する。
【0085】
図5に示すように、走行装置1は、走行装置1の速度制御にかかる機能として、グローバルプランナ部153と、ローカルプランナ部154と、障害物検知部155と、ステアリングコントロール部156と、を備える。
【0086】
グローバルプランナ部153は、スタート地点からゴールまでの大域的なプラニング(WPリスト)を行い、到達可能なWAYPOINT(WP(n))のシーケンスを出力する。WAYPOINTは、走行装置1の走行経路上の点の集合である。WAYPOINTは、位置(x,y,z)以外に方向および速度(Vmax)の情報を有している。
【0087】
ローカルプランナ部154は、グローバルプランナ部153から得られるWAYPOINT(WP(n))の情報を基にして、実際にWAYPOINTとWAYPOINTとを結ぶ経路を生成するとともに、目標方向(WPベクトル)を計算する。
【0088】
障害物検知部155は、測距センサ112,113による検知結果に基づいて、障害物検知を行う。障害物検知部155は、検知した障害物に応じて、ステアリングコントロール部156に対して、回避方向(θ)、速度指示(V)、停止指示(V)を出力する。障害物検知部155はまた、障害物検知の結果を用いて、走行装置1の走行路面の障害物マップを生成する。
【0089】
ステアリングコントロール部156は、走行装置1の速度,角速度を演算するとともに、ステアリング制御するための左右の履帯式走行体11a,11bの速度(VL,VR)を計算する。ステアリングコントロール部156は、左右の履帯式走行体11a,11bの速度(VL,VR)を、シリアルIF(Interface)157およびモータドライバ122a,122bに渡し、走行用モータ132a,132bを制御する。
【0090】
ここで、ステアリングコントロール部156の速度制御にかかる機能構成について説明する。
図6は、ステアリングコントロール部156の速度制御にかかる機能構成を示すブロック図である。
【0091】
左右の履帯式走行体11a,11bを独立駆動するクローラ型ロボットである走行装置1は、左右の履帯式走行体11a,11bの速度差によって旋回する。走行負荷の異なる様々な路面で安定した走行をするためには、負荷に依らず左右の履帯式走行体11a,11bを指定した速度で回転させる必要がある。
【0092】
このため、
図6に示すように、ステアリングコントロール部156は、ステアリングを制御するメジャーループと、左右それぞれの履帯式走行体11a,11bの速度を制御するマイナーループとに分けて、走行装置1の走行制御を実行する。
【0093】
図6に示すように、ステアリングコントロール部156は、位置PID(Proportional-Integral-Differential)161と、速度PID(Proportional-Integral-Differential)162a,162bと、速度演算部163a,163bと、を備える。
【0094】
位置PID161は、設定値と測定値との差分(位置偏差)から、ステアリング制御するための左右の履帯式走行体11a,11bの操作量を計算する。
【0095】
速度PID162a,162bは、速度偏差から操作量の変化分を求める。
【0096】
速度演算部163a,163bは、走行用モータ132a,132bに取り付けられたホールセンサの信号(モータパルス)に基づいて速度演算部163a,163bにてモータ速度の推定を行う。
【0097】
ステアリングコントロール部156は、メジャーループでは、走行用モータ132a,132bのモータパルスを用いたオドメトリ計算部151でのオドメトリの計算結果を、RTK-GNSSを含む衛星測位システム114で得られた位置情報とIMU115で計測された姿勢変化(θgps)および速度変化(Vgps)とを用いて自己位置推定部152で補正した自己位置推定結果と、目標地点への目標方向(θset)と目標位置(Pset)との差分(位置偏差)を計算する。
【0098】
より詳細には、ステアリングコントロール部156は、計算した差分(位置偏差)を位置PID161に出力する。
【0099】
位置PID161は、設定値と測定値との差分(位置偏差)から、ステアリング制御するための左右の履帯式走行体11a,11bの操作量VLset,VRset(指示速度Vおよび走行用モータ132a,132bの回転角ω)を計算する。
【0100】
走行装置1は、左右の履帯式走行体11a,11bをメジャーループからの操作量VLset,VRsetに従って制御されることで、安定した走行を実現することができる。
【0101】
加えて、ステアリングコントロール部156は、マイナーループでは、走行用モータ132a,132bに取り付けられたホールセンサの信号(モータパルス)に基づいて速度演算部163a,163bにてモータ速度の推定を行う。そして、ステアリングコントロール部156は、速度演算部163a,163bからの速度推定結果と目標速度との差分(速度偏差)に基づき、速度PID162a,162bにて走行用モータ132a,132bに対するモータ印加電圧を制御して、速度をフィードバック制御する。このようにマイナーループで速度をフィードバック制御するのは、走行用モータ132a,132bに対する外乱トルクによる速度変動を抑制するためである。
【0102】
(走行装置の障害物検知処理の例)
次に、
図7を用いて、走行装置1の自立走行の制御処理のうち、走行装置1の走行路面における路面障害物の検知について説明する。
図7は、実施形態にかかる走行装置1における路面障害物の検知処理の手順の一例を示すフローチャートである。なお、
図7に示す処理手順は、測距センサ113として2D-LiDARを用いる例である。
【0103】
図7に示すように、CPU101は、測距センサ116による走査を開始し(ステップS1)、照射角度フィルタ処理を実行する(ステップS2)。具体的には、CPU101は、ステップS2において、測距センサ113によって検出したスキャン方向-62~+62度のデータであって、横方向±3m以内のデータのみを抽出する。
【0104】
次いで、CPU101は、9点分のデータを用い、周辺画素値の大小比較を行って中央値(Median)の画素に変換して平滑化するメディアンフィルタ処理を実行する(ステップS3)。
【0105】
次に、CPU101は、測距センサ113のLaserscan型のデータを、走行装置1を中心とするロボット座標の点群データ(Point Cloud型データ)に変換する(ステップS4)。
【0106】
次に、CPU101は、全ての点に対して現在の点と5点先の点とがなす高さ方向の角度、つまり、yz平面における角度を計算し、段差・平面候補点抽出処理を実行する(ステップS5)。
【0107】
その後、CPU101は、抽出した段差候補点同士で距離クラスタリングを行う段差候補点クラスタリング処理を実行する(ステップS6)。
【0108】
その後、CPU101は、抽出した平面候補点同士で高さクラスタリングを行う平面候補点クラスタリング処理を実行する(ステップS7)。
【0109】
そして、CPU101は、平面候補クラスタ内で一番距離が長いものを地面スキャン面として検出する地面スキャン面検出処理を実行する(ステップS8)。
【0110】
また、CPU101は、検出した地面スキャン面の高さ、つまり、z方向の位置を平均して、地面の高さとして算出する地面スキャン面の高さ算出処理を実行する(ステップS9)。
【0111】
次いで、CPU101は、縁石検知処理を実行する(ステップS10)。
【0112】
次いで、CPU101は、溝検知処理を実行する(ステップS11)。
【0113】
次いで、CPU101は、検出履歴保存処理を実行する(ステップS12)。ここで、検出履歴保存処理を実行する理由について説明する。
図8は、検出履歴保存処理を実行する理由を示す図である。
図8に示すように、測距センサ113として2D-LiDARを用いる場合には一回のスキャンでは一つのスキャン面しか得られないため、連続した障害物の情報を得たい場合、一回のスキャンの結果(例えば、
図8に示すO
1)から検知した履歴を保存する必要があるからである。具体的には、CPU101は、検出した縁石・溝の検出データを補助記憶装置103に保存する。
【0114】
次いで、CPU101は、重複データ除去処理を実行する(ステップS13)。ここで、重複データ除去処理を実行する理由について説明する。
図9は、重複データ除去処理を実行する理由を示す図である。
図9に示すように、測距センサ113として2D-LiDARを用いる場合には、移動している物体(歩いている人の足等)(例えば、
図9に示すO
2)も連続した障害物として検知するため、検知履歴を保存したままだと移動している物体も連続する障害物としてデータがそのまま残ってしまう。この問題を解決するため、CPU101は、測距センサ112の検出データと同じxy位置にある障害物データを、“重複”するデータとして除去する処理を行う。具体的には、CPU101は、検出履歴保存用の領域に移動させた履歴データが、水平方向検知用の測距センサ112のxy座標におけるデータと近い場合は縁石・溝検出履歴データを除去する。
【0115】
最後に、CPU101は、縁石・溝検出履歴データのクラスタリング処理を行って、予測される障害物を特定する予測処理を実行する(ステップS14)。
【0116】
以上により、実施形態の走行装置1における路面障害物の検知処理が終了する。
【0117】
ここで、走行装置1の走行路面における路面障害物の検知の別の例について説明する。
【0118】
ここで、
図10は実施形態にかかる走行装置1における路面障害物の検知処理の手順の別の一例を示すフローチャートである。
図10に示す例は、測距センサ113として3D-LiDARを用いる場合における路面障害物の検知処理を示すものである。
【0119】
図10に示す測距センサ113として3D-LiDARを用いる場合における路面障害物の検知処理は、
図7に示す測距センサ113として2D-LiDARを用いる場合における路面障害物の検知処理と比べて、検出履歴保存処理(ステップS12)および重複データ除去処理(ステップS13)を省略した点で、異なっている。
【0120】
ここで、検出履歴保存処理を省略する理由について説明する。
図11は、検出履歴保存処理を省略する理由を示す図である。
図11に示すように、測距センサ113として3D-LiDARを用いる場合には、スキャン面が複数あるため、それぞれの面の検知結果を使用すれば連続した障害物データ(例えば、
図11に示すO
3)を得ることができるため、複数回のスキャンの結果から検知した履歴を保存する検出履歴保存処理が不要となるためである。
【0121】
次に、重複データ除去処理を省略する理由について説明する。
図12は、重複データ除去処理を省略する理由を示す図である。
図12に示すように、測距センサ113として3D-LiDARを用いる場合には、スキャン面が複数あるため、複数の面での障害物の検知が可能である。そのため、測距センサ113である3D-LiDARは、人の足などの移動障害物(例えば、
図12に示すO
4)も誤検知するが、リアルタイムのスキャンデータで検知アルゴリズムを実行するため、移動障害物がセンサの範囲外に出ると検知されなくなる。したがって、測距センサ113として3D-LiDARを用いる場合には、移動障害物を除去する重複データ除去処理が必要なくなる。
【0122】
図13は、実施形態にかかる走行装置1による検知例を示す図である。
図13に示すように、CPU101は、上述の縁石検知処理において、測距センサ113によって検出した高さ方向のエッジデータを「縁石」として検知する。また、CPU101は、上述の溝検知処理において、測距センサ113によって検出した走行路面の高さより低いデータを「溝」として検知する。
【0123】
(走行装置の障害物検知処理の詳細例)
次に、
図14~
図25を用いて、走行装置1における路面障害物の検知処理のうち、幾つかの処理の詳細例について説明する。
【0124】
図14は、実施形態にかかる走行装置1における段差・平面候補点抽出処理の手順の一例を示すフローチャートである。
図14に示す処理は、上述の
図7のステップS5および
図10のステップS5の処理の詳細例である。
【0125】
図14に示すように、段差・平面候補点抽出処理において、CPU101は、上述の
図7のステップS4および
図10のステップS4の処理で得られた、ロボット座標に変換済みの点群データを用いる(ステップS151)。
【0126】
次に、CPU101は、ループL15s~L15e内のステップS152~S155の処理を繰り返し、全ての点群データについて段差・平面候補点抽出処理を行う。
【0127】
ループL15s~L15eにおいて、CPU101は、1つの点群データに対し、現在の点と5点先の点とがなす高さ方向の角度、つまり、yz平面における角度を計算する(ステップS152)。
【0128】
そして、CPU101は、高さ方向の角度が40度以上であれば(ステップS153:Yes)、その点群データを段差候補として抽出する(ステップS154)。一方、CPU101は、高さ方向の角度が40度未満であれば(ステップS153:No)、その点群データを平面候補として抽出する(ステップS155)。
【0129】
全ての点群データについて、これらのステップS152~S155の処理を繰り返すことで、CPU101は、段差候補点抽出点群データおよび平面候補点抽出点群データを生成する(ステップS156,S157)。
【0130】
以上により、実施形態の走行装置1における段差・平面候補点抽出処理が終了する。
【0131】
図15は、実施形態にかかる走行装置1における段差候補点クラスタリング処理の手順の一例を示すフローチャートである。
図15に示す処理は、上述の
図7のステップS6および
図10のステップS6の処理の詳細例である。
【0132】
図15に示すように、段差候補点クラスタリング処理において、CPU101は、上述の
図13のステップS156の処理で得られた、段差候補点抽出点群データを用いる(ステップS161)。
【0133】
次に、CPU101は、ループL16s~L16e内のステップS162~S165の処理を繰り返し、全ての段差候補点抽出点群データについて段差候補点クラスタリング処理を行う。
【0134】
ループL16s~L16eにおいて、CPU101は、1つの段差候補点抽出点群データに対し、その段差候補点抽出点群データが表す点と次の点との距離を計算する(ステップS162)。
【0135】
そして、CPU101は、対象の点から次の点までの距離が半径0.1m以内であれば(ステップS163:Yes)、それらの点は同一クラスタであると判定する(ステップS164)。一方、CPU101は、対象の点から次の点までの距離が半径0.1mを超えていれば(ステップS163:No)、それらの点は別のクラスタであると判定する(ステップS165)。
【0136】
全ての段差候補点抽出点群データについて、これらのステップS162~S165の処理を繰り返すことで、CPU101は、段差候補クラスタデータを生成する(ステップS166)。
【0137】
以上により、実施形態の走行装置1における段差候補点クラスタリング処理が終了する。
【0138】
図16は、実施形態にかかる走行装置1における平面候補点クラスタリング処理の手順の一例を示すフローチャートである。
図16に示す処理は、上述の
図7のステップS7および
図10のステップS7の処理の詳細例である。
【0139】
図16に示すように、平面候補点クラスタリング処理において、CPU101は、上述の
図14のステップS157の処理で得られた、平面候補点抽出点群データを用いる(ステップS171)。
【0140】
次に、CPU101は、ループL17s~L17e内のステップS172~S175の処理を繰り返し、全ての平面候補点抽出点群データについて平面候補点クラスタリング処理を行う。
【0141】
ループL17s~L17eにおいて、CPU101は、1つの平面候補点抽出点群データに対し、その平面候補点抽出点群データが表す点から3点先までの高さを計算する(ステップS172)。
【0142】
そして、CPU101は、対象の点から3点先までの高さが0.03m以内であれば(ステップS173:Yes)、それらの点は同一クラスタであると判定する(ステップS174)。一方、CPU101は、対象の点から3点先までの高さが0.03mを超えていれば(ステップS173:No)、それらの点は別のクラスタであると判定する(ステップS175)。
【0143】
全ての段差候補点抽出点群データについて、これらのステップS172~S175の処理を繰り返すことで、CPU101は、平面候補クラスタデータを生成する(ステップS176)。
【0144】
以上により、実施形態の走行装置1における平面候補点クラスタリング処理が終了する。
【0145】
図17は、実施形態にかかる走行装置1における縁石検出処理の手順の一例を示すフローチャートである。
図17に示す処理は、上述の
図7のステップS10および
図10のステップS10の処理の詳細例である。
【0146】
図17に示すように、縁石検出処理において、CPU101は、上述の
図15のステップS166の処理で得られた、段差候補クラスタデータを用いる(ステップS101)。
【0147】
次に、CPU101は、ループL10s~L10e内のステップS102~S107の処理を繰り返し、全ての段差候補クラスタデータについて縁石検出処理を行う。
【0148】
ループL10s~L10eにおいて、CPU101は、1つの段差候補クラスタデータについて、その段差候補クラスタデータ内で高さが最大値z1を示すデータを抽出する(ステップS102)。
【0149】
そして、CPU101は、その段差候補クラスタデータ中で最高点のz1と、地面スキャン面のzとの差分を計算する(ステップS103)。具体的には、CPU101は、最高点の段差候補クラスタの地面との高さを、式(クラスタ最高点のz-地面スキャン面のz)を用いて計算する。
【0150】
次に、CPU101は、最高点の段差候補クラスタの地面との高さが0.05m以上0.3m以内であれば(ステップS104:Yes)、その段差候補クラスタが縁石であると判定し(ステップS105)、縁石の障害物としてメモリ102に格納する(ステップS106)。一方、CPU101は、最高点の段差候補クラスタの地面との高さが0.05m以上0.3m以内の範囲を外れていれば(ステップS104:No)、その段差候補クラスタが縁石ではないと判定する(ステップS107)。
【0151】
全ての段差候補クラスタデータについて、これらのステップS102~S107の処理を繰り返すことで、CPU101は、縁石として検出されたデータ群である縁石検出データを生成する(ステップS108)。
【0152】
以上により、実施形態の走行装置1における縁石検出処理が終了する。
【0153】
CPU101が、縁石検出処理で得られた各々の縁石検出データが示す座標をプロットしていくことで、所定の方向に延びる縁石を把握することができる。
図18に、CPU101がプロットした縁石検出データの一例を示す。
【0154】
図18は、実施形態にかかる走行装置1における縁石検出処理で得られる縁石検出データのプロット例を示す図である。
【0155】
図18に示すように、縁石を示すと判定された複数の点群データをプロットしていくことで、所定の方向に延びる縁石のプロットが得られる。つまり、上述のように、測距センサ113による複数回(N回)の測定結果に類似する凹凸を示す特徴量が含まれていた場合に、これらをクラスタリングし、縁石検出データとして保持することで、連続した縁石等の障害物を検出することができる。
【0156】
図19は、実施形態にかかる走行装置1における溝検出処理の手順の一例を示すフローチャートである。
図19に示す処理は、上述の
図7のステップS11および
図10のステップS11の処理の詳細例である。
【0157】
図19に示すように、溝検出処理において、CPU101は、上述の
図7のステップS4および
図10のステップS4の処理で得られた、ロボット座標に変換済みの点群データを用いる(ステップS111)。
【0158】
次に、CPU101は、これらの点群データから地面スキャン面と判定されたデータを除去する(ステップS112)。
【0159】
次に、CPU101は、ループL11s~L11e内のステップS113~S117の処理を繰り返し、全ての点群データについて溝検出処理を行う。
【0160】
ループL11s~L11eにおいて、CPU101は、地面スキャン面のデータを除去した点群データのうち、1つの点群データと地面スキャン面との高さを計算する(ステップS113)。具体的には、CPU101は、点群データと地面スキャン面との高さを、式(地面スキャン面のz-各点のz)を用いて計算する。
【0161】
次に、CPU101は、計算した高さが-0.05m以下であれば(ステップS114:Yes)、その点群データが溝であると判定し(ステップS115)、検出された点の方向と地面の高さとの交点を障害物としてメモリ102に格納する(ステップS116)。一方、CPU101は、計算した高さが-0.05mを超えていれば(ステップS114:No)、その点群データが溝ではないと判定する(ステップS117)。
【0162】
全ての点群データについて、これらのステップS113~S117の処理を繰り返すことで、CPU101は、縁石として検出されたデータ群である溝検出データを生成する(ステップS118)。
【0163】
以上により、実施形態の走行装置1における溝検出処理が終了する。
【0164】
CPU101が、溝検出処理で得られた各々の溝検出データが示す座標をプロットしていくことで、所定の方向に延びる溝を把握することができる。
図20に、CPU101が検出した溝検出データ、及びそれらのプロットの一例を示す。
【0165】
図20は、実施形態にかかる走行装置1における溝検出処理で得られる溝検出データのプロット例を示す図である。
図20(a)は、上述の
図19のステップS116の処理を詳細に説明する図である。
図20(b)は、走行装置1が、複数の溝検出データをプロットした例を示す。
【0166】
図20(a)に示すように、CPU101は、1の点群データが溝であると判定した場合、上述の
図19のステップS116の処理において、その点群データが示す座標P(x,y,z)から、その点群データが示す方向と地面の高さとの交点P’(x
p,y
p,z
p)を計算する。
【0167】
交点P’の座標xpは、以下の式から求めることができる。
【0168】
xp=x×(z113)/|z|
【0169】
上記の式において、距離z113は、測距センサ113から地面スキャン面までの高さである。距離zは、測距センサ113の高さ位置と、座標P(x,y,z)のz座標が示す高さ位置との差である。
【0170】
交点P’の座標zpは、地面スキャン面の高さ位置が示すz座標である。交点P’の座標ypは、測距センサ113の位置を示す座標と座標P(x,y,z)とを結ぶ線分上であって、座標zpの高さ位置にあるy座標である。
【0171】
これにより、CPU101は、上記の点群データが示す方向と地面の高さとの交点P’ (xp,yp,zp)を計算することができる。
【0172】
図20(b)に示すように、溝を示すと判定された複数の点群データをプロットしていくことで、所定の方向に延びる溝のプロットが得られる。つまり、上述のように、測距センサ113による複数回(N回)の測定結果に類似する凹凸を示す特徴量が含まれていた場合に、これらをクラスタリングし、溝検出データとして保持することで、連続した溝等の障害物を検出することができる。
【0173】
図21は、実施形態にかかる走行装置1における縁石・溝検出履歴データ生成・保存処理の手順の一例を示すフローチャートである。
図21に示す処理は、上述の
図7のステップS12,S13の処理の詳細例である。
【0174】
図21に示すように、検出履歴保存処理において、CPU101は、上述の
図17のステップS108の処理で得られた縁石検出データ、及び上述の
図19のステップS118の処理で得られた溝検出データを対象とする(ステップS121)。
【0175】
CPU101は、検出履歴保存処理を実行する(ステップS122)。具体的には、CPU101は、オドメトリ(odometry)を用いて、実空間でのロボットの移動量・移動方向を算出し、算出した移動量・移動方向の分、ロボット座標においてこれらの検出データを移動させ、ロボット座標原点から半径2m以内にある検出データを補助記憶装置103内の検出履歴保存用の領域に移動させて保存する。
【0176】
ここで、オドメトリとは、車輪型移動ロボットにおける車輪やステアリングの回転角度の計算から、それぞれの移動量を求め、その累積計算からロボットの位置を推定する手法であり、自己位置姿勢推定法などと呼ばれる。
【0177】
次に、CPU101は、重複データ除去処理を実行する(ステップS123)。具体的には、CPU101は、検出履歴保存用の領域に移動させた履歴データと、水平方向検知用の測距センサ112のxy座標におけるデータとを照らし合わせ、移動させた履歴データが例えば、0.3m以内等と、測距センサ112のデータと近い場合は、移動させた縁石・溝検出履歴データを除去する。
【0178】
これらの処理により、CPU101は、縁石・溝検出履歴データを生成して保存する(ステップS124)。
【0179】
以上により、実施形態の走行装置1における縁石・溝検出履歴データ生成・保存処理が終了する。
【0180】
ところで、例えば特許文献1の技術によれば、走行路面の路面障害物を早く見つけるためになるべく前方をスキャンしたいが、足元の穴や段差などの路面障害物の検知ができず、旋回した場合に路面障害物に当たる可能性がある、という課題がある。
【0181】
実施形態の走行装置1が備えるCPU101は、ノイズ及び小さな穴等を路面障害物として検知しないように、上述のように、一定期間のデータを保存し、あるいは所定の距離分のデータを保存して、連続的な障害物や穴の大きさを判定して直線状の路面障害物と認識することで、走行路面の縁石、側溝などの溝、アスファルト剥げなどの穴等の路面障害物と判定する。
【0182】
図22は、実施形態にかかる走行装置1が過去のスキャン結果を参照して移動方向を変更する例を示す図である。
【0183】
図22に示すように、CPU101は、測距センサ113で検知した1スキャンの走行路面の障害物の情報を、一定時間あるいは所定の距離分蓄積し、連続したポイントを1つの障害物として認識させる。これにより、部分的に遮蔽物が有る場合においても通過できない障害物が有ると判定する。
図22に示す例によれば、過去のスキャン結果から走行装置1が左旋回しようとすると穴があることがわかる。
【0184】
上述のようにスキャン結果を一定時間、あるいは所定の距離分を保存しておくことにより、移動方向を変える際に、障害物が無いかを判定することができる。
【0185】
また、例えば特許文献1の技術によれば、穴および段差などの障害物が草などによって隠されることで、穴が小さく見えたりするなど、穴および段差などの障害物が部分的に見えない場合がある。このように、走行路面と同じ高さの草で覆われている場合、走行路面が連続しているように見えてしまう、という課題がある。
【0186】
実施形態の走行装置1が備えるCPU101は、上述のように、測距センサ113で検知した判定エリア内に特定の特徴量が含まれる場合に、連続した穴および段差などの障害物の大きさを認識する。
【0187】
図23は、実施形態にかかる走行装置1による遮蔽物に対する対応例を示す図である。
【0188】
図23に示すように、例えば側溝のふたが開いているときに、草が側溝を覆ってしまうことがある。ここで、特定の特徴量として下記の3つの特徴量を適用するものとする。
【0189】
特徴量1:凹凸を示す特徴量が連続している
特徴量2:凹みの深さ
特徴量3:凹みの最大幅
【0190】
上記の3つの特徴量のうち、特徴量1は、特徴量が例えば直線状の凹み等である場合を指す。
【0191】
CPU101は、草などの遮蔽物によって部分的に側溝が隠されている場合にも、直線状の凹みであって、所定以上の深さがある凹みであれば、判定エリア内の凹みの最大幅が所定の長さで連続しているとみなす。
【0192】
図24は、実施形態にかかる走行装置1における予測処理の手順の一例を示すフローチャートである。
図24に示す処理は、上述の
図7のステップS14および
図10のステップS14の処理の詳細例である。
【0193】
図24に示すように、CPU101は、まず、縁石・溝検出履歴データを取得し(ステップS141)、半径0.1m以内に他の点があればその点は同一クラスタとする、縁石・溝検出履歴データクラスタリング処理を実行する(ステップS142)。
【0194】
次に、CPU101は、クラスタの点数が10個以上であれば(ステップS143:Yes)、クラスタ内データを用いた4次以上の多項式近似によるカーブフィッティング処理を実行する(ステップS144)。ここで、カーブフィッティングとは、曲線あてはめとも呼ばれ、実験的に得られたデータまたは制約条件に最もよく当てはまるような曲線を求めることである。
【0195】
そして、CPU101は、カーブフィッティング結果から最新検出結果より14点先まで、つまり、1m先までを障害物として抽出する予測障害物データ抽出処理を実行する(ステップS145)。
【0196】
より詳細には、CPU101は、所定の半径内に穴および段差などの凹凸を示す特徴量が所定個数続いた場合に、凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいてカーブフィッティング予測を実施して、測距センサ113によってスキャンしていない走行装置1の前方領域の障害物マップを生成する。
【0197】
一方、CPU101は、クラスタの点数が10個未満であれば(ステップS143:No)、そのまま処理を終了する。
【0198】
以上により、実施形態の走行装置1における予測処理が終了する。
【0199】
ここで、例えば特許文献1の技術によれば、測距センサ113のレーザ照射ラインである検知ラインより前方の穴および段差などの障害物を検知することができない、という課題がある。
【0200】
実施形態の走行装置1が備えるCPU101は、連続した特徴のある障害物を検知した場合に、上述のように、未検知のエリアにもその障害物が連続して存在しているものとみなして判定エリアを延長する。すなわち、CPU101は、検知していない未検知のエリアも、判定エリアに含める。これにより、CPU101は、連続性のあるデータに基づいて、前方の障害物を予測する。
【0201】
図25は、実施形態にかかる走行装置1が検知ラインDLより前方の障害物の予測をした例を示す図である。
【0202】
図25に示す例では、WP1からWP2に至る走行装置1の進行方向に、高さのある障害物OBhが存在し、かつ、走行装置1の走行路面の側方には側溝または縁石といった障害物OBsが存在する。また、障害物OBsは、WP1からWP2に至る走行装置1の進行方向において、障害物OBhに対して徐々に近づくように設けられている。
【0203】
図25(a)に示すように、比較例の走行装置2においては、走行装置2の斜め方向検知用の測距センサ223は、検知ラインDL2より前方を検知することができない。また、走行装置2は、障害物を回避する回避方向として、なるべく直線に近い経路を選択する。この場合、走行装置2は、矢印aの方向に進むことになる。しかし、進行方向の未検知の判定エリアには障害物OBsが存在するため、障害物OBsに対する回避および停止が間に合わなくなってしまう。
【0204】
図25(b)に示すように、実施形態の走行装置1においては、直線状に連続した障害物の場合、検知ラインDLより前方にも連続していると予測して、障害物を延長する。これにより、走行装置1は、障害物を回避する回避方向として、障害物OBhと障害物OBsとの間は通過することができないと判断し、障害物OBsが存在する側とは反対方向である矢印Aの方向への回避ルートを選択する。
【0205】
なお、CPU101は、画像と組み合わせて、画像上で連続性が有ることで上記判定を行うようにしてもよい。また、CPU101は、障害物が有りそうなエリアにおいては、測距センサ113の検出感度を変えるようにしてもよい。
【0206】
このように実施形態の走行装置1によれば、穴および段差などの障害物が連続していそうな場合には連続した障害物として認識させることで、移動体を障害物に衝突させずに安全に走行させることができる。
【0207】
なお、実施形態の走行装置1によれば、走行路面の路肩の側溝や縁石を検知することで、路肩からの距離を一定にする走行制御ができるという、副次効果を得ることができる。
【0208】
以上、実施形態について説明したが、その各部の具体的な構成、処理の内容等は、実施形態で説明したものに限るものではない。
【0209】
本発明の態様は、例えば、以下のとおりである。
<1>
移動領域の障害物マップに基づき走行路面を走行する移動体であって、
前記移動体の進行方向前面に配置され、かつ、前記走行路面に対して所定の傾斜角度を有して斜め下向きに設けられた測距センサと、
前記測距センサによる1回の測定結果に前記走行路面に対する凹凸を示す特徴量が含まれており、前記測距センサによる複数回の測定結果に類似する前記凹凸を示す特徴量が含まれている場合に、連続した障害物と判定する判定部と、
前記凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいて、前記測距センサによってスキャンしていない前記移動体の前方領域の障害物マップを生成するマップ生成部と、を備える、
移動体。
<2>
前記判定部は、
前記凹凸を示す特徴量が連続した長さで続いている場合、前記凹凸に関する他の所定の特徴量が所定の長さで連続しているとみなす、
<1>に記載の移動体。
<3>
前記マップ生成部は、
カーブフィッティング予測を実施して、前記移動体の前記前方領域の前記障害物マップを生成する、
<1>または<2>に記載の移動体。
<4>
前記移動体の傾き量を検知する傾きセンサをさらに備え、
前記判定部は、
前記測距センサによって測定された前記走行路面に対する高低差を、前記傾き量に基づき補正する、
<1>乃至<3>のいずれかに記載の移動体。
<5>
前記測距センサは、
前記走行路面に対する前記傾斜角度が水平方向に対して35度以上であり、
前記走行路面を走行する駆動部材の走行方向の先端部より1m以上先を検知できる高さに設置されている、
<1>乃至<4>のいずれかに記載の移動体。
<6>
前記測距センサは、2次元方向の測距が可能な2D-LiDAR(Light Detection And Ranging)である、
<1>に記載の移動体。
<7>
前記測距センサは、3次元方向の測距が可能な3D-LiDAR(Light Detection And Ranging)である、
<1>に記載の移動体。
<8>
走行路面に対して所定の傾斜角度を有して斜め下向きに設けられ、前記走行路面に対する高低差を非接触で測定する測距センサを、進行方向前面に備える移動体を制御するコンピュータを、
前記測距センサによる1回の測定結果に前記走行路面に対する凹凸を示す特徴量が含まれており、前記測距センサによる複数回の測定結果に類似する前記凹凸を示す特徴量が含まれている場合に、連続した障害物と判定させ、
前記凹凸を示す特徴量が所定個数続いたことを示す連続情報に基づいて、前記測距センサによってスキャンしていない前記移動体の前方領域の障害物マップを作成させる、
ことを特徴とするプログラム。
【符号の説明】
【0210】
1 走行装置
10 本体
11 履帯式走行体
101 CPU
112,113 測距センサ
【先行技術文献】
【特許文献】
【0211】