複数移動体の安全走行のための移動体間の連携・協調に関する研究

PDF
久保田 芙衣
名古屋大学 工学部 電気電子・情報工学科

概要

研究の背景・目的

筆者が所属する研究室では、図[am]のように、個人用知的移動体ATと呼ばれる、自動走行可能な個人用の乗り物や、同様に自律走行可能な無人移動体MUVの研究・開発を行っている。これらの移動体は、搭乗者や移動体自身を取り巻く環境に適応することで、搭乗者の安全な移動を支援するものである。

将来的に、このような知的な移動体が複数台、同時に稼働している環境が実現されると思われる。ここで重要となるのは、自由に移動する複数の移動体同士が衝突せず、安全に走行できることである。そこで本研究では、このような安全な走行を実現するために、移動体同士が連携的、または協調的な行動をとるための手法を提案する。本研究は、環境中の全移動体が安全に走行できることを目標とするため、個人の技能に大きく影響される搭乗者の操縦による走行ではなく、すべての移動体が自動走行することを前提とする。本研究では、連携的な行動として追従走行を、協調的な行動として、道を譲るという行為を伴う十字路における走行について考察した。また、移動体の位置や走行速度等の情報を一括して管理することのできる位置情報サーバーを用いて、移動体間の情報共有を実現した。

AT(右・中)、MUV(左)

図1: AT(右・中)、MUV(左)

2台の移動体による追従走行

一つの経路を2台の移動体がほぼ同時に走行しなければならない場合、先に経路を通る移動体(マスターと呼ぶ)、後に経路を通る移動体(スレーブと呼ぶ)という順序が必要になり、追従走行をする必要がある。前後の移動体はそれぞれの存在を認識しているため、マスターがスレーブに自分が取得した情報を送信し、スレーブはそれを基に走行することにより、安全に走行しやすくなると考える。スレーブは、スレーブの現在地から最短距離にあるマスターの経路の一点までの経路に、その一点からのマスターの経路を加えた経路を走行する。また、スレーブが速度を調節することにより、移動体間の距離を調整する。

2台の移動体による十字路走行

交差点の交通事故が多発していることを考慮し、十字路において一方の移動体が他方に道を譲るという問題に取り組んだ。この際、走行開始前に2台の移動体の走行経路、速度、および交差点への進入予想時刻から、2台に対して優先順位を設定し、その順位に基づいてそれぞれの速度調節や経路変更を行う。2台の経路が交差する時や、図[cex]に示すように、一方の移動体に向かっていくような走行をしない時は、速度調節をするだけで2台の衝突を回避することができる。一方、お互いに向かっていくように走行する時は、速度調節をしても衝突してしまうため、衝突しないように経路を変更することですれ違いをスムーズに行うことができる。

十字路での各移動体の走行経路の例

図2: 十字路での各移動体の走行経路の例

実機による動作確認

追従走行では、ATをマスター、MUVをスレーブする場合の実験を行った。また、十字路走行では、2台のATを用いて実験を行った。移動体同士が衝突した場合や目的地に到着する前に停止した場合を失敗とし、成功率(成功した回数/試行回数)を計算した。実験の結果、どちらの走行においても、成功率は約80\%であった。このことから、本研究の手法により、想定した環境で移動体同士が衝突することなく、安全に走行する可能性を高めることができたと思われる。

1 はじめに

近年、日本のみならず、世界中でパーソナルモビリティの研究・開発が盛んになっている。

パーソナルモビリティとは、自動車より小型の1人用の移動機器の総称である。これは、身体的にハンディキャップのある人を含む多くの人を支援することができるため、開発が盛んになっている。具体的なパーソナルモビリティの例としては、セグウェイ [http://www.segway.com/] や、トヨタ自動車の i-unit [http://www.toyota.co.jp/jpn/tech/personal_mobility/i-real.html]、本田技研工業の U3-X [http://www.honda.co.jp/robotics/u3x/] 等が挙げられる。

筆者が所属する研究室においても、個人用知的移動体 AT (Attentive Townvehicle) と呼ばれるパーソナルモビリティの研究・開発を行っている。

自動車や電車といった他の移動体と異なり、情報処理の機能を有しているパーソナルモビリティは、搭乗者である個人の技術や能力等に適応することにより安全に走行することが望まれている。AT も同様に、搭乗者である人間や、AT を取り巻く環境に適応することで搭乗者を支援し、安全に走行することを可能とする知的な移動体である。

筆者が所属する研究室では、個人の移動に関する高度な支援手法に着目し、搭乗型コンピューティングのコンセプトに基づき、個人の移動を支援する仕組みとして AT の研究を行っている([1])。搭乗型コンピューティングとは、乗り物に情報処理機能や通信機能を持たせることで情報処理と移動や運搬などの物理行動を同時に支援することである。たとえば AT は、搭乗者自身が操縦しなくとも搭乗者の行きたい場所まで自動で走行することや、他の移動体との通信によって協調的に動作することが可能である。

この自動走行は、搭乗者が目的地を指定することで、その位置まで自動的に走行するというものである。これは屋内自動トランスポーテーション(Indoor Automatic Transportation)と呼ばれ、あらかじめ作成した屋内の地図情報を基に、搭乗者が目的地を指定すると AT がその目的地までの経路を決定し、自動的に移動する。搭乗者は AT の操作をする必要がないため、移動中の時間を他の作業に使うことができ、また、過度に操作に集中することによって起きる事故を防ぐこともできる。

また、AT は自動走行するだけではなく、指をさすという搭乗者の動作によって行きたい場所を決定したり、手を振ることによって他の移動体を呼んだりといったジェスチャによる操作[2]や、タッチパネル式のコンソールを通し、移動体を取り巻く環境の3次元の地図や周囲の詳細な情報を提示したりする[3]ことのできる移動体である。

また、筆者が所属する研究室では、無人で走行可能な移動体の研究・開発も行っている。これを無人移動体 MUV と呼ぶこととする。次章で詳細を述べるが、MUV は AT と同様に自動走行が可能であり、AT より前を走行することにより AT が安全に走行するための情報を先に入手したり、AT の搭乗者の荷物を運んだりといった役割を担っている。

以上で説明した自動走行可能である移動体が複数台、同時に稼働している環境は将来的に実現する可能性は高いと考えられる。そのため、ここで重要となるのは、自由に移動する複数の移動体同士が衝突せず、安全に走行できることである。

このような環境での安全な走行を実現するため、本研究では、移動体間において連携的、または協調的な行動をとるための手法を提案する。本研究は、環境中の全移動体が安全に走行できることを目標とするため、個人の技能に大きく影響され、個人差が生じる搭乗者の操縦による走行ではなく、移動体の自動走行を前提とする。自動走行の場合、各移動体の目的地までの移動経路は移動体間で共有できる。この移動経路は、後述する手法によって動的に変更されることもある。

また、研究対象である AT は現在、屋内でのみ自動走行が可能であるため、本研究が想定する環境は屋内に限定し、屋内であるため左側通行という概念や信号機の存在もないものとする。さらに問題を単純化するため、移動体が2台の場合を想定する。

過去において、自律分散型モバイルロボットの衝突回避に関する研究が行われた[4]。4.2 節で詳しく説明するが、この研究では衝突を回避する方法は一時停止であり、あまり効率の良いものとは言えないと思われる。また、本研究が信号機の存在がないことを想定しているため、本研究では、文献[4]のように一時停止しなくても衝突を回避することができるのではないかと考え、そのような手法を提案する。

ここで、連携的または協調的な行動について詳しく述べる。

連携的な行動の具体例としては、他の移動体に対する情報提供や追従走行などがある。

情報提供は、通路上の障害物や混雑などの問題を認識した移動体による他の移動体への通知や、事故に巻き込まれた移動体がいた場合、他の移動体が巻き込まれることを防ぐための警告などである。

また、複数の移動体の移動経路・走行時間帯に重なりがある場合、つまり一つの経路を複数の移動体がほぼ同時に通らなければいけない場合、先に経路を通る移動体、後に経路を通る移動体という順序が必要になり、後者が前者を追いかけるように走行する追従走行を行う必要がある。一般的に自転車の横並びでの走行が危険であると言われているように、移動体においても横並びでの走行は避けた方が良いと考えられるため、前後に並ぶ必要があるために追従走行を行う。前後の移動体はそれぞれの存在を認識しているため、前を走行する移動体が後ろを走行する移動体に自分が取得した情報を送信し、後ろの移動体はそれを基に走行することにより、安全に走行しやすくなると考えられる。また、移動体間の距離が小さすぎると衝突事故の原因となり、大きすぎると間に他の移動障害物が侵入して事故を引き起こす原因となると考えられるため、移動体間の距離を調整しつつ走行する。

以上のような連携的な行動をとることにより、安全に走行できると考える。

次に協調的な行動の具体例としては、交渉や道を譲る行為などがある。

交渉は、相手の望む条件と自分の望む条件から、お互いの利害を一致させる条件を作り出した上で、走行することである。道を譲る行為は、他の移動体との衝突が予想されるような移動をする移動体がいた場合、他の移動体を優先するように走行し、衝突しないようにすることである。

本研究においては、交差点が日本の道路形状別死亡事故発生件数の全体の約半数を占めている[http://www8.cao.go.jp/koutu/taisaku/h24kou_haku/pdf/zenbun/gen1_1_1_02.pdf]ことを考慮し、交差点の中でも十字路に限定し、十字路において一方の移動体が他方に道を譲るという問題を取り扱う。十字路は交差点の中でもいくつかの特徴を有している。たとえば、死角となる曲がり角が多いこと、複数方向の交通が多く重なること等がある。また、信号機がないという制約下で安全に走行するため、道を譲るという行為が重要となる。

以上のように、本研究における連携的な行動では追従走行に着目し、協調的な行動では十字路において道を譲る行為を伴う走行に着目する。これらの問題を取り扱う上で重要となるのは、情報の共有である。そこで本研究においては、移動体の位置や走行速度等の情報を一括して管理することのできる位置情報サーバーを開発し、移動体間において情報を共有する手法をとる。

最後に、本章以降の本論文の構成について述べる。まず第2章において、個人用知的移動体 AT と無人移動体について、そのコンセプトと機能について詳しく述べる。次に第3章において、本研究で提案する具体的な手法として、位置情報サーバーを用いた移動体間の連携的な行動や協調的な行動について詳しく述べる。ここでは実際に、提案手法によって移動体がどのような動きをするか確認するため、実機(AT と無人移動体)による動作確認を行ったが、それについても述べる。そして、第4章において本研究の関連研究について述べ、最後の第5章でまとめと今後の課題について述べる。

2 個人用知的移動体と無人移動体

筆者の所属する研究室では、人間の生活において最も基本的で重要な要素の一つである「移動」に着目し、移動体を用いて人間を物理的に移動させると同時に関連する情報を操作することで、我々の生活する実世界と情報の世界をより密接に関連付ける仕組みを探求している。人間にとって「移動」は、自立的かつ快適に生活するために必要不可欠な行動であり、我々は生活の多くの時間において「移動」しなければならない。そのために人間はこれまで、電車や自動車、バイク、車椅子など様々な移動体を数多く作り上げ、現在もそれらを幅広く利用している。このような状況で、情報技術を人間の生活に役立たせるために、人間の「移動」と情報との新たな関係を構築することを目指す。そのためには、日常的な移動体そのものを情報端末とする手法が考えられる。つまり、乗り物に情報処理・通信機能を持たせ、情報処理と人間の物理的な移動を連動させる、搭乗型(マウンタブル)コンピューティングという考え方である。この搭乗型コンピューティングのコンセプトのもと、情報端末化した移動体の一つとして、我々は AT(Attentive Townvehicle) と呼ばれる、個人用の知的移動体を設計・開発している。 AT は、搭乗者である人間や自身を取り巻く環境に適応し、他の移動体との通信によって協調的に動作することが可能な個人用の乗り物である。

また、本研究では、筆者が所属する研究室で研究・開発している、 AT と同様に自動走行する無人移動体 MUV(Middle-sized Unmanned Vehicle) を用いる。

本章では、 AT と MUV (図[atmuv])のコンセプト、各種センサーを含む AT と MUV に搭載された主要なデバイス、これら移動体の自動走行について説明する。

AT(中央・右)とMUV(左)

図2.1: AT(中央・右)とMUV(左)

2.1 個人用知的移動体 AT

2.1.1 AT のコンセプト

AT は、搭乗者である人間やAT自身を取り巻く環境に適応することで、搭乗者を支援する自動走行可能な個人用の移動体である。図[at] に示すように、AT における研究テーマは多岐にわたっている。以下にそれぞれのテーマについて説明する。

AT に関する研究領域

図2.2: AT に関する研究領域

  • AT と環境とのインタラクション 

ここで述べる環境とは、物理的環境(実世界)と情報的環境(情報世界)の2つの意味を持つ。物理的環境とは、人間や AT と物理的に作用し合う環境である。人間が感覚によって物理的な世界を認識するように、 AT はセンサー類によって世界を認識し、人間が運動によって物理的な世界に影響を与えるように、 AT はモーターによって物理的な世界に影響を与える。一方、情報的環境とは、地図情報などの、 AT がアクセスできるコンテンツやサービスの集合に相当する。これに関連して行われた研究に、実世界対象物の認識手法 [5] や、場所に連動した情報コンテンツの利用 [6] や、3次元地図の自動生成に関する研究 [7] などがある。

  • AT と人間とのインタラクション 

AT が搭乗者の特性を把握し、情報処理を搭乗者に適応させる、個人適応に関する研究課題がある。搭乗者によって、提示するインタフェースや AT の移動速度を変化させたり、搭乗者の嗜好やその場の状況に応じた情報を提示するなどの研究が行われている。また、 AT が搭乗者を識別してインタラクションを行う例として、これまでに、 AT を降りた搭乗者をATが追尾する研究 [8] や、ジェスチャによる操縦インタフェースに関する研究 [9] が行われてきた。

 

  • AT 間(移動体間)のインタラクション 

移動体間通信を行うことで、AT 同士が協調して走行することができる。本研究のテーマは主にここに位置づけられる。例として、AT が他の AT の後を自動的に追いかける追従走行や、お互いに接近している AT 同士が衝突回避を行う協調走行などがある。また、これまでに AT 同士の通信だけでなく、搭乗者間のコミュニケーションを共有・再利用するなどの研究[10]も行われた。

 

  • AT の個体としての自律性 

人間の生活において基本的な部分をなす「移動」を支援するために、自動的に目的地へ到着する機能を実現するという研究課題である。到着することだけが目的ではなく、いかに効率よく移動するかという問題もこのテーマに含まれる。

 

  • AT の搭乗者の安全性 

AT のような、人間を乗せて自動走行をする移動体は、特に安全性の問題について慎重に対処する必要がある。具体的には、AT自身の持つセンサーや環境側のセンサーなどを利用して環境情報をできるだけ正確に取得することで、移動障害物を回避するなどして安全に走行するという研究課題がある。これまでには、連携走行する無人移動体を用いて AT のセンシング領域を拡張し、それに基づいて安全な自動走行を実現する研究[11]が行われてきた。

 

以上のように、AT は、搭乗者や環境や他の AT と、センサー類を用いて様々なインタラクションを実現することによって、搭乗者である人間や、環境への適応が可能な移動体を目指している。

2.1.2 AT の構成

本研究で使用する AT は、図[atmuv]の右の10号機と図[atmuv]の中央の11号機である。本節では AT 2台の構成を説明する。

まず、AT10号機の構成を図[at10] に示す。特に重要なものは,ベースとなる移動体として二輪走行機構、障害物を認識したり、自己位置を推定するためのレーザーレンジセンサーである。これらについて説明し、さらに、マニュアル走行時に使用するペダルについて説明する。また、デバイスを制御するのは、2台のノートPCである。

AT10号機の主要な構成要素

図2.3: AT10号機の主要な構成要素

  • 二輪走行機能

AT はベースとなる移動体として株式会社エフ・アイ・ティの Selfi の土台部分を使用している(図[selfi] [https://sites.google.com/site/fitrobots])。Selfi は、セグウェイのような電動二輪スクーターで、自由にカスタマイズが可能な拡張性を持っている。Selfi はサーボモーターによって独立に動く二つの車輪を持ち、これにより前後移動・その場回転・カーブ走行が可能であり、速度は可変である。また、二つのタイヤの回転数を内部で計算することによって、走った距離と回転角度(オドメトリ情報)を知ることができる。なお、オドメトリ情報とは、タイヤの回転角度から推定する移動体の相対的な移動量(前回の位置からの移動距離と前回の向きとの角度変化分のベクトル)である。Selfi の車輪には、車輪の回転数を知るためのロータリエンコーダが搭載されており、その情報からオドメトリの計算を行う。なお、このオドメトリ情報は必ずしも正しい値ではなく、誤差を含む値である。モーターの回転数が高出力の時と、低出力の時の誤差は特に大きいが、2.3節で説明する位置推定の機能で現在位置を推定するための情報としては十分な精度である。これについては2.3.3項で詳しく説明する。

また、Selfi 内部には、ARM マイコン mbed NXP LPC1768 が搭載されている。mbed とは、Web 上でプログラム開発ができ、パソコンには開発環境をインストールすることなく、インターネットブラウザ上でプログラミングできるマイコンボードである。AT は、 mbed で Seifi のモーターを制御している。

Selfi

図2.4: Selfi

  • レーザーレンジセンサー

AT は、センサーから障害物までの距離と角度を知ることができるレーザーレンジセンサーを搭載している(図[at10])。このセンサーは、物体にレーザー光をあて、そ の反射光を受光して物体までの距離を算出する。この方法で、一定角度間隔で距離を測定することで、平面上に扇状の距離情報を、最大30m、角度240度の 範囲で得ることができる。このセンサーを AT の前後に1つずつ計2つ搭載した。レーザーレンジセンサーはそれぞれ図[range] のように240度の範囲の障害物を検出するように設定し、ATから見た範囲にセンサーの死角が無いように設置している。ただし、床面からの高さが約 30cmの位置にセンサーを固定しているため、その高さの床面に平行な平面上のみがスキャンされる。実際にスキャンした様子が図[scan] である。レーザーレンジセンサーは AT の目として様々な用途で使われる。例えば、移動障害物を検出して、避ける方向を決めたり、自動走行時に壁の位置と向きを検出して自分の向きを補正したりする時などに利用される。

2つのレンジセンサーの統合

図2.5: 2つのレンジセンサーの統合

レンジセンサーによる障害物の検出

図2.6: レンジセンサーによる障害物の検出

  • ペダル

AT は、自動走行の他に、搭乗者の操縦による走行、マニュアル走行を行うことができる。マニュアル走行は、図[at10] に示す二つのペダルを用いて行う。前進するときは両ペダルを前方に踏み込み、後退するときは両ペダルを後方に踏み込む。左に回転するときは、左ペダルを前方、右ペダルを後方に踏み込み、右への回転はその逆の動作である。ペダルは、二輪走行機能でも述べたロータリーエンコーダを搭載しており、ペダルの踏み込み量をロータリーエンコーダの回転数に変換し、車輪を操作する。

次に、11号機について説明する。10号機と異なるのは、11号機には変形機能があることである。10号機では座り乗りのみが可能であったが、11号機では座り乗り、立ち乗りの両方の乗り方が可能である。座り乗り時の状態は図[at11] に示す通りであり、図[at11] の状態から、可動部分を引き上げ、座席を折りたたむことにより、図[stand] のように立ち乗り時の状態になる。マニュアル走行の場合、座り乗り時は10号機と同様にペダル操作をし、立ち乗り時はハンドルによる操作になる。ハンドルは、ペダルと同様にロータリーエンコーダを搭載しており、操作方法は、ペダルを前後に踏み込む動作がハンドルを前後に倒す動作と対応しており、挙動はペダルと同様である。

AT11号機の主要な構成要素

図2.7: AT11号機の主要な構成要素

立ち乗り時の11号機

図2.8: 立ち乗り時の11号機

 

2.2 無人移動体 MUV

2.2.1 MUV のコンセプト

前章で述べたように、現在のところ AT は屋外での自動走行はできない。これは、屋内と異なり、屋外の地図を生成するのが困難であり、移動障害物が多数存在し回避するのが困難であるからである。地図の生成が困難な主な原因は、センシングする壁が自転車や植木などの障害物によって正しく認識できないことである。

そこで筆者が所属する研究室では、AT の屋外自動走行のために、AT と同様の大きさで、かつ搭乗者が危険な状況にならないように無人で走行できる移動体 MUV を開発し、屋外の地図を生成し、自動走行の可能性を確認した。本稿では詳しく述べないが、屋外でも屋内と同様な手法で自動走行が可能になると思われる。

本研究において MUV は、追従走行時のスレーブの役割を果たす。これは、MUV に AT の搭乗者の荷物を運ばせることにより、AT に荷物を乗せて他の障害物と衝突する可能性を低くできるのではないかと考えたからである。

2.2.2 MUV の構成

MUV は、図[muv] のように、ベースとなる移動体として二輪走行機構、障害物を認識するためのレーザーレンジセンサー、衝突した場合に走行を停止させるバンパーセンサー等で構成させれる。また、デバイスを制御するのは一台のノートPCである。二輪走行機構は、2.1.2項で述べた AT のものと同様で、Selfi を拡張したものとなっている。次に、レーザーレンジセンサー、バンパーセンサーについて説明する。

MUV の主要な構成要素

図2.9: MUV の主要な構成要素

  • レーザーレンジセンサー

MUV には2.1.2項で説明した AT に装備されたものと同じレーザーレンジセンサーが搭載されている。AT のように前後1つずつレンジセンサーを持ち、それぞれの測定範囲を統合することで、全方位の障害物の距離を検知することができる。

  • バンパーセンサー

バンパーセンサーは MUV の前後にそれぞれ2個ずつ装備している。これは、進行中に壁や障害物と衝突した際、センサーから信号を受け取り、走行を停止させる働きをする。

2.3 移動体の自動走行

AT と MUV は人間が指定した目的地に対して自律的に移動する仕組みを必要とする。この仕組みは移動ロボットの基本的な機能として数多く研究されており、その多くは次の4つのステップの実現を主な課題としている[確率ロボティクス]。

  1. 環境地図生成
  2. 自己位置推定
  3. 経路生成
  4. 自動走行の制御

1 は AT と MUV が自己位置を推定したり、走行可能領域を識別するための地図を事前に作成するタスクであり、2は作成した環境地図上で現在の自分の姿勢(位置と向き)を推定するタスクで、3は指定された目的地までどのような経路を走るかを、環境地図を利用して決定するタスクである。4は生成した経路を実際に走行するために制御を行うタスクである。それぞれのタスクに関して様々な手法が提案されているが、本章では AT と MUV に実装した手法について説明する。

2.3.1 環境地図

移動体が現在地を把握し、目的地を決定し、その場所まで自動走行をするためには、走行する物理的空間の地図が必要である。本研究では、この地図を環境地図と呼ぶ。環境地図は以下の2つの情報から構成される。

  1. 占有格子地図
  2. グラフ構造データ

1 の占有格子地図とは、等間隔の格子に配置された確率変数で表現される地図のことであり、確率変数の値が高いほどその領域が物体によって占められている可能性が高いことを意味する。図[map1] グレイスケールで表されているのが占有格子地図の例である。白い領域は何もない走行可能な領域、黒い領域は壁などの障害物によって通れない領域、灰色の領域はセンサーで取得できなかった未知の領域である。2.3.2項で説明する位置推定機能では、この地図と移動体のセンサー情報を比較することで、占有格子地図上の移動体の位置を推定する。また、占有格子地図は地図を作成した時点での障害物の地形的位置関係を示した情報であるため、地図にない情報、つまり移動した静止障害物または移動障害物を検出するのに有効である。これについては2.3.3項で詳しく説明する。また、占有格子地図の具体的な生成方法を2.3.1項で説明し、生成された地図と実環境の誤差を2.3.1項で説明する。

2 のグラフ構造データはノード情報とエッジ情報から構成され、ノード情報は占有格子地図の座標と関連付けられた点であり、環境のある地点の状態や属性を表す。エッジ情報はノード間が通行可能かどうかを表す情報である。このグラフ構造データを用いることで、入力された目的地に対する経路の探索や、移動障害物や地図上にない静止障害物に対する柔軟な対応を可能にする。これについては2.3.3項で説明する。また、このグラフ構造は占有格子地図から自動生成することが可能である。図[map1] の水色で表されている点と線がグラフ構造の例である。グラフ構造の生成方法については本項で説明する。

環境地図の占有格子地図とグラフ構造データ

図2.10: 環境地図の占有格子地図とグラフ構造データ

  • SLAM 問題

本項の冒頭で説明した占有格子地図を生成するためには、移動体のオドメトリ情報(移動距離情報)とセンサー情報から、自己位置と地図を同時に推定しなければならない。これは Simultaneous Localization and Mapping (SLAM) 問題として有名な問題 [Thrun, S., Burgard, W., and Fox, D.: ``Probabilistic Robotics," The MIT Press, 2005. 上田隆一 (訳): 確率ロボティクス, 毎日コミュニケーションズ,2007.]である。SLAM 問題とは時刻 0 から t までにおけるセンサー情報z_{0:t} (={z_{0}, z_{1},..., z_{t}})とオドメトリ情報u_{0:t}が与えられた状態での、時刻tの姿勢a_t=(x_t,y_t,\theta_{t})、占有格子地図を表す確率変数の行列m(行列の要素は0から1の実数値)の事後確率

p(a_t,m|z_{0:t},u_{0:t})

の分布関数を求めることである。姿勢a_tは、時刻tでの位置p(x_{t},y_{t})と向き\theta_{t}を表す。SLAM 問題の難しい点とは、センサー情報z_{0:t}とオドメトリ情報u_{0:t}のどちらも誤差を含む値なので、それらを考慮しなければならないことである。SLAM 問題に対しては数々の手法が提案されている[Thrun, S., Burgard, W., and Fox, D.: ``Probabilistic Robotics," The MIT Press, 2005. 上田隆一 (訳): 確率ロボティクス, 毎日コミュニケーションズ,2007.]。筆者が所属する研究室では、この SLAM 問題を解決する手法の一つである ICP (Iterative Closest Point)アルゴリズム [Besl, P. J., and McKay, N. D. A Method for Registration of 3-D Shapes IEEE Trans. Pattern Anal.Machine Intell . 14 239-256 1992] による地図生成を実現した。ICP とはパターンマッチングの一種である。次に具体的に説明する。

  • 占有格子地図の生成方法

本項の冒頭で説明した占有格子地図の生成方法について説明する。地図生成の対象となる実環境で、前述の MUV を手動操作で走行させ、レーザーレンジセンサーの計測記録から2次元の占有格子地図を生成する。

占有格子地図を表す確率変数の行列mを、時刻0からtまでの姿勢の列を表すa_{0:t} (={a_{0}, a_{1},..., a_{t}})と、センサーの計測値z_{0:t}から求める。センサーの計測値z_{0:t}は時刻tにおけるセンサーのレンジ内の障害物までの距離(単位はmm)と、センサーから障害物への方向(単位はラジアン)を表すベクトルの組である。最も確からしいmを求めるためには、すべてのmの可能性についてp(m|z_{0:t},a_{0:t})を計算し、尤度が最大となるmを求めればよい。しかし、すべてのmについてp(m|z_{0:t},a_{0:t})を求めることは計算量的に困難であるので、mの点(i,j)における確率変数をm_{i,j}とし、p(m|z_{0:t},a_{0:t}) = \prod_i \prod_j p(m_{i,j}|z_{0:t},a_{0:t})と近似することで、各格子の確率変数値を推定する問題に分解する。レンジセンサーの値から  p(m_{i,j}|z_{0:t},a_{0:t})を求める方法はinverse range sensor model [Thrun, S., Burgard, W., and Fox, D.: ``Probabilistic Robotics," The MIT Press, 2005. 上田隆一 (訳): 確率ロボティクス, 毎日コミュニケーションズ,2007.]を使用した。このアルゴリズムはセンサーと姿勢の誤差に強く、誤差があった場合も障害物がある地点では1に収束、ない地点は0に収束しやすい。センサーの値z_{0:t}と姿勢a_{t}には誤差が含まれるため、誤差に強いこのアルゴリズムを使用した。

実際に計測したデータから地図を求める手法について説明する。各時刻において、尤度が最大となる姿勢を探索し、その姿勢において地図を更新していく。具体的な手順としては、移動体を走行させることによって得られるオドメトリ情報u_{0:t}と、レンジセンサーの情報z_{0:t}から以下の方法で求める。

1. mの初期値として、全ての要素に未知を意味する 0 と 1 の間の値を代入する

なお、多くの環境地図では、障害物が存在する領域の面積より障害物が存在しない領域の面積の方が大きいため、ここでの値を0.5より0に近い値にする方が収束しやすい。

2.地図作成時の出発地点 a_{0} を原点として、p(m|z_{0},x_{0})を求める

時刻i (1 \leq i \leq t)に対して 3-4 を実行

3.ICP アルゴリズムによりp(a_{i}|m,z_{i},a_{i-1},u_{i})が最大となるa_{i}を探索する

4.3 で求めたa_{i}によってp(m|z_{i},a_{i})を求め、mを更新する

画像の各画素の色の濃さが占有格子地図の各格子の確率変数の値の大きさを表す。黒は障害物有り、白は障害物無し、灰色が初期状態を表している。各格子の間隔は50mm、MUV が300mm進むごとに記録したデータに基づいて作成した。なお、参考文献[確率ロボティクス]によれば、屋外の環境地図の場合、適切な間隔は経験的に150mm程度であることが述べられている。これ以上間隔を大きくすると、位置推定の精度が下がり、間隔を小さくすると、環境地図のサイズが大きくなり、実時間での計算が困難になるためである。筆者が所属する研究室では屋内の環境地図を作るため、若干状況が異なる。屋内は屋外に比べ道幅が狭いため、より正確な現在位置を把握する必要がある。現在位置の精度は環境地図の格子の間隔に依存するため、現在位置の精度を高めるために格子の間隔を50mmとした。

生成された占有格子地図

図2.11: 生成された占有格子地図

  • 実環境と生成された地図の比較

前述の手法で生成された占有格子地図がどの程度正確か、実環境と比較することで検証した。具体的には、以下の二点について検証した。

1. 生成された地図が実環境とどの程度相似であるか

図[map4] は MUV によって生成された地図であり、図[map5] はその地図の壁部分を抜き出した図である。図[map5] と 図[map3] の見取り図を重ね合わせることで、実環境と生成された地図が相似な形をしているかを調べた結果、図[map6] に示すように、見取り図とかなり正確に重なっていることが分かる。一番下の、黒字で9.91と書かれている壁は見取り図と、生成された地図でずれているように見えるが、見取り図の壁は柱の外側を結ぶ線であるため、これは外壁の線である。よって全体的に相似な地図になっていることが分かる。また、生成された地図ではエレベーターの下側に壁があり見取り図にはない。しかし、実際には薄い壁があり、見取り図と実際の環境は若干異なっている。

2. 生成された地図と実際の距離情報にどの程度の誤差があるか

生成生成された地図はレンジセンサーを用いて作られた地図なので、距離情報を含んでいる。地図上での距離がどの程度正確であるか、実環境の壁の長さを測ることで比較したところ、図[map6]に示されるような結果になった。この図で、太い黒字で書いてあるのが実際に計測した距離で、赤字が生成された地図の長さである。単位はメートルである。誤差が一番大きいのは、実際は9.91mで地図上では9.83mの壁である。誤差は-0.8% で、誤差はあまりないことが分かった。

環境の見取り図

図2.12: 環境の見取り図

レンジセンサーにより生成された地図

図2.13: レンジセンサーにより生成された地図

  生成された地図の壁を抜き出した図

図2.14:   生成された地図の壁を抜き出した図

実環境と生成された地図の比較

図2.15: 実環境と生成された地図の比較

  • グラフ構造の生成

本項の冒頭で説明した通り、環境地図には壁などの障害物の位置関係を保持する占有格子地図と、経路計算や地図の部分的な領域・地点の属性を保持するグラフ構造データがあり、本項ではグラフ構造データの生成方法について説明する。占有格子地図は地図上の格子ごとにその場所が物体に占められている確率を表現している。その値が一定の閾値以下である領域を走行可能領域として、走行可能領域に経路生成のためのグラフ構造データを自動で生成する。その生成手法は、次の通りである。

まず、図[map7] 黒い線で表されている障害物から一定距離内の領域を塗りつぶし、その境界線にノードを一定間隔で追加する。さらに、障害物から一定距離外の領域を塗りつぶし、その境界線にも同様にノードを追加する。図[map7] のピンク色の点はこの手法で生成されたノードである。生成されたそれぞれのノードについて一定距離内にあるノードをつなげることによってグラフ構造データを作る。図[map8] は生成されたグラフ構造データを表している。

また、占有格子地図上では通行可能な領域ではあるが、人間の都合によって移動体に通って欲しくない場所や、地図作成後に障害物が置かれたことによって通行不可能となる場所が存在する場合が考えられる。これに対しては、前者は環境地図生成システムのGUI上から簡単に手動でグラフ構造データを編集できる機能、後者はレンジセンサーから取得した値と地図の間で不整合が生じた際にグラフ構造データを更新する機能を用意することで、柔軟な経路生成を可能とした。地図にない障害物によるグラフ構造データの更新については、さらに2.3.3項で説明する。

地図上の障害物とその境界線

図2.16: 地図上の障害物とその境界線

地図に付与されたグラフ構造

図2.17: 地図に付与されたグラフ構造

2.3.2 自己位置推定

ここでの自己位置推定とは、前項で生成した環境地図と現在のレーザーレンジセンサーの値を比較することで、環境地図上での位置を推定する機能である。前項で説明した地図生成のアルゴリズムのステップ3のように、ある時刻iにおいてp(a_{i}|m,z_{i},a_{i-1},u_{i})が最大になるようなa_{i}を求めるという点では、自己位置推定は地図生成と同じ問題である。しかし、自己位置推定時には地図を更新する必要がないため、精度よりも物の配置が若干変化した状態などでも一定の誤差以内でx_iを推定できる仕組みの方が重要である。そのため、確率的に位置を推定していくパーティクルフィルタ[Thrun, S., Burgard, W., and Fox, D.: ”Probabilistic Robotics," The MITPress, 2005. 上田隆一(訳): 確率ロボティクス, 毎日コミュニケーションズ, 2007.]を、自己位置推定に用いた。次にこの方式による自己位置推定の方法について説明する。

パーティクルフィルタによる自己位置推定

パーティクルフィルタは確率的シミュレーション(推定したい確率変数に誤差を加えることで発散させ、尤度を計算することで収束させる手法)によるベイズモデルの推定法の一種である。本項の冒頭で説明した事後確率p(a_{t}|m,z_{1:t},u_{1:t})の分布関数をパーティクルフィルタで求めることで自己位置推定を行った。パーティクルフィルタによる自己位置推定は次の4ステップで行われる。

1. 予測

各パーティクルについて、次の運動モデルに従って次状態のa_{t}を予測する。

x_{t}= x_{t-1}+ R_{t-1} (u_t+ w_t)

a_{t}= a_{t-1}+ R_{t-1} (u_t+ w_t)

R_t : a_tの向きへの回転行列

w_t : オドメトリ誤差を表す正規分布N(0,\sum _W)に従った乱数(ここでの\sum _Wは経験的に求めた。また乱数はボックスミューラー法により計算した)

2. 尤度計算

各パーティクルについて尤度p(z_t|a_t,m)を個々の計測値に対する尤度の積p(z_t|a_t,m)= \prod_{k=1}^K p(z_t^k |a_t,m)で求める。個々の尤度は、計測値から占有格子地図上の障害物の最近傍点を求め、最近傍点と計測値のユークリッド距離を M-estimator [Peter J. Huber, Robus Estimation of a Location Parameter,Ann. Math. Statist.Volume 35, Number 1 (1964), 73-101.] で評価した。また、最近傍点は kd 木 [Bentley, J. L.,Multidimensional binary search trees used for associative searching,Commun. ACM 18, 9 (Sep. 1975), 509–517, 1975.] によって求めた。M-estimator は例外値に小さな重みを与えるような評価関数で、計測値には環境地図に存在しない点が含まれる可能性があるのでこの評価方法を使用した。また kd 木は高速な最近傍探索として知られるアルゴリズムである。

3. リサンプリング

前の状態の各パーティクルの尤度を元にパーティクルを選び直す。高い尤度が与えられたパーティクルを多くのパーティクルにコピーし、尤度の低いパーティクルを消去することにより、パーティクル数を一定に保つ。

4. 位置の決定

パーティクルの分布の平均を現在位置とする。以上の方法で位置を推定するが、この方式は最尤の自己位置を一意に決める ICP とは異なり、パーティクルの分布から自己位置を決めるので、多少の誤差はあるが、動的に障害物の位置が変化する実環境においては、よりロバストな手法になっている。

AT や MUV はそれぞれの位置を相互に伝達することが可能である。そのため、レンジセンサーから取得した値のうち AT または MUV の付近の値は移動障害物と見なし、そのデータを自己位置推定において地図とのマッチングには用いない仕組みを導入した。

ここでの自己位置推定は、地図の更新が行われないことと実時間で推定する必要があることから、誤差を小さくすることよりも処理速度とロバスト性を上げることが求められる。処理速度を上げるためにレンジセンサーの分解能を15度に設定し、ロバスト性を上げるためにパーティクルを多めの500個用意した。1回の自己位置推定にかかる処理時間は10msec以下(CPU は Core i7 2.80GHz)で、これを1秒間に4回繰り返すことで、オドメトリの誤差に対してロバストな自己位置推定を行うことができた。

  • パーティクルフィルタによる自己位置推定の性質

前述の仕組みで姿勢a_tを推定した。ここではパーティクルフィルタでの自己位置推定の性質について説明する。なお、ここでの説明として使用する図の水色で表される領域は占有格子地図の障害物部分を抜き出した領域である。

1. オドメトリに急激な誤差が現れても正解のパーティクルが含まれていれば収束する

図[odo] 左はオドメトリに急激に誤差が乗った時で、図[odo] 右がその後3回自己位置推定を行った後の状態である。水色が地図情報を表し、オレンジが自己位置推定した MUV の現在地を表し、青が現在のセンサーの値を表している。

オドメトリの誤差の収束

図2.18: オドメトリの誤差の収束

2. 特徴が少ない時にはパーティクルは分散し、特徴が多い環境では収束しやすい

図[par] 右を見ると MUV の周りに赤い点が散らばっているが、この点は一つのパーティクルの現在地を表す。この図では左の壁と右の壁しかセンサー情報がないため、縦にパーティクルの分散が広がっている。しかし、図[par]左はその後突き当たりの壁をセンサーが認識するようになることで縦方向の分散が収束している。

 パーティクルの分散の増大、減少する場所

図2.19:  パーティクルの分散の増大、減少する場所

3. 地図作成時と多少物の配置が変わっていたり、周りに人がいたりするなど、地図情報と多少ずれがあっても大まかに合っていれば収束する

図[syusoku]左のように地図生成時にない静止障害物(図の緑の部分)を環境に置いた状態で自己位置推定を行ったのが図[syusoku]右である。現在のセンサーの値で地図との重なりがない部分が存在しても他のセンサー情報の重なりにより自己位置推定ができている。

 動的環境での収束

図2.20:  動的環境での収束

以上の性質は実環境を走るためには有効な性質である。性質2のような特徴点が少ない環境で分散してしまうのは、真っ直ぐな壁が続くようなところで分散が壁方向に拡がってしまうためである。しかし、壁の突き当たりや途中で障害物がある環境では位置の分散を収束させることができる。

説明したパーティクルフィルタでは、初期の姿勢を平均としたガウス分布に従ってパーティクルを生成するため、初期の姿勢が大きく異なる場合は正しい姿勢に収束しない。パーティクルの姿勢を環境地図に一様に分布させることで、位置の初期値を決めることなく位置を推定することができる。図[large] はパーティクル数を10000にして地図全体にパーティクルを一様に分布させることで、自己位置推定を行った時の結果である。各パーティクルの位置を赤い点で示している。図の①は走行を開始した直後の様子であり、赤い点が地図全体に広がっている。②でいくつかの候補にパーティクルが集まっていき、③ではほとんど一つの候補に集まっている。④では完全に一つの地点にパーティクルが密集している。この例では④で密集した地点が正しい位置であった。しかし、②のような状態から正しい候補に収束するとは限らない。さらに、パーティクルの数を局所的推定よりはるかに多くしなければならないので、処理に時間がかかる。よって、より安定した推定法である局所的推定を用いる。

大域的推定の結果

図2.21: 大域的推定の結果

2.3.3 経路生成

前項で説明したように、AT と MUV は環境地図上で自己位置を一定の誤差内で推定することができる。本項では自己位置から指定された任意の座標に対して走行可能な経路を生成する方法を説明する。

  • A*アルゴリズムによる経路生成

2.3.1項で説明した環境地図のグラフ構造データから経路を生成する手法を説明する。環境地図の走行可能領域内の任意の場所が目的地として指定された時、現在地と目的地のそれぞれの最近傍のノード間をA*アルゴリズムで探索することで経路を生成する。A*はダイクストラ法による推定値が小さいものから順に探索し、経路が見つかった時点で探索を終了するアルゴリズムである[12]。このアルゴリズムは目的地までの推定値をユークリッド距離とすることで最短経路を探索できることが保証されている。図[route] に生成された経路を示す。

なお、環境地図の格子をそのままグラフとしてA*アルゴリズムを適用して経路を生成することは可能である。しかし、環境地図上に存在しない障害物を認識した場合に、より柔軟な経路生成を行うためにグラフ構造を用いる。また別の理由として、AT は動的に MUV に経路情報を送信する必要があり、環境地図の格子より粒度の荒い単純なグラフ構造を生成して通信量を減らす必要があるため、環境地図からグラフ構造データを生成する手法を提案する。

地図に付与されたグラフ構造と生成された経路

図2.22: 地図に付与されたグラフ構造と生成された経路

  • 地図に含まれない障害物の検出とそれを考慮した経路生成

環境地図中に存在しない障害物、例えば、通路上にダンボール箱などが置かれたりする状況において、移動体はこれを回避する経路を生成する必要がある。これを実現するための3つの機能について説明する。

1. 地図にない障害物を検出する機能

占有格子地図とレンジセンサーの値を比較し、レンジセンサーの計測値から占有格子地図上の障害物の最近傍点を求め、最近傍点と計測値のユークリッド距離が閾値以上離れている計測点を地図にない障害物とする。また、ここで検出された地図にない障害物は 3 で説明する機能によって取り除かれるまで環境内の障害物として保持され続ける。図[obs] の赤色で表される領域が現在のレンジセンサーの値の中で地図にない障害物である。緑の領域が過去に検出した地図にない障害物である。以上の方法で地図にない障害物を検出するが、自己位置推定の精度が悪いときに本来は地図に存在する障害物が誤検出される恐れがある。そこで、自己位置推定の精度を、自己位置推定で用いられるパーティクルフィルタのパーティクルの分散で評価し、分散が十分に小さい場合のみ地図にない障害物を検出する機能を有効にした。図[ichi] は分散が大きく、自己位置推定の精度が低い例である。赤の点群はパーティクルの位置であり、図[obs]の水色の点群に比べ分散が大きいため地図にない障害物の検出を行わない。

地図にない障害物の検出

図2.23: 地図にない障害物の検出

分散が大きく位置推定の精度が低いケース

図2.24: 分散が大きく位置推定の精度が低いケース

2. 地図にない障害物の情報を環境地図に反映して経路生成する機能

1の機能によって地図にない障害物が検出されると、障害物の座標とエッジの線分との距離が閾値以下であるエッジを通行不可能なエッジとする。図[obs2]の黒い線は通行不可能なエッジを表している。前述した経路生成で通行不可能なエッジを計算に含めないことで、地図にない障害物を避けた経路を生成することが可能となる。

地図にない障害物によるエッジ情報の更新

図2.25: 地図にない障害物によるエッジ情報の更新

3. 地図にない障害物が取り除かれたときにそれを検出し、環境地図に反映する機能

レンジセンサーは最も近い位置にある障害物までの距離を返すため、検出された位置より短い位置には障害物が存在しない。そのため、計測値までの間に、地図にない障害物が存在する場合、この障害物はすでに存在しないため取り除く。2で通行不可能になったエッジも、そこに関連付けられた地図にない障害物が完全に取り除かれた場合に通行可能になる。また、誤検出を防ぐために1で説明したパーティクルの分布が小さい場合のみ、取り除く機能を有効にした。

2.3.4 自動走行の制御手法

本項では、前項の仕組みによって生成した経路を実際に走行するために、移動体の駆動部に送信する制御コマンドを決定する方法について説明する。なお、AT と MUV の駆動部の機構は二輪走行機構である。

本項では二輪走行機構のカーブにおける車輪ごとの速度の設定について、経路に沿った自動走行のためのアルゴリズムについて説明する。

  • 目標点に対するカーブ走行

2.1節で説明した通り、二輪走行機構は独立で動くサーボモータを左右に持つ。右タイヤと左タイヤの速度をv_r,v_lとした時、v_r = v_lかつv_r> 0 であれば前進、v_r = v_lかつv_r< 0 であれば後退、v_r = -v_lであればその場回転となる。その場回転とは、移動体の位置は変わらずに向きだけ変わる動きである。そしてそれ以外のv_r,v_lでは、図[curve]のように移動体は半径の円を描くように平均速度でカーブ走行を行う。v_r,v_l,r,vの関係は以下の式の通り。

左カーブの場合 : \frac{v_r}{v_l} = \frac{r+\frac{\alpha}{2}}{r-\frac{\alpha}{2}}

右カーブの場合 : \frac{v_r}{v_l} = \frac{r-\frac{\alpha}{2}}{r+\frac{\alpha}{2}}

平均速度 : v = \frac{v_r+ v_l}{2}

\alpha : 右タイヤと左タイヤの幅、r:カーブ走行の半径

また、ある目標点へ到達するためのrは次のように求めることができる。移動体の座標を(x_1,y_1)、向きを\theta _1、目標点の座標を(x_2,y_2)とする。

d = \sqrt{(x_2-x_1)^{2}+(y_2-y_1)^{2}}

\theta = atan2(y_2-y_1,x_2-x_1)- \theta _1

r = \frac{d}{2sin|\theta|}

※atan2(y,x)は引数yにyの増加分、引数xにxの増加分を入力することで逆正接を4象限表現で返す。atan(a) の範囲が[-\pi/2, \pi/2] であるのに対して、atan2(y,x)は[-\pi, \pi] である

ただし、\theta = 0または\piとなる場合は、移動体の向きの直線上に目標点が存在するためカーブ走行はできず、直進または後退を行うことで目標点に到達できる。

また、\theta > 0の時は左にカーブする場合で、\theta < 0の時は右にカーブする場合であり、移動体の平均速度vでカーブ走行させるためのv_r,v_lは前述の式より次のようになる。

左カーブの場合 : v_r= v + \frac{\alpha}{r} , v_l= v - \frac{\alpha}{r}

右カーブの場合 : v_r= v - \frac{\alpha}{r} , v_l= v + \frac{\alpha}{r}

以上の式で求めたv_r, v_lで走行するように二輪走行機構に命令を出すことで目標点へ向かう動作が可能である。次に、このの仕組みを使った自動走行の制御アルゴリズムについて説明する。

二輪走行機構のカーブ走行

図2.26: 二輪走行機構のカーブ走行

  • 自動走行の制御アルゴリズム

前項で説明した方法で経路が生成され、その経路を走行するためのアルゴリズムを説明する。

現在地エッジとエッジ上の現在地

図2.27: 現在地エッジとエッジ上の現在地

1. 経路の1番目と2番目のノードを結ぶエッジを現在地エッジとする

移動体の現在地が現在地エッジ上のどの地点か計算する計算方法は現在地から現在地エッジに垂線を下ろした時の交点である。この座標をエッジ上の現在地と呼ぶ。図[node] の水色のノードとエッジは2.3.1項の仕組みで生成された経路を表し、橙色が移動体の現在地と向きを表している。この例ではノード間のエッジが現在地エッジであり、紫の点がエッジ上の現在地である。

2. エッジ上の現在地から d_{min} 離れた経路上の点から d_{max} 離れた点までの間の一定間隔ごとの点群を目標候補点とする

d_{min}が小さすぎた場合移動体が蛇行し、d_{max} が大きすぎた場合は経路から逸れた位置へ走行してしまうため、本研究では、d_{min}を1m、d_{max} を4m とした。

図[shippai]、図[seiko] の星マークがその例である。全ての目標候補点に対して、現在地から目標候補点へカーブ走行で向かった場合の軌跡を計算し、進行予定領域内にレンジセンサーで取得した値が含まれるかどうか判定する。図[shippai] は赤の領域で表される進行予定領域内に、青の点群で表されるレンジセンサーの値が含まれる例である。図[seiko] は進行予定領域内にレンジセンサーの値が含まれない例である。進行予定領域内にレンジセンサーの値が含まれない目標候補点の中で一番経路上離れた位置にある点を目標点とする。したがって、図[seiko] の目標候補点を目標点とする。

3. 全ての目的地候補点で走行可能な点が存在しない場合は、現在地エッジの端点のうち経路上離れた位置にあるノード(図[node]の例で言えばノードn_2)の方向へその場回転を行い、手順2に戻る

4. 目標点が決まったら、目標地点に対してカーブ走行を行う

5. 一定時間走行する

6. 経路の最終目的地に到達したか確認する

到達したら自動走行を終了する。到着してしてなければ手順7に進む。目的地への到達の判定は、移動体の現在地と目的地の距離が閾値以下になるときとした。

7. 現在地エッジが変更していないか確認する

現在地エッジの変更の判定は、現在地エッジと次のエッジ(図[node] の例で言えば直線 n_1,n_2 と直線 n_2,n_3)のなす角の二等分線を移動体の現在地が越えたか計算する。エッジ上の現在地を計算し、手順2に戻る。

目標候補点に対するカーブ走行の失敗判定

図2.28: 目標候補点に対するカーブ走行の失敗判定

目標候補点に対するカーブ走行の成功判定

図2.29: 目標候補点に対するカーブ走行の成功判定

3 位置情報サーバーを用いた移動体間の連携・協調

本章では、複数移動体の安全走行のために、移動体間において連携的、または協調的な行動をとるための手法を説明する。1章で述べたように、本研究における連携的な行動は追従走行とし、協調的な行動は十字路において道を譲る行為を伴う走行とする。そして、これらの問題を取り扱う上で重要となる情報の共有のために、移動体の位置や走行速度等の情報を一括して管理することのできる位置情報サーバーを開発した。

そこで、以下では、まず位置情報サーバーについて説明し、その後に追従走行、十字路における走行について具体的に説明する。

3.1 位置情報サーバー

位置情報サーバーは、追従走行では経路情報の移動体間の共有を支援し、十字路における走行では経路情報の共有の支援の他に、複数の移動体の経路変更や速度制御も行う。

本節では、サーバー本体と、十字路走行において、移動体の制御をまとめて行うサーバー本体を拡張するプログラムについて説明する。

3.1.1 サーバー本体

位置情報をリアルタイムに共有するため、位置情報サーバーと移動体の通信には WebSocket を利用する。WebSocket はリアルタイムな双方向通信を実現するための通信規格である。実環境内に存在する移動体は位置情報サーバーに接続し、常に、環境地図上の現在地の座標や向いている方向という位置・姿勢情報や、走行速度などをサーバーに送信する。また、移動体は、サーバーに接続している他の移動体の情報を受信することも可能である。

位置情報サーバーの機能は、大まかに以下の通りである。

1. (サーバーに接続している全)移動体の位置・姿勢情報の管理

2. 移動体の速度や状態(自動走行中や停止中など)の管理

3. 移動体の目的地や走行経路の管理

4. 移動体から他の移動体への情報の媒介、連携・協調する移動体の管理

5. 移動体への制御命令の伝達

1~4は追従走行、十字路走行の共通の用途である。ただし、3は状況により多少の違いがある。位置情報サーバーが位置情報の媒介のみになる場合や、搭乗者が目的地を指定する場合は、移動体側のシステムで目的地を指定し、移動体側のシステムが経路を計算、サーバーに送信することで移動体間で共有する。一方、MUV のように搭乗者がいない場合は、サーバー側のシステムで目的地を指定し、経路を計算し、移動体に送信する。また、動的な経路変更を行う場合も、サーバー側のシステムで計算し、移動体に送信する。

次に、5について説明する。追従走行では、前方を走行する移動体が後方を走行しようとしている移動体を認識した後に、サーバーを介して後方を走行しようとしている移動体に、追従走行するように命令を送信する。また、前方を走行する移動体(マスターと呼ぶ)から後方を走行する移動体(スレーブと呼ぶ)に対し、マスターの走行終了を知らせたり、スレーブからマスターに対し、スレーブがマスターと異なる進路をとる時に追従を解除する命令を出すこともできる。搭乗者がいない場合においては、移動体側のシステムではなく、サーバー側のシステムで移動体の目的地を設定した時に、環境地図を基に現在地から目的地までの経路を計算した後、その計算した情報を各移動体に伝達することができる。

以上に示したサーバー側のシステムとは、移動体側のシステムとは別に経路の計算等をするもので、次項のサーバー補助プログラムのことを指す。詳しい説明は次項に記述する。

位置情報サーバーの役割を図に示すと、追従走行時においては図[tsuisa] の通りであり、十字路走行時においては図[jyusa] の通りである。

追従走行時における位置情報サーバーの役割

図3.1: 追従走行時における位置情報サーバーの役割

図[tsuisa] では、位置情報サーバーがそれぞれの移動体の位置情報や経路情報等の送受信を行い、移動体間で情報を共有する媒体となっている。

十字路走行時における位置情報サーバー・サーバー補助プログラムの役割

図3.2: 十字路走行時における位置情報サーバー・サーバー補助プログラムの役割

図[jyusa] では、位置情報サーバーは、移動体から受け取った情報をサーバー補助プログラムに送信し、サーバー補助プログラムがその情報を基に移動体を制御する命令をサーバーを経由して移動体に送信する。また、移動体が自分以外の移動体の位置や走行状態を知るために、それらの情報を移動体に送信する。位置情報サーバーの役割は、追従走行時には情報の媒介のみであったが、十字路走行時ではそれに加え、移動体を制御する命令の伝達も行う。

3.1.2 サーバー補助プログラム

前項で説明したように、サーバー補助プログラムとは、移動体側のシステムとは別に経路の計算等を行うもので、サーバーを補助するためのものである。

移動体が自律して衝突しないように走行することが望ましいが、複数の移動体をまとめて管理できるサーバーを開発することにより、移動体の制御がより容易になると思われる。位置情報サーバーの目的は、すべての移動体の情報を一括して管理し、衝突の危険性などを事前に計算することで、必要に応じて移動体に制御命令を伝達し、移動体を安全に走行させることである。そこで、サーバーですべての移動体の制御を行えるようにするために、サーバー補助プログラムを開発した。サーバー補助プログラムは移動体を仮想化し、仮想化された複数の移動体を制御するという役割を担っている。その制御命令はサーバー本体を介し、移動体に送信する。また、仮想化された移動体を制御する上で環境地図が必要となるため、サーバー補助プログラムは環境地図を保持している。

本研究においては、十字路走行時にのみサーバー補助プログラムを使用する。前述したように、十字路走行は追従走行とは異なり、移動体の制御もサーバー側で一括して行うためである。

3.2 AT と MUV による追従走行

追従走行は、細い道を複数の移動体が同じ方向に走行する場合、移動体同士が衝突することなく安全に走行するために考えた手法である。例えば、交差点で鉢合わせした2台の AT が同じ細い通路に進入しようとする場合、先にその通路に進入すると予想される AT をマスターとし、後に進入する AT をスレーブとすることで、その後の細い通路では安全に走行することができる。マスターは自分が取得した情報をスレーブに送信することで、スレーブを走行しやすくするようにするが、それ以外はスレーブの存在を考えることなく走行することができる。その後、2台が異なる通路に向かうことになれば、追従の関係を解除し、通常の自動走行に切り替えれば良い。

ここでの追従走行においては、前方を走行する移動体(マスターと呼ぶ)を AT 11号機、後方を走行する移動体(スレーブと呼ぶ)を MUV とする場合で考える。ここで MUV を使用するのは、MUV に AT の搭乗者の荷物を運ばせることにより、AT に荷物を乗せて他の障害物と衝突する可能性を低くできるのではないかと考えたからである。

本節では、AT と MUV の場合の追従走行の仕組みを説明し、実機による動作確認の結果を説明する。

3.2.1 追従走行の仕組み

本項では、環境地図や移動体が表示されるコンソール画面における操作の流れを示しつつ、追従走行の仕組みを説明する。コンソールはマスターとなる移動体とスレーブとなる移動体の2台分用いる。以下に示す流れでは、ある手順における操作の結果は次の手順の図に反映される。各移動体は位置情報サーバーに接続している前提である。また、追従走行の動作を分かりやすく確認できるようにするため、今回は、走行前にスレーブを決定する。

1. スレーブとなる移動体の検出

マスターとなる移動体(本稿では AT11号機)図[m2] 側からスレーブとなる移動体を検出する。マスターとなる移動体はサーバーから他の移動体の情報を取得し、環境内のスレーブとなる移動体を自動的に検出する。検出すると、サーバーを経由してスレーブとなる移動体に、マスターに追従するように命令を送信する。この時、サーバーにおいても追従の関係にあるという情報を管理している。

この手順以降、コンソール画面での操作はマスターのみとなり、マスターの情報からスレーブは行動を決定する。

AT 側の表示

図3.3: AT 側の表示

2. スレーブの経路の決定

図[m3] や図[s3] のように、自身の表示の一方、スレーブとなる移動体に「slave」、マスターとなる移動体に「master」と表示されたら、マスターの目的地を決定する。目的地に指定する場所(ノード)を右クリックする。

マスター側の表示 (1)

図3.4: マスター側の表示 (1)

スレーブ側の表示 (1)

図3.5: スレーブ側の表示 (1)

マスターの目的地を指定すると、最適な経路を計算し、図[m4] のように赤い線で経路が表示される。スレーブは、サーバーから送信されたマスターの経路を基に自分の経路を決定する。これは、スレーブの位置から最短距離にあるマスターの経路内のノードを選び、現在地からそのノードまでの経路を生成し、その経路にマスターのそのノードから目的地までの経路を足したものである。そうするとマスターのように、図[s4] で示す経路が表示される。ちなみに、黄色の点(ノードx)は、スレーブから最短距離にあるマスターの経路内のノードである。

マスター側の表示 (2)

図3.6: マスター側の表示 (2)

スレーブ側の表示 (2)

図3.7: スレーブ側の表示 (2)

3. スレーブの速度調節

自動走行を開始するために、マスター側のコンソール画面から自動走行を開始する。この時、位置情報サーバーにマスターの移動開始の合図が送信され、それを合図にスレーブも自動走行を開始する。

この操作の後の流れは、以下に示す図[m5]、図[s5]ような流れで自動的に行われる。

スレーブの走行速度 v は、黄色のノードxまでとそれ以降で異なる。黄色のノードxまでの速度は、マスターがそのノードを通過するまで以下のように計算する。

l = 黄色のノードxまでのスレーブの経路の長さ

t = 黄色のノードxまでの走行でマスターが要する時間(黄色のノードxまでのマスターの経路の長さ / マスターの速度)

とした時、

 v = l / t

によりマスターとほぼ同時にピンク色のノードに到着するための速度を予想し、安全に走行させるために、この速度 v に適度な余裕を持たせたものを走行速度とする。この場合の適度な余裕とは、実機を用いて実験したときに経験的に得られた値で、衝突の可能性を低くし、かつ、過剰な減速にならない程度の速度差であり、20mm/sec としている。この速度は 図[s5]左 の赤い丸で囲まれた「追跡速度」の表示の通りである。

図[m5]中央のようにマスターがピンク色のノードを通過すると、スレーブはマスターとの距離に従い、図[s5]中央のように速度を変化させる。2台間の距離に従う速度調節とは、衝突せず間に他の障害物が入らない程度の間隔の場合はマスターと同じ速度を維持し、間隔が広がりすぎた場合に加速、狭くなりすぎた場合に減速をすることとする。

図[m5]右でマスターは目的地に到着したので、図[s5]右ではスレーブも自動走行を終了している。

マスター側の表示 (3)

図3.8: マスター側の表示 (3)

スレーブ側の表示 (3)

図3.9: スレーブ側の表示 (3)

3.2.2 実機による動作確認

本項では、図[jikken]のようにAT をマスター、MUV をスレーブとする場合の実機による動作確認の実験について説明する。

追従の様子

図3.10: 追従の様子

実験環境は、前項で示した環境地図と同様の場所とした。本実験では、スムーズに2台が合流し、追従している間に衝突しないことを目的とした。

図[trace1] のように前項で示した経路に近いものを5回試行し、図[trace2] や 図[trace3] のように、図[trace1] とは異なる状態を1回ずつ試行した。移動体同士が接触したり、途中で自動走行を中止した場合を失敗とし、自動走行を終了することができた場合を成功とする。図[trace1] の場合の結果を 表[res] に示す。

実験時の環境地図の表示1(左:マスター、右:スレーブ)

図3.11: 実験時の環境地図の表示1(左:マスター、右:スレーブ)

環境地図の表示2(左:マスター、右:スレーブ)

図3.12: 環境地図の表示2(左:マスター、右:スレーブ)

環境地図の表示3(左:マスター、右:スレーブ)

図3.13: 環境地図の表示3(左:マスター、右:スレーブ)

表[res] に示した通り、5回行った追従走行において、AT と MUV が接触することはなかった。2台が合流するタイミングは、スレーブの速度を安全のために余裕を持たせた値となっていたため、少々遅れ気味の時もあった。しかし、マスターがスムーズに自動走行を行えなかった場合は、衝突の可能性を低くすることができると考えられる。また、2台が合流してからの移動体間の距離は基本的に安全な間隔を保つことができた。しかしこの時も、マスターがスムーズに自動走行できなかった場合、間隔が狭くなりすぎることも考えられた。

表3.1:実験結果
成功 / 失敗
1回目 成功
2回目 成功
3回目 成功
4回目 成功
5回目 成功

図[trace2] や 図[trace3] の場合も衝突することなく追従走行することができた。しかし、図[trace2] のスレーブの経路での走行は、多少効率が悪いように思える。これは、マスターの経路のノードの内、スレーブの位置から最短距離にあるものを選んで経路生成しているためである。このような場合は最短距離という判定ではなく、何か他の判定の方が望ましい結果になる可能性もあると考えられ、この1点の適切な選び方は今後の課題である。さらに、その1点までのスレーブの速度は、速すぎても遅すぎても安全な追従走行にはならないため、その速度を決定するアルゴリズムの精度も重要になると考えられる。

また、今回の手法では、マスターがスムーズに自動走行しなかった場合、スレーブがマスターを追い抜く可能性がある。そのため、そのような事態への対処法も必要であると考えられる。

3.3 2 台の AT による十字路走行

第1章で述べたように、交差点において交通事故が多発していることを考慮し、交差点の中でもいくつかの特徴を有している十字路に着目し、十字路において一方の移動体が他方に道を譲るという問題を取り扱う。また、屋内には信号機がないという制約がある。その制約下で安全に走行するため、道を譲るという行為が重要となる。本研究では、速度調節や経路変更により、道を譲るという行為を実現する。ただし、本研究では、十字路の中心部分から伸びる4本の通路のうち、同じ1本の通路から複数の移動体が走行を開始する場合は考えないものとする。

本稿の十字路走行は、2台の AT (10号機、11号機) を使用することとし、本節では、十字路走行の仕組みを説明し、その仕組みを用いて実機を動作させた結果を説明する。

3.3.1 十字路走行の仕組み

本研究において、十字路走行は2台の経路の状態に基づいて、以下のように場合分けする。場合分けを行うのは、経路の状態によって衝突を回避する方法が異なると考えたためである。この時、進入口や退出口という表記をするが、それは図[cross] に示すように、交差点に進入する、あるいは交差点から退出する時の場所を示す。また、十字路の中心部分から伸びる4本の通路が交わる部分、つまり十字路の中心部分を交差点とする。ただし本実験においては、交通事故が交差点のみならず、その付近においても多発していることから、少し広めの範囲を交差点とする。

進入口・退出口

図3.14: 進入口・退出口

  • パターン1.一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が2か所の場合(図[c1])
十字路パターン1

図3.15: 十字路パターン1

  • パターン2. 一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が1か所の場合(図[c2])
十字路パターン2

図3.16: 十字路パターン2

  • パターン3.一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が0か所の場合(図[c3])
十字路パターン3

図3.17: 十字路パターン3

図は分かりやすいように経路を示しているが、第1章でも述べた通り、走行する環境が屋内であるため、左側通行や右側通行という概念はないものとする。また、想定する環境や前提では、これらのパターンが全てであると考えられる。

パターン1は、図[c1]において赤い円で囲んでいるように、一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が2か所あるため、交差点に進入する時刻をずらすだけでは衝突を回避できない。そのため、速度制御の他に経路変更が必要になる。経路変更とは、他の移動体の影響を考えずに目的地を指定した場合に生成される経路を、他の移動体に衝突しないように経路を変更することである。パターン2は、一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が1か所存在するため、進入口がもう一方の退出口になっていない移動体を先に走行させることにより、衝突の危険性を小さくする。パターン3においては、交差点に進入する時刻をずらすことにより、衝突の危険性を小さくすることができる。本研究においては、交差点に進入する時刻が早い方の移動体に優先権を与え、先に通行させることとする。

まず、十字路走行において必要となる交差点の指定について説明する。本稿においては手動で交差点を指定するが、これはコストが高い。そのため、環境地図の画像処理を行うことにより、交差点の検出は自動化する必要があり、今後の課題である。これについては、5.2.2項で詳しく説明する。

交差点の指定からの流れは、3.2.1項のように、環境地図が表示されるコンソール画面における操作の流れを示しつつ説明する。コンソール画面はサーバー補助プログラムのもので、目的地の指定もサーバー補助プログラム側で行う。

図[ju2] の「交差点内ノード抽出」というチェックボックスにチェックを入れ、図[ju2-2]のように環境地図上の交差点を右ドラッグで矩形選択する。これは、環境地図内の交差点を判定し、この後の流れで使用する交差点内のノードを抽出、ノードに交差点内のノードであるという情報を付与する。移動体の経路に交差点内のノードが含まれていた場合、移動体が交差点に進入すると考える。

交差点の指定 (1)

図3.18: 交差点の指定 (1)

交差点の指定 (2)

図3.19: 交差点の指定 (2)

ノードが抽出されると、図[ju4] に示すように交差点内のノードの色が紫色になる。この状態の地図を保存することにより、同一の地図を使う場合は交差点の情報を再利用することができる。

次に、十字路走行の具体的な流れを説明する。この時、各移動体が位置情報サーバーに接続していることを前提とする。以下に示す流れでは、ある手順における操作の結果は次の手順の図に反映される。

1. 移動体の優先順位などの決定

図[ju4] に示すように、位置情報サーバーに接続した移動体が表示されたら、目的地を指定したい移動体をクリックして選択する。この時、左クリックで移動体の位置を移動させることもできる。

コンソール画面の表示 (1)

図3.20: コンソール画面の表示 (1)

移動体を選択すると移動体が赤く表示される。次に、この移動体の目的地にしたい場所(ノード)を右クリックする。

コンソール画面の表示 (2)

図3.21: コンソール画面の表示 (2)

目的地を指定すると経路が生成される。もう1台の移動体も同様に目的地を指定する。

2台の経路が指定されると、パターン1では、2台の内より壁に近い移動体が判定され、パターン2と3では移動体の優先順位が決定される。この時、複数の移動体の交差点への進入が検出される、もしくは複数の移動体が衝突する危険性がある場合に、これらの判定を行う必要がある。そのため本稿では、2台の移動体が交差点に滞在する時間帯に重なりがない場合は、これらの判定はされない。

本稿では、厳密なパターンの判定はできていない。そこで本稿では、

  • パターン1. 一方の移動体の交差点進入時のノードともう一方の移動体の交差点退出時のノードまでの距離が任意の距離以内である状態が2台ともの場合
  • パターン2. 一方の移動体の交差点進入時のノードともう一方の移動体の交差点退出時のノードまでの距離が任意の距離以内である状態がどちらか一方の場合、かつ、2台の交差点退出時のノード間の距離が任意の距離より大きい場合
  • パターン3. 一方の移動体の交差点進入時のノードともう一方の移動体の交差点退出時のノードまでの距離が任意の距離より大きい状態が2台ともの場合

とした。この時の任意の距離とは、実機を用いて実験したときに経験的に得られた値で、それぞれのパターンの経路の状態の違いから 4500mm としている。これは、実験環境の規模の大きさにより異なる。

以下には、パターン1から順に、経路変更されたり、優先順位が決定された状態の表示を示す。図の赤色の移動体がより壁に近い方のものであり、または優先順位が高いものである。また、黄緑色の移動体が一方より壁に近くない方であり、または優先順位が低いものである。パターン3では先に交差点に進入する移動体の優先順位が高い。パターン2では、一方の移動体の進入口が、もう一方の移動体の退出口になっているという条件に当てはまらない移動体の優先順位が高くなる。パターン1では、より壁に近い移動体がその壁に沿って走行するように経路変更し、もう一方の移動体は反対側の壁に沿って走行するように経路変更する。

  • パターン1. 一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が2か所の場合

図[c1] で説明したように、両方の移動体の進入口が一方の移動体の退出口になっている時である。これは、お互いが一方の移動体に向かって走行する形になっているため、他の2パターンのように速度調節によって交差点へ進入する時刻をずらしても、衝突を回避することはできない。そこで、衝突しないように経路変更を行う必要がある。図[cross1] のように、2台の内でより壁に近い移動体が赤く表示され、そうでない移動体は黄緑色で表示される。より壁に近い移動体が、交差点内において近い方の壁に沿って走行するように経路変更し、そうでない移動体は反対側の壁に沿って走行するように経路変更した状態が図[cross1]である。より壁に近い移動体が近い壁に近づくコストは、もう一方の移動体が壁に近づくコストより低いと考えたため、このようにした。黄色や橙色で表示されている点は、交差点内のノードの内、それぞれの移動体が経路変更時に通るべき点である。この点の決定の方法については下記に詳しく示す。

パターン1

図3.22: パターン1

具体的に経路変更の流れを説明する。それぞれの移動体の変更する前の経路は、図[cross1]左の時は図[cross1-1] 上のように、赤く表示されている移動体のものであり、図[cross1]右の時は図[cross1-2] 左・中央のように、赤く表示されている移動体のものである。

実世界に多く存在するような十字路を前提としているため、より壁に近い移動体の判定は、移動体の左右に壁があることを想定して行う。移動体が向いている角度から左右の壁を判定し、その壁まで の距離を計算する。移動体ごとに左右の壁までの距離からどちらの壁に近いかを判定し、近い方の壁までの距離から2台の内どちらの方がより壁に近いかを判定する。より壁に近い移動体の判定後、経路を成している直線を交差点内で二分し、この時の二直線がなす角度から移動体が直進するか、曲進するかを判定する。

より壁に近い移動体の経路変更について説明する。直進の場合は、近い壁側にある交差点内のノードの内、交差点に進入する時のものと、交差点から退出する時のものの2点(図[cross1-1]下の橙色の点)を選び、現在地と目的地の間にその2点を通行するように経路を変更する。曲進の場合は、外側のカーブと内側のカーブという概念があり、それぞれ、外回り、内回りと呼ぶ。直進の時のように近い壁寄りにある交差点内のノードの内、交差点に進入する時のものと、交差点から退出する時のものの2点を選ぶ。その2点間の距離が任意の距離(環境の規模に従い、1500mmとしている)以上である場合は、外回りする状態を想定しているため、選んだ2点と結んだ2直線がなす角が直角に近くなるような1点を選ぶ。つまり、曲進の場合は2点、または3点(図[cross1-2]右の橙色の点)を選び、その点をが現在地と目的地の間になるように経路変更する。

より壁に近い移動体ではない移動体は、上記とは反対側の壁に近い点(図[cross1-1]下・図[cross1-2]右の黄色の点)を選び、その点を通るように経路変更する。

パターン1(左)の経路変更

図3.23: パターン1(左)の経路変更

パターン1(右)の経路変更

図3.24: パターン1(右)の経路変更

  • パターン2. 一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が1か所の場合

図[c2] で説明したような経路の状態の場合である。図[cross2] から分かるように、進入口がもう一方の移動体の退出口になっていない移動体の優先順位を高く、進入口がもう一方の移動体の退出口になっている移動体の優先順位を低くする。このように優先順位を決め、優先順位の高い移動体に先に交差点を通過させるように、この後優先順位の低い移動体を減速させることで衝突を回避する。

パターン2

図3.25: パターン2

  • パターン3. 一方の移動体の進入口が、もう一方の移動体の退出口になっている箇所が0か所の場合

本項のはじめ 図[c3] で説明したような経路の状態の場合である。図[cross3] では、先に交差点に進入すると予想される移動体の優先順位が高く、移動体が赤く表示され、その移動体よりも後に交差点に進入すると予想される移動体の優先 順位が低くなり、黄緑色で表示されている。移動体が交差点に進入する時刻は、

交差点進入時のノードまでの距離 / 移動体の速度

により計算する。本稿では2台の移動体の走行速度の既定値を同じとしているため、交差点までの距離に従い計算することと同様である。そのため、図[cross3] では、交差点に近い移動体の優先順位が高い。

パターン3

図3.26: パターン3

以下では、速度調節のパターンの場合の流れを説明する。ここでは本来、リアルタイムに移動体同士が衝突する可能性を計算し、それに従った動作が必要となるが、本稿では問題を単純化するために考えないものとする。

3. 優先順位の低い移動体の速度調節

十字路走行時の速度調節

図3.27: 十字路走行時の速度調節

図[ju6]①のように移動体の優先順位が決定しており、2台の経路が表示されている状態で、2台同時に自動走行を開始させる。

自動走行が開始すると、図[ju6]②のように、優先順位の高い移動体(移動体 A とする)が交差点を抜けるまで、優先順位の低い移動体(移動体 B とする)は衝突しない程度に減速する。

l = 移動体Bの経路の長さ

t = 移動体Aが交差点を抜けるまでに要する時間(移動体Aの交差点退出時のノードまでの経路の長さ / 移動体Aの速度)

とした時、速度 v

 v = l / t

に、適度な余裕を持たせたものとする。この場合の適度な余裕とは、実機を用いて実験したときに経験的に得られた値で、衝突の可能性を低くし、かつ、過剰な減速にならない程度の速度差であり、20mm/sec の減速としている。

移動体Aが交差点を抜けると、図[ju6]③のように移動体Bの速度を移動体側のプログラムで設定した既定値に戻す。また、この時、同じ通路に2台が進入したときは、2台間の距離に応じて移動体Bの速度を調節する。3.2 節の追従走行とほぼ同じ状態であるが、ここでは追従走行の時のように速度調節の段階が多くなく、移動体Bが移動体Aに近づきすぎた場合に一時停止するようにした。しかし、ここでも追従走行のように速度を調節した方が安全であると思われる。

経路変更を行う場合については、経路変更した後には何も行わない。しかし、この手法は、2台がほぼ同時に交差点に進入しない場合、交差点の外で移動体同士が衝突する可能性は考えられる。そのため、ほぼ同時に交差点に進入するよう速度調節をする必要がある。もしくは、交差点の外においても、衝突しないように経路を変更する必要がある。

3.3.2 実機による動作確認

本項では、実際の十字路ではなく、模擬的に作った十字路における実験について説明する。パターン2と3 においては、図[jikken1] のように段ボール箱で短い十字路を模擬的に作り実験した。パターン1 においては十字路でなくても動作を確認できるため、図[jikken2] のように T字の廊下で実験した。

まず、パターン2,3 時の実験について説明する。

パターン2と3の実験環境

図3.28: パターン2と3の実験環境

パターン1の実験環境

図3.29: パターン1の実験環境

パターン2と3の時の環境地図は、図[jikken1-1] の通りである。図[jikken1] から分かるように狭い通路であるため、自動生成したノードでは自動走行が困難であった。そのため、自動走行しやすいように簡単な配置でノードを設定した。この時のノードの配置は、交差点内のノードを抽出することはできたため、実験への影響はなかった。ただし、経路変更をするためのノードが足りないため、この環境でパターン1の実験を行うことは不可能である。そのため、経路変更を行う際は、既存のノードとは別に、適切な場所に新しくノードを生成するなどして、このような環境にも適応する必要がある。

実験時の環境地図 (1)

図3.30: 実験時の環境地図 (1)

このような環境で、図[jipa] に示すパターン2と3 の全てを実験した。それぞれ5回ずつ試行し、移動体同士が衝突したり、目的地に到着する前に停止してしまった場合を失敗とし、目的地に到着することのできた場合を成功とする。結果を表[res1]に示す。図[jipa] 内の番号と表[res1]の番号は対応している。

パターン2と3での実験パターン 

図3.31: パターン2と3での実験パターン 

表[res1] のように、成功率(成功した回数 / 試行回数)は全て80%以上となった。これらはすべて移動体間では衝突せず、目的地に到着することができた。また、失敗の要因に「自動走行継続不可」とあるが、これは、狭い通路であったため、自動走行を続けることができないという判定に入った場合に移動体が停止し、実験が途中で終了した場合のことである。そのため、本研究の成果とは関係がない。③では、2台間の距離が閾値未満となったために優先されない移動体が一時停止する予定だったが、優先される移動体がスムーズに自動走行せず進まない状態が長く続いたことにより、優先される移動体は停止している状態と判定した。その判定のため、優先されない移動体は停止することになった。そこで、停止する場合の条件を厳しくする必要があると考えられる。

表3.2:パターン2と3 の実験における成功率と失敗の要因
  成功率 失敗の要因
100%

80%

自動走行継続不可
80%一時停止ではなく停止した
80%自動走行継続不可

100%

100%
100%
80%自動走行継続不可

次に、パターン1 における実験について説明する。図[jikken2] から分かるように、この実験の環境も、2台のAT が簡単にはすれ違うことのできない程度の狭い通路である。この時の環境地図は図[jikken2-1] の通りである。この実験では、2台がすれ違う時に接することのないように、自動生成したノードの間隔を変更した。

実験時の環境地図 (2)

図3.32: 実験時の環境地図 (2)

このような環境で、図[jipa2] に示すパターン1を実験した。パターン2・3 と同様に5回ずつ試行した。結果を表[res2] に示す。表[res2] の番号は、図[jipa2] 内の番号に対応している。

パターン1での実験パターン

図3.33: パターン1での実験パターン

表[res2] のように、成功率は約70%であった。しかし、パターン2,3と同様に、自動走行はスムーズに行えない場合があった。また、スムーズに走行できない場合、2台がほぼ同時に交差点に進入することはできない。そのため、②のように移動体同士が正面衝突する可能性は高い。そこで、3.3.1項でも述べたように、2台がほぼ同時に交差点に進入するように、速度調節を行う必要があると考えられる。

表3.3:パターン1 の実験における成功率と失敗の要因
成功率失敗の要因

80%

・自動走行継続不可

60%

・自動走行継続不可

・2台間で衝突

以上の2つの実験から、本研究の手法により、十字路を走行する2台の移動体が衝突を回避することが可能であると考えられる。しかし、結果からも分かるように改善の余地はあり、改善することにより成功率は高まると考えられる。また、この手法で用いている様々なパラメータは、環境の規模の大きさに従い定めているため、環境が変わるたびにパラメータを変更する必要があり、多少のコストがかかる。そのため、パラメータの調整を学習的に行う必要があると考えられる。もしくは、パラメータが必要ない手法を考案する必要がある。さらに、大規模な環境や実際の十字路で運用することができるかを確認する必要もある。

また、実験からも分かったように、この手法を実機で使用する場合、移動体の自動走行の精度が大きく影響する。特に今回のように細い通路の場合は、自動走行の精度が低くなりがちであり、実験の成功率を下げる要因ともなっている。そのため、本研究とは別に、移動体の自動走行の精度を上げることは今後の課題である。

4 関連研究

本研究は、移動体間において連携的、または協調的な行動をとることにより、複数移動体の安全走行を実現することを目的としている。また、移動体間の連携・協調のために重要となる情報の共有のために、移動体の位置や走行速度等の情報を一括して管理することのできる位置情報サーバーを開発した。本研究の関連研究として、4.1節では信号機を用いない自律分散型交通制御に関する研究、4.2節では自律分散型モバイルロボットによる衝突回避に関する研究、4.3節では ITS について紹介し、それぞれについて本研究との違いを述べる。

4.1 信号機を用いない自律分散型交通制御

交通渋滞の解消を目的 とした研究は、信号機制御だけでなく Multi-modal Transit(電車、バス、自転車、船、飛行機など他 交通機関も含め、交通需要を分散させる方法)、 Transportation Demand Management(高速道路 の深夜割引など、道路利用時間帯をシフトさせ時間的に交通需要を分散させる方法) 、Adaptive Cruise Control(速度や車間距離を一定に保つ)の開発など様々な切り口から行われている[13]。しかし、多くの交通制御手法は信号機を用いることを前提としていることが特徴である。

本研究において、屋内走行を前提としているため信号機は存在しない。千田らも既存の交通制御手法が信号機を用いることが前提であることに疑問を持ち、信号機を用いない場合に可能な交通制御手法の検討という方向から、交通渋滞の解消を目的とした交通制御問題を考察した。本研究では、交通事故が多発しているという理由から交差点に着目したが、千田らは交通渋滞を引き起こす要因のひとつであるという理由から交差点に着目し、信号機を用いない交通制御手法として、交差点が空いていれば、いつ でも、どの方向からでも交差点を通過することができるようなパケットスイッチ型ネットワークを模した交通制御手法を考案した。パケットスイッチ型ネットワークは、通信する2つのノード間に論理的に直接接続するための回線を使って通信するという通信モデルである回線交換型ネットワークよりも、耐障害性や回線利用効率に優れていることが知られている。千田らは、信号機を用いない交通制御手法として Priority-Based Traffic Control (PBC)を提案した。PBC は、知能を持った車同士の相互作用によって交通を制御 するマルチエージェントシステムである。 車は、センサーから得られる環 境情報のほか、車車間通信を用いて他車の情報を取得する。得られた情報を共通のプロトコルに従って処理し、 行動を決定する。交通はこれらの車の行動の結果として 自律分散的に制御される。 このシステムでは、従来は制御される対象であった車自身が制御の主体となるため、あらかじめ信号機を設置する必要がなく、交通制御を行うことができる。本研究と同様に、車両がの経路が交錯する場合は Priority を計算し、 Priority の高い車両が優先的に交差点を通過する。

本研究では、位置情報サーバーを用いてすべての移動体を制御する手法を用いた。これは、一括して管理・制御する方が、自律分散制御より容易であるからである。しかし、もし位置情報サーバーに何らかのトラブルが発生した場合、交通が混乱し事故を誘発する可能性が増大する。そのため、位置情報サーバーにトラブルが生じた場合は、交差点においても、この研究で提案されているように移動体が自律的に対応できる手法を考える必要があり、本研究の今後の課題である。これについては、5.2.3 項で詳しく述べる。

4.2 自律分散型モバイルロボットによる衝突回避

複数の自律的モバイルロボット間における協調的な衝突回避は、センサーを用いた方法とネット ワークコミュニケーションを用いた方法が考えられる。 センサーを用いた衝突回避の場合、衝突回避行動をタイムリーに行うことができるが、センサーは有効距離が短いため、モバイルロボット同士が接近するまでお互いの 認識ができない。また、モバイルロボット間に障害物が存在する場合は、お互いの認識が衝突の直前となり衝突が回避できない場合があり、モバイルロボットが密集している場合には、モバイルロボット間に他のモバイルロボットが障害物となり認識でき なくなる。 一方、ネットワークコミュニケーションを利用した場合は、ワイヤレスネットワークを 用いることにより通信遅延が発生する可能性があるため、センサーを用いた場合のようなタイムリーな処理は困難である。しかし、センサーを用いる場合と比べ広範囲で衝突回避処理が可能である。また、モバイルロボット間のモバイルロボット以外の障害物を意識することなく衝突回避ができる。

そこで東原は、ネットワークコミュニケーションを用い、確実に衝突を回避可能なシステムを提案した[4]。この衝突回避システムは、ネットワークコミュニケーションを用いモバ イルロボットの移動経路を予約するシステムである。モバイルロボットが移動前に移動経路を予め予約しておくことにより、他のモバイルロボットは予約されている移動経路を利用できない。予約が許可されるまでモバイルロボットは移動を開始することができないため、モバイルロボット間の衝突は起こらない。また、移動経路の予約は、経路の分散管理によって処理される。この分散管理とは、一括して予約を管理するサーバーのクローンを複数台のサーバーに分散して管理する方法である。モバイルロボットの移動経路予約を分散的に管理することにより、特定のサー バーを意識する必要がない。また、あるサーバーが故障した場合でも、モバイルロボットの全体の移動に大きく影響しない。1 台のモバイルロボットが移動経路全てを 1 度に予約することで、移動経路の予約の管理が容易となる。そのため、モバイルロボットの台数が増加した場合でも、移動経路の予 約に必要な通信のコストも少なくなる。しかし、他のモバイルロボットは、予約している モバイルロボットが移動を終了し予約を解放するまで移動できず長い時間待機しなければならない。衝突の可能性がある モバイルロボットの台数が多くなるほど、モバイルロボットの待機時間は長くなる。そこで、任意の時間において、可能な限り多くのモバイルロボットを移動可能にするために 、移動経路を細かく分割し、分割した移動経路の断片を予約する方法を用いている。

以上のようにこの研究では、1台のモバイルロボットが移動している間に他のモバイルロボットが停止することにより衝突回避を実現した。しかし、理想的な衝突回避とは、停止による交通渋滞を引き起こすことなく、効率的にロボットが移動できる状態で行うものであるべきである。そのため、本研究のように可能な限り停止することなく移動することが望ましい。また、前節で自律分散的制御について述べたが、この研究では、協調のための情報を複数のサーバーで分散管理している。分散管理は、1つのサーバーのみに負荷をかけないという点では、本研究の位置情報サーバーでの集中管理より優れている。しかし、サーバーを分散させるということには多少のコストがかかる。そこで、サーバーの影響がない自律分散的制御が最も理想的であると考えられるが、分散管理の優れている面も考慮に入れる必要があると思われる。

4.3 ITS (Intelligent Transport Systems)

ITS(Intelligent Transport Systems:高度道路交通システム)とは、人と道路と自動車の間で情報の受発信を行い、道路交通が抱える事故や渋滞、環境対策など、様々な課題を解決するためのシステムである。常に最先端の情報通信や制御技術を活用して、道路交通の最適化を図ると同時に、事故や渋滞の解消、省エネや自動車と自然環境 の共存を図っている。関連技術は多岐にわたり、社会システムを大きく変えるプロジェクトとして、新しい産業や市場を作り出す可能性を秘めている。[http://www.its-jp.org/]

日本の ITS 推進に関する全体構想は、「ナビゲーションシステムの高度化」、 「自動料金収受システム」、 「安全運転の支援」、 「交通管理の最適化」、 「道路管理の効率化」、 「公共交通の支援」、 「商用車の効率化」、 「歩行者等の支援」、 「緊急車両の運行支援」 といった9つの開発分野から構成されている。また、ITS 推進の指針として、「安全性向上」、「円滑化・環境負荷軽減」、「利便性向上」、「地域の活性化」、「基盤の整備と国際化」という5つの分野がある。また、今後は「地球環境や安全、渋滞などの交通課題を解決し、人々の豊かな生活と産業・文化の発展に期する」、すなわち「持続可能なモビリティ社会の実現」に向けた取り組みが重要となっている。

また、日本の現在の ITS 推進を支えるのは以下の3つの柱である。

① 安全・安心

車車間通信・路車間通信を用いたインフラ協調型を含む安全運転シ ステムの開発・実用化が進められてきており、情報通信技術・自動車制御技術の進化と共に、信頼性・耐久性の高い交通安全対策のシステム構築が求められてい る。また、近年の交通事故は高齢者が関係した事故が急増しており、高齢者等も安心して移動ができる社会を作る必要がある。

② 環境・効率

地球温暖化の主原因とされる CO2 排出量の約2割は運輸部門が占め、その約9割が自動車から排出されている。また、 NO2、SPM(浮遊粒子状物質)等による大気汚染は特に大都市部等において深刻な状況にある。自動車単体のみならず、公共交通を含めた交通需要の適正 化、道路交通管理の高度化による交通流・物流の効率化といった ITS の活用により、環境にやさしい社会を目指す。

③ 快適・利便

最先端の情報通信技術を活用し、必要な情報を、いつでも、どこでもリアルタイムに享受できるユビキタスネットワーク環境を構築し、誰もが快適で意のままに 移動できる社会の実現に貢献していく。こうした社会実現においては、地域社会の活性化や高齢化社会という視点からの検討も必要である。

本研究における位置情報サーバーは ITS の一種である。しかし本研究では安全性を重視しているため、位置情報サーバーは上記のように多くの役割を担っているわけではない。そのため、今後は位置情報サーバーの役割を安全面以外の面に対して拡張していく必要があると考える。これについては、 5.2.1 項で詳しく述べる。

5 おわりに

本章では、本研究のまとめを 5.1 節で述べ、今後の課題について 5.2 節で詳しく述べる。

5.1 まとめ

本研究では、近い将来、自動走行可能である知的な移動体が複数、同時に稼働している環境が実現すると予測した。そして、その環境において自由に移動する複数の移動体同士が衝突せず、安全に走行できるための手法を提案し、その一部を実現した。その手法とは、移動体間において連携的、または協調的な行動をとるというものである。本研究は、環境中の全移動体が安全に走行できることを目標とするため、個人の技能に大きく影響される搭乗者の操縦による走行ではなく、移動体の自動走行を前提とした。また、本研究が想定する環境を屋内に限定し、屋内であるため左側通行という概念や信号機の存在もないものとし、さらに問題を単純化するため、移動体が2台の場合で考えた。

本研究における連携的な行動の一つとして、追従走行について考察した。一つの経路を複数の移動体が通らなければいけない場合、先に経路を通る移動体、後に経路を通る移動体という順序が必要になり、追従走行をする必要があると考えた。本研究における追従走行については、3.2 節で詳しく説明した。また、協調的な行動の一つとして、十字路において道を譲る行為について考察した。交差点が日本の道路形状別死亡事故発生件数の全体の約半数を占めていることから、想定する環境を交差点とした。さらに、交差点の中でもいくつかの特徴を有している十字路に限定した。十字路では、信号機がないという制約下で安全に走行するためには、道を譲るという行為が重要となる。本研究における十字路走行については、3.3 節で詳しく説明した。これらの問題を取り扱う上で重要となる情報の共有については、移動体の位置や走行速度等の情報を一括して管理することのできる位置情報サーバーを用いて実現した。さらに、サーバーを補助するプログラムを作成し、十字路走行時にはすべての移動体を一括して管理し、制御できるようにした。これらについては、3.1 節で詳しく説明した。

以上のような手法の有効性は、実際に実機で動作を確認することで検証した。3.2.2 項と3.3.2 項で述べたように、追従走行や十字路走行の成功率の平均を約80%とすることができた。このことから、本研究の手法により、想定した環境で移動体同士が衝突する可能性を低くすることができたと思われる。しかし、少しでも危険な可能性がある場合は確実に安全だとは言うことはできない。3.2.2 項と3.3.2 項で述べた通り課題も多く、また、実機にこの手法を適用する場合は、移動体の自動走行の精度が大きく影響することが分かった。そのため、この手法には改善の余地が多く残されている。

5.2 今後の課題

本節では、本研究の主な問題点を考慮して、今後の課題について考察した結果について述べる。移動の効率化と安全性について5.2.1 項で説明し、十字路走行時における十字路の検出方法について5.2.2 項で説明し、4.1 節でも触れた、移動体の自律分散制御について5.2.3 項で説明する。そして最後に、3.2.2 項や3.3.2 項で説明したとおり、本研究の手法の成功率に大きな影響を及ぼした移動体の自動走行の精度の向上について5.2.4 項で説明する。

5.2.1 移動の効率化

本研究の手法は、特に安全性を重視したため、3.2.2項で説明したように、結果的に移動の効率性を軽視する場合もあった。実用性を考慮すると、安全性を維持したまま、安全性と効率性のバランスがとれていることが望ましいと考えられる。したがって、移動に対する効率が向上するような手法を考えていくことが今後の課題である。たとえば、現在のサーバー補助プログラムは、移動体のリアルタイムな走行速度や状況を知ることはできない。これは、タイヤの回転数や速度などの実機の情報が、実機のプログラムでしか取得できないからである。このタイヤの回転速度などから、リアルタイムな速度を正確に取得することができるようになるだけでも、サーバー補助プログラムによる移動体の速度調節を無駄なく効率的に行うことができると考える。また、現在の手法では自己位置推定にのみ使用しているレーザーレンジセンサーの値を、障害物や他の移動体との距離を計測するために利用することで、より実環境に適応することができ、移動の効率性や安全性を向上させることができると考える。

また、本研究では問題を単純化するため、2台のみの移動体が稼働する環境を想定したが、本研究は多数の移動体の安全な走行を実現できることが望ましい。そのため、さらに台数が増えた場合に関して、シミュレータなどを使って詳細に分析する予定である。

5.2.2 画像処理による十字路の検出

本研究の十字路走行において、交差点内のノードを抽出するために、 3.3.1 項で説明したように手動で範囲指定をした後にノードを選択した。しかし、これは環境が変わるごとに手動で行わなければならないため、人間の手間がかかる。また、どの範囲を交差点とするかも、その時の選択の仕方によって異なる。

そのため、環境が変わり、異なる環境地図を生成、もしくは読み込む際に、容易に交差点を検出することが必要であると考える。これは、環境地図を画像処理することによって、交差点を検出することが望ましいと考えている。画像処理によって自動的に交差点を検出し、その結果から交差点内のノードを抽出することで、人間の手間を省き、交差点の範囲に一貫性を持たせることができると考える。

5.2.3 移動体の自律分散制御

本研究では、位置情報サーバーを用いて、移動体間ですべての移動体の情報を共有したり、すべての移動体を制御したりする手法を用いた。しかし、もし位置情報サーバーに何らかのトラブルが発生した場合、交通が混乱し事故を誘発する可能性が増大し、移動体が安全に走行することが困難になる。そのため、位置情報サーバーにトラブルが生じた場合は、4.1 節でも述べたように、交差点においても、移動体が自律的に対応できる手法を考える必要があり、それも本研究の今後の課題の一つである。

それにはまず、位置情報サーバーにトラブルが発生したことを各移動体が知ることのできる方法が必要である。そして、位置情報サーバーを用いることができないため、他の移動体の情報を取得できない状況への対策が必要である。これは、5.2.1 項でも述べたように、レーザーレンジセンサーの取得した値を用いることで解決できる部分もあると考える。たとえば、自分の走行する予定の経路上に地図にない障害物を認識した場合は、それを避けるように経路変更することができると考える。

5.2.4 移動体の自動走行の精度の向上

3.2.2 項と3.3.2 項で述べたように、本研究の手法を実機に適用する場合、移動体の自動走行の精度が大きく影響することが分かった。5.2.1 項でも述べたように、現在のサーバー補助プログラムは、移動体のリアルタイムな走行速度や状況などは取得できていない。そのため、シミュレータ上では成功する実験も、実機を用いたものでは、移動体の自動走行がスムーズに行われず失敗する場合があった。このように、本研究の手法に大きく影響を及ぼしているため、移動体の自動走行の精度を上げる必要があると考えられる。

3.3.2 項でも述べたように、特に狭い道での自動走行の精度は高くない。このとき、狭い道で自動走行しやすくするため、環境地図上の自動生成されたノードの配置を変更する必要があった。そのため、狭い道に対応できるように自動走行の経路を調節する必要性があると考えられる。

     

謝辞

本研究を進めるにあたり、指導教員である長尾確教授をはじめとする数多くの方々にご指導、ご支援等を頂きました。

長尾確教授には、研究に対する姿勢等のご指導に始まり、本研究に取り組むきっかけを頂き、また、本論文の執筆に関するご指導も頂き、この1年で多くのことを学ぶことができました。厳しくご指導頂いたため、とても成長することができたと思います。心から御礼申し上げます。

松原茂樹准教授には、ゼミなどを通して本研究に関する的確なご指南を頂き、本研究に関して様々な気付きを与えて頂きました。心より御礼申し上げます。

大平茂輝助教には、ゼミなどを通して本研究に対する鋭いご指摘を頂き、本研究に関して深く考える機会を与えて頂きました。心より御礼申し上げます。

長尾研究室の博士課程を卒業される石戸谷顕太朗さんには、研究生活に対するアドバイスや、社会人としての常識等をご指導頂きました。石戸谷さんのゼミでの的確な発言を見るたびに、勉強になっていました。ありがとうございました。

ATプロジェクトの先輩方である、渡邉賢さん、尾崎宏樹さん、矢田幸大さんには、本研究を進める上で、プログラミングに関するご指導や、本研究に対するアドバイスを多く頂きました。現在も未熟ではありますが、この1年で成長することができたと思います。本当にありがとうございました。

長尾研究室の先輩方である、竹島亮さん、棚瀬達央さん、川西康介さん、馮思萌さんには、研究生活に対する様々なアドバイスや、ゼミを通して本研究に関する的確なご指摘を頂きました。ありがとうございました。

同じ4年生である、井上慧さん、高雨蘇さん、小林尚弥さん、西脇雅幸さんには、本研究に対するご意見を頂いたことに加え、研究生活におけるサポートをして頂きました。ありがとうございました。

長尾研究室秘書であった鈴木美苗さんには、学生生活ならびに研究生活の様々な面でご支援頂きました。ありがとうございました。

松原准教授の秘書の土井ひとみさんには、研究生活の様々な面でご支援頂きました。ありがとうございました。

以上の方々を始め、本研究を進めるにあたり、ご支援、ご協力頂いたすべての方々に深く感謝の意を表します。

最後に、私があまり家に帰ることができずとも、日々の生活を支えてくださった両親にも心より感謝します。