#author("2022-04-17T11:17:15+00:00","default:ail-wiki","ail-wiki") #author("2022-04-17T11:19:18+00:00","default:ail-wiki","ail-wiki") [[太田研 公開用Wiki]] #contents *はじめに [#r25bd6f3] *研究背景 [#qe7a0dfc] 近年、 自動化技術の発達や少子高齢化による人手不足により、人とロボットが協働で動く例も増えてきており、 人間と協働で働くロボットによる自動化技術が注目されている。 ロボットの自動化のためには、自動で周囲を認識し、正確に動作を行う必要があるが、 周囲の環境が変われば、使用するパラメータも変化する。特に屋外で動作させるには、 そのパラメータの数は無数に増える上、実機で動かせるかどうかはやってみなければわからない例が多い。 そのなかで、人々が普段使っているあるがままの実環境(リアルワールド)における、自律走行技術の進歩を目的 とした「つくばチャレンジ」が毎年茨城県つくば市で開催されている。この「つくばチャレンジ」への参加のための自律走行システム へ適切なパラメータを与えるためのツールを開発する。 *つくばチャレンジについて [#mb5ad653] **つくばチャレンジの課題 [#y3c26753] - 走行環境 -- つくば市役所周辺の歩道 -- 研究学園駅前公園 -- 研究学園前駅の入口 -- つくば市役所と研究学園駅前公園の間の歩道・交差点 - 必須課題 -- スタートからゴールまでの約2.5kmの課題コースを自律走行する - 選択課題 -- 事前走行なしエリア -- 信号認識横断 -- チェックポイント通過+経路封鎖迂回 -- 探索対象発見 必須課題としては、つくば市役所の脇の歩道からスタートし、 研究学園駅前公園にある折り返し通過したあと、 再びつくば市役所に戻ることとなっている。 選択課題は複数設定されており、 2項目達成することによって課題達成となる。 選択課題Aは、市役所庁舎内へ事前走行なし、 つまり事前データなしで自律走行させる。 選択課題Bは、信号のある横断歩道を渡る際、 ロボット自身に信号の赤・青の認識を行う。 選択課題Cは、公園内に設定されたチェックポイントのうち、 運営に設定されたいくつかのチェックポイントを通過する。 ただし、チェックポイント間の通路に封鎖経路看板が置かれている場合がある。 その場合は、看板を自動に認識し、別のルートを計算するところまで自動で行う。 選択課題Dは、公園内のチェックポイント周辺に探索対象である マネキン人形が設定されており、ロボットを接近したあとに一定時間停止する。 **ウェイポイントについて [#ka73af09] ロボットに自律走行させるには、どの経路を走行させるかという情報を ロボットに与える必要がある。 この経路の情報をウェイポイントと呼んでいる。 実際の走行経路と、ウェイポイントを可視化すると 図1のようになる。 #ref(./waypoint_line.png,center,50%) CENTER:図1.想定する走行経路と必要なウェイポイント つくばチャレンジに関しても、自律走行を行うために あらかじめウェイポイントを作成する。 このウェイポイントによって、ある程度の経路を決定するが、 動的な障害物に関しては回避が必要なため、 ロボットが経路上を走るとは限らない。 例えば、人や自転車やコーンなどの動的な障害物が 経路上に現れた場合は、図2の例のように経路が変化する。 #ref(./waypoint_adl.png,center,20%) CENTER:図2.障害物による走行経路の変化 ロボットがウェイポイント上を必ず走る訳ではないが、 基本的にはウェイポイントを追従するので、 できるだけ通路の中央へウェイポイントを設置する。 他にも、細い道や人が増えるエリアについては できるだけ通路の中央に経路を設定したり、 細かくウェイポイントをうつことで 人の多いエリアを避けるなどの注意が必要となる。 自律走行システムによって用意するべきデータが変わるため、 各チームが独自のウェイポイント作成ツールを開発している。 *研究目的 [#v197bba2] これまでに開発したウェイポイント作成ツールでは、実機調整を繰り返し行うことを前提としていなかったため、 調整と実機テストの切り替えに時間を要し、 ウェイポイントの準備を十分に行えなかった。 本研究では、自律走行のためのシステム開発と実験走行を 円滑に行うため、実機での調整に適したウェイポイント作成ツールの開発を行った。 ここでは、ウェイポイント作成ツールを 自律走行のシステムに直接組み込むことにより、 ウェイポイントの修正と実機テストの切り替え時間を可能な限り減らし、 ウェイポイントの準備を効率的に行えるように開発を進めた。 *従来のウェイポイント作成方法と問題点 [#g432dc79] この章では、これまで使用していたウェイポイントの作成方法とその問題点について述べる。 **従来のウェイポイント作成ツールについて [#w6d857c4] 2019年度のツールの特徴としては、 - ウェイポイントを新規に設定できる - 1つのウェイポイントの位置修正(上下左右方向) - 1つごとにパラメータの設定が行える - CSVファイルとしてデータの保存・読み込みが可能 であり、 ウェイポイントに関して修正は多くないという想定で 開発されている。 **問題点 [#o31c3801] ***データの修正と修正したデータによる実験がシームレスに行えない} [#y0aafa59] ***データの修正と修正したデータによる実験がシームレスに行えない [#y0aafa59] 従来のウェイポイントツールでは、経路上にウェイポイントを 設定しておけば、問題なく自律走行が行えることを前提として いるため、実験と修正を素早く繰り返し行えるように作られていない。 しかし、 今回のつくばチャレンジでは、 自律走行システムの開発と同時に 適したウェイポイント・パラメータの準備が必要であることにより、 ウェイポイントの設定位置・パラメータの試行錯誤が 必要であることや、 細かい走行経路の調整を行う際に、 推測でウェイポイントをずらす必要があったため、 修正と実験を繰り返す必要があった。 よって、修正と実験の切り替え時間が重なり、 大幅なタイムロスに繋がっていた。 また、実験走行中に修正したいデータが見つかった際、 その場で修正することはできず、一度拠点に戻る必要があった。 これによって、実験走行中に一部のデータに不備があった場合、 次の実験走行まで修正と修正後のデータによる実験ができない状態になっている。 ***2)操作ミスの多発 [#l58fbd50] ***操作ミスの多発 [#l58fbd50] ウェイポイント生成ツールと自律走行モジュールの間は、 CSVファイルを介しており、 CSVファイルの設定は人が行うため、 ファイル名の設定ミスが多発した。 実験走行中に発見したウェイポイントの修正点は、 メモに書き込んでいたが、修正は複数発生したため、 メモの時点でのミスや、メモを読み間違いによるミスが発生した。 ツールの使用時には、 常に北が上として描画されていることから、 ウェイポイントのずらす方向を間違えたり、 修正前のウェイポイント位置が描画されないことにより、 修正したかの判断がつかないなど、 不便な点があった。 *開発したツール [#sa4ac86d] この章では、開発したツールのシステム構成、 ウェイポイント作成・調整方法、外観・実装機能ついて述べる。 **システムの構成 [#xfdfadae] システムはROS2を使用して開発した。ROS2はROSを改良したものであるが、 2021年時点ではROSからROS2への移行はまだ進んでおらず、ROSの利用者が多い。 ROSはRobot Operating Systemの略であり、 ロボット向けアプリケーションの開発者のために作られたミドルウェアである。 ロボットをハードウェアとしてアプリケーションを開発するために 便利なライブラリやツールを提供するため、つくばチャレンジでも活用例は多い。 ROSは、大規模なプログラムを機能ごとに分担して開発するのに向いている。 プログラムを複数の実行可能ファイルに分けて開発できるという利点があり、採用している。 一つのプログラムの単位をノードと呼び、 ノード間はROSの提供する通信方式(トピック通信)で通信を行う。 ウェイポイント作成ツールを含めたシステムの構成を図3に示す。 #ref(./dsc.png,center,15%) CENTER:図3.システム構成 **ウェイポイント作成・調整方法 [#a2c5a47f] ウェイポイントの位置やパラメータの微調整と、 実機を使った実験の切り替えを行いやすくするため、 ロボット周辺のウェイポイントを優先的に編集可能なツールを作成した。 つくばチャレンジのような広大なマップでの 自律走行を考えたとき、ウェイポイントは図4のように環境地図上に無数に設置されている。 #ref(./many_maypoints.png,center,15%) CENTER:図4.環境地図上に存在するウェイポイントとロボット位置 これに対して、走行中に使用するウェイポイントはロボット周辺のみであるため、 ロボット周辺のウェイポイントのみを図5のように表示する形にした。 また、ロボットの方向に合わせてウェイポイント位置を回転させることで、 編集したいウェイポイントの位置がオペレータにも直感的に理解できる形とした。 #ref(./tool_image.png,center,15%) CENTER:図5.ウェイポイント描画方法 システム構成で述べたように、ツールは常にロボット位置情報を受け取り続けているため、 オペレータがロボットを移動させれば、それに合わせてウェイポイントは移動する。 従って、微調整を行いたいエリアに直接ロボットを動かして向かったあと、 その場でロボット周辺のウェイポイントの修正が行える。 ウェイポイントの修正機能に加え、 ROS2のモジュールとして自律走行システムに組み込むことで、 ウェイポイントの作成・修正と、新しいウェイポイントでの 実験の 切り替えがスムーズに行える構成とした。 **外観・入力インターフェース・実装機能について [#lea3c83b] ***外観について [#t7145ec3] ツールの外観を図6に示す。GUIはQtを使用した。 ツールの入力インターフェースはロボットのベースへ接続したゲームパッド・キーボードである。 画面左側の文字列は、最も近い位置にあるウェイポイントが持つ情報である。 背景の赤い部分は、環境地図を描画したものであり、ロボットが環境地図上の どのあたりにいるのか知るために使用する。 下の入力欄は、パラメータ入力欄であり、 ウェイポイントに新しいパラメータを設定する際に使用する。 #ref(./appearance.png,center,80%) CENTER:図6.外観 ***入力インターフェース [#ee7cbd2c] ゲームパッドを用いて、ウェイポイントの設置・移動・削除を行う。 ゲームパッドを使用するため、 パラメーについては、 文字列や数字を入力する必要があるため、 キーボードを使用する。 つくばチャレンジの実験中、キーボード操作によるタイムロスが大きいと判断したため、 キーボード入力が必須なパラメータ入力以外はすべて ゲームパッドに割り当てた。 ***実装機能について [#acd43e5e] 主に実装した機能を以下に示す。 - 環境地図の表示 - ウェイポイントの表示 - ウェイポイントの追加・削除 - パラメータの表示・変更 - 表示範囲の拡大縮小 - ウェイポイントの選択 - ウェイポイントのグループ選択 - ウェイポイントの移動 - 通行可能領域の生成・表示 - 障害物情報の追加・削除・表示 - 自律走行モジュールへのウェイポイントの引き渡し ***環境地図の表示 [#c965562d] 図7のように、ロボット周辺の環境地図を抜き出してツールへ表示する。 本研究室の環境地図は画像であるため、 ロボット位置周辺の環境地図を切り抜き、ロボットの方向に合わせ回転させて描画する。 環境地図は画像で画像座標系を使用していることに対して、 ロボット位置はロボット座標系であり、座標系が異なるため、 以下の変換が必要である。 #ref(./math1.png,center,50%) ただし、(xroi,yroi)、 (x'robot、y’robot})、 (WMAP}、HMAP)、(Wroi, Hroi)、 MPP はそれぞれ、 画像座標系のロボット周辺画像の左上頂点座標、 ロボット座標系におけるロボットの位置、 描画する環境地図のサイズ(ピクセル単位)、周辺エリアの 画像サイズ(ピクセル単位)、 MPP(meter per pixel)は 1 ピクセルあたりの長さ(m 単位)である。 #ref(./part_map.png,center,20%) CENTER:図7.ロボット周辺エリアの各座標 ***ウェイポイントの表示 [#c8e46df8] ウェイポイントの位置は、 環境地図の中心を原点としてロボット座標系を使用している。 周辺エリアへ描画するためには 絶対座標からロボットから見た相対座標へ変換する。 変換式は以下である。 #ref(./math2.png,center,50%) ただし、(x,y)、 (WMAP、HMAP)、 MPP、 yaw、 (x’waypoint、y’waypoint)、 (x’robot、y’robot)、 はそれぞれ、 描画する際の画像座標系のウェイポイントの座標、 描画する環境地図のサイズ(ピクセル単位)、 MPP(meter per pixel)は 1 ピクセルあたりの長さ(m 単位)、 ロボット座標系におけるウェイポイント位置、 ロボット座標系におけるロボットの位置 である。 ***ウェイポイントの追加・削除 [#he28444e] ウェイポイントは、 + 1点のみの追加 + 2点を指定し、2点の間に0.5m間隔で複数追加 の2つの追加方法を実装した。 直線上にロボットを走らせる場合は、2点を指定し直線上に並ぶように追加する。 ウェイポイントを追加する際、 設置する位置を以下の2つの座標から選択できる。 + 自己位置推定モジュールから得られるロボット座標 + 1の座標からスティック移動した後の座標 1の座標は、 現場で実験的にウェイポイントを作成したい際に使用する。 ロボットをマニュアル走行させながら、 ロボット位置にウェイポイントを設置していくことで、 実験用の簡易的なウェイポイントを作成できる。 自己位置推定モジュールからリアルタイムで得られるロボット位置の精度は、 0.25mの分解能であるため、ロボット位置に打ち込んだウェイポイントが0.25m離れた位置に 設置される可能性がある。 そのため、あくまで簡易的な実験に用いることを想定している。 2の座標は、 従来のウェイポイント作成と同様に、 経路データ上にウェイポイントを設置することを想定している。 ***パラメータの表示・変更 [#d89a932c] パラメータの変更は、ツール下の入力欄から行う。 描画エリア中心に最も近いウェイポイントに付与されているパラメータを、 図8のように表示する。 #ref(./param_show.png,center,40%) CENTER:図8.パラメータ表示例 ***表示範囲の拡大縮小 [#l823cc00] 図8~11に、0.1、0.05、0.025、0.01の4つのパラメータで描画した例を示す。 単位は、1ピクセルあたりの長さ[m]である。 このパラメータは自由に設定可能で設定ファイルへ記述する。 #ref(./zoom1.png,center,40%) CENTER:図8.倍率0.1[meter per pixel] #ref(./zoom2.png,center,40%) CENTER:図9.倍率0.05[meter per pixel] #ref(./zoom3.png,center,40%) CENTER:図10.倍率0.025[meter per pixel] #ref(./zoom4.png,center,40%) CENTER:図11.倍率0.01[meter per pixel] 自律走行モジュールの局所的経路計画は ポテンシャル法を用いており、 ウェイポイントの間隔によって生成する経路が変化する。 広い間隔で打つとウェイポイントの引力が弱まり、 障害物回避が優先される一方、 狭い間隔で打つと、ウェイポイントの引力が強まり、 設定した経路上を走りやすくなる。 よって間隔はエリアごとによって異なるため、 表示範囲の拡大縮小機能を実装した。 ***ウェイポイントの選択 [#tb32912f] 選択したウェイポイントに対して、位置やパラメータ修正を行う。 選択したウェイポイントは、 図12のように緑色の点として描画される。 #ref(./selectone.png,center,80%) CENTER:図12.ウェイポイント選択例 図13のように、中心に一番近いウェイポイントを青い点として描画し、 ゲームパッドのボタンを押すことで選択できる。 #ref(./kinbou.png,center,80%) CENTER:図13.選択候補となるウェイポイント 選択する際の基準となる中心位置は、 基本的に実際のロボット位置を示しているが、 ゲームパッドのスティック入力により移動できる。 ***ウェイポイントのグループ選択 [#dd039547] 図14にグループ選択の例を示す。 緑色の点として描画されているウェイポイントが選択されている。 #ref(./selecrtmulti.png,center,80%) CENTER:図14.グループ選択例 実験中に広い範囲のウェイポイントに修正を加えたいケースで使用する。 ウェイポイントには読み込む順番を決めるインデックスが振られているため、 選択開始位置のインデックスと終了地点のインデックスまでのすべてのウェイポイントに 対して位置やパラメータの変更が行える機能を実装した。 ***ウェイポイントの移動 [#x1ce41b2] 選択したウェイポイントを上下左右方向へ10cm単位で移動させる。 ***通行可能領域の生成・表示 [#w74c93b7] ウェイポイントから半径r[m]以内を走行可能エリアとする。 通路を外れるべきでないエリアに関しては、このパラメータを小さくすることで対応する。 通行可能領域の設定例を図15に示す。 マゼンタで塗りつぶしている領域が、通行可能領域である。 #ref(./travelable.png,center,80%) CENTER:図15.走行可能領域の設定例 図15のエリアの実際の写真が図16である。 図16のように、通路がせまいエリアでは、 障害物回避の際に通路から外れる場合がある。 それに対応するため、走行してもよいエリア設定を行う際に使用する。 #ref(./semai.png,center,80%) CENTER:図16.つくばチャレンジにおける狭い通路の例 ***障害物情報の追加・削除・表示 [#ua3df589] 障害物情報の設定例を図17に示す。 青色のエリアは障害物として扱い、走行経路の候補のうち青色のエリアへ侵入するものを外す。 #ref(./obs.png,center,80%) CENTER:図17.障害物情報の追加例 実環境での実験時、養生中の芝生や、 車道すぐ側の草むらなど、ロボットの走行が好ましくないエリアや、 植林のために穴のあるエリアなど、 ロボットに自動で走行可能か判別がつきづらいエリアが存在する。 通行可能領域エリアは、あくまでウェイポイントに半径数m以内が通行可能か という情報のみを与えているため細かなエリア設定が十分に行えない。 そのため、通行可能領域上に障害物情報を上乗せすることで、 細かな領域設定を行う。 *開発したツールの評価 [#nfc885b0] **つくばチャレンジ2021での評価 [#s6c2c219] ***作成した経路の範囲と実験時間について [#y76b11b1] 今年度のつくばチャレンジにおいて、 ウェイポイント作成ツールの完成したタイミングが 本番の一週間前であったため、 公園内のすべての経路のウェイポイントを用意することができなかった。 よって、約2.0kmに渡る経路のウェイポイントを作成し、 ウェイポイントの数は、4457個のウェイポイントとなった。 この4457個のウェイポイントに対して、1日あたり約5時間が自由に走行できる実験走行日を2日間と、 本走行の午前中の1時間を使用し、調整と実験を行った。 ***全体のウェイポイント修正・実験について [#u4abafa6] ウェイポイント修正そのものは数分で行えた。 デバッグも含めていくつかのパラメータを設定して実験を行うため、 繰り返し実機調整とパラメータ調整が必要であったが、 従来のツールよりもウェイポイントの作成と修正の時間は短くなり、 最低限の時間で必要な設定を行えた。 **考察 [#a6cbd3b9] 約2日間で、実機での実験を含めたウェイポイント作成を行うことができたため、 最初の目的であった "ウェイポイントの位置やパラメータの微調整と、 実機を使った実験の切り替えを行いやすいツール"の開発はできたと考えられる。 ただし、つくばチャレンジには実験日と実験時間が決められており、 すべてのウェイポイントを現場で微調整していく方法では、 今後走行範囲が広くなった場合に限界があると思われる。 **展望 [#se1b3aba] 今回のツール開発のアイデアとして、 環境地図を頼りにした正確なウェイポイント作成は難しいため、 ある程度は大まかに作成しておき、 現場を見て修正するという方法をとっていた。 しかし、今後は 路面画像などの視覚的な情報を組み合わせたり、 シミュレーション機能を実装するといった工夫を行うことで、 現場から離れた場所でも調整可能なツールを開発し、 現場での調整を限りなく減らすことで、 より広いエリアでの自律走行の事前データ作成に対応したい。 *むすび [#p02b58d3] つくばチャレンジでの事前データであるウェイポイントの作成および実験を 短期間で行うために開発した 実機調整に適したウェイポイント作成ツールについて述べた。 つくばチャレンジ2019での参加時は、 自律走行システムの開発で手一杯となっており、 ウェイポイント作成の際の調整時間を大きな問題として 扱っていなかった。 一方、 つくばチャレンジ2021では、 つくばチャレンジ2019で開発した自律走行モジュールをある程度引き継いでいたことで 早めに問題に気づき、対策を練ることができた。 広大なエリアでの安定した自律走行を行うためには、 適切な位置へのウェイポイントの設置と エリアごとに設定するパラメータを必要が必要となる。 つくばチャレンジで必要となる走行経路は、トータルで4kmに渡り ウェイポイントの数は約8000個に及ぶため、 ウェイポイント位置の微調整や、パラメータ調整にかかる時間が問題となった。 そこで、リアルタイムでのロボット周辺のウェイポイント修正の時間短縮と 負担軽減を目標に機能実装を行った。 自律走行モジュールの開発は試行錯誤しながら進んでおり、 実験を繰り返し行う必要があった。 実験と調整のスムーズな切り替えを実現するため、 ウェイポイント作成ツールをROS2のモジュール化し、 自律走行モジュールに組み込んだ。 これによって、 ウェイポイント修正と 必要なウェイポイントの引き渡しの切り替え時間を無くした。 また、つくばチャレンジは歩道や公園内などの屋外での実験であり、 落ち着いてキーボード操作を行える環境でなかったため、 キーボード入力を徹底的に省略し、 ロボットの操作に使用するゲームパッドのボタン・スティック入力に割り当てた。 このようなオペレータの負担の軽減につながる機能も積極的に実装した。 今後の課題としては、 現場から離れた環境でウェイポイントの作成・調整可能なツールの開発 を行うことが挙げられる。 本年度のウェイポイント作成ツールは現場での調整に特化していたが、 現場での調整時間が限られていたため、 時間の余裕のない実験を行う必要があった。 路面画像などの視覚的な情報を組み合わせるといった工夫を行うことで、 現場から離れた場所でも調整可能なツールを開発し、 時間の余裕のある実験を行える環境を作ることで、 自律走行システムの開発と発展へ繋げていきたい。