2022年06月15日
テクノロジー

自動運転の民主化は進んでいる?新卒3人が1ヶ月で自動運転車を走らせてみた!

こんにちは、2022年度新卒社員の蓑田、祖父江、若林です。本記事では、新卒3名がAutowareで自動運転車を動かすというプロジェクトの成果をご紹介します。


20220615 Blog Image 01


1. 何をしたのか

ティアフォーは、自動運転の完成形を全て一社で作ろうとしているわけではありません。「自動運転の民主化」を目指し、企業や研究機関など多種多様なプレイヤーが協力して自動運転システムを作り上げていくコミュニティを形成するべく、オープンソースの自動運転ソフトウェアAutowareを中心としたプラットフォームの構築を目指しています。そして、現在ティアフォーVはそれを先導する役目を担っています。


自動運転の民主化のために我々が重要だと考えているのは、ティアフォー以外のプレイヤーが簡単に参入できることです。オープンソースで誰でもアクセスできる状態になっているとはいえ、外部から参入する障壁が高ければ、このプラットフォームを普及させることはできません。すでに世界中の企業や研究機関でAutowareは広く使われてはいますが、一方で、普段からティアフォー内で開発をしているエンジニアからすると、外部から見たときのAutowareがどのように映るのかはどうしても分かりづらいという課題がありました。


今回は、この参入障壁を更に下げるにはどうすればよいか、今年度から新しく入社した私たち新卒のメンバーが外部に近い視点から再検証を行いました。具体的には、内部の情報を一切参照しない状態で、社内で用いられている下記の2つの車両に、Autowareをインストールするところからはじめ、自動運転デモを行うところまでを一貫して行うというプロジェクトです。


次の2つの移動ロボットをインテグレーションしました。まず、簡単なハードウェア構成のLogieeで試し、次にJPN TAXIでより高度な機能を試しました。


20220615 Blog Image 02

Logiee:小型搬送ロボット


20220615 Blog Image 03

JPN TAXI:ロボットタクシー


新卒として実機を動かすという、ある種「新人研修」のようなプロジェクトで、いち早く自動運転の全体像を掴むことができるだけでなく、ティアフォーやひいてはAutowareコミュニティ全体に対してインパクトを出すことのできる、一石二鳥のプロジェクトです!


目的

  • 外部に近い視点でAutowareを使い、Autowareコミュニティへの参入障壁を下げる方法を検討する
  • Autoware並びに自動運転の全体像をいち早く把握する

2. 小型搬送ロボットLogieeを動かしてみた (3週間)

成果物:autoware.diff_driveが今回作成・使用したコードです。


車両インターフェースの準備

Autowareは、主に認識・判断・制御の3ステップで構成される、自動運転の中核を担うソフトウェアを指します。そして実際に走行する際は、LiDAR・カメラ・IMUなどのセンサの値を取得し、中で3つのモジュールを経て、最終的に車両への制御指令値を送信します。つまり、Autowareを車両にインストールためには


(1)搭載されたLiDAR、カメラ等から値を取得する
(2)各車輪に回転速度等の制御指令値を送る


という2つの機能を備えたインターフェースを用意する必要があります。


まず(1)についてですが、車両が自己位置の推定やオブジェクトの認識を行う際に必要で、例えばAutowareでは元となる地図とLiDARから得られた点群のマッチングを行うことで自己位置の推定が行われています(アルゴリズムの詳細についてはティアフォーのテックブログの過去記事で解説されています)。今回使用した車両にはVelodyneが搭載されていたため、公式のROSパッケージをインストールしました。


次に(2)については、各車輪に回転数(rpm)を与えるローレベルなコントローラーと、Autowareで使われている「Ackermann Steering」の値をそれら回転数に変換するコントローラーノードを用意しました。このインターフェースとなるノードを用意することで、Autoware側から出てくる車両への指令が実際の車両への指令に変換され、システムの意図通りに実機が動くようになります。


この時点でコマンドラインからコントローラーノードへトピックを投げることで遠隔で車両を動かしたり、車両が動いている最中の点群をセンサからリアルタイムで取得することが可能になりました。次のステップでは基準となる点群地図を作り、Autowareの自己位置推定モジュールを動かすことを目指しました。


点群地図の作成

移動ロボットの地図の形式としては2次元の「専有格子地図」などもありますが、AutowareではLiDARベースの3次元点群地図を用意する必要があります。Autoware自体ではSLAMに代表されるような地図作成の機能をサポートしておらず、ROSで提供されているパッケージやオープンソースのパッケージ、その他サードパーティーが提供しているソフトウェアを利用することになります。今回私達が利用したのは、ROS2に対応しておりかつLiDARのみでの地図作成ができる「lidarslam_ros2」というパッケージです。こちらがオフィスで得られた地図です。


これで車両が動きながらリアルタイムで自己位置を推定できるようになったので、次のステップではゴールまでの移動や周回といったプランニングを行うことを目指します。


20220615 Blog Image 04

点群地図の作成


20220615 Blog Image 05

作成した点群地図


ベクターマップの作成

Autowareでは点群地図とは別に、道路の走行可能領域や信号・標識などを定義したベクターマップという地図をプランニング等で利用します(関連するティアフォーのテックブログの過去記事)。リンクにあるようにこの地図の実体はxmlで記述されていますが、弊社の専用ツール「Vector Map Builder」を使うことで、前のステップで生成した点群地図に合うようにGUIでベクターマップを作成することができます。こちらがオフィスに対応するlaneletの図です。


今回は簡単のため、一方通行(図の時計回り)の周回路と駐車スペースを持ったベクターマップを作成しました。


ここまで来ればAutowareのプランニングの機能を使えるようになるので、今までのステップでセットアップしてきた(1)車両のコントローラー(2)点群地図と自己位置推定(3)ベクターマップとプランニングを組み合わせて、Autowareによる自律移動システムを車両で動かす準備が整いました!


20220615 Blog Image 06

作成したベクターマップ


100周デモ

ここまでの手順で、弊社オフィス2階を100周するデモを行いました。LiDARにより障害物があると一時停止することも確認しました。

 

弊社オフィス2階を100周するデモ


物体検知

自動運転を行うためには、人や車などの物体を認識し、それらがどう動くのかを予測しながら行動計画を行う必要があります。その第一ステップとして、LiDARのデータから物体を検知するシステムを動かしました。ただ、LogieeにはGPUが搭載されておらず、そのままでは物体検知を使用できないという問題がありました。というのも、現状のAutowareには物体検知の機能は含まれていますが、デフォルトの設定だとGPUを必要とする物体検知のモデルが呼び出されてしまいます。


今回は、Autowareに別で用意されているEuclidean Clusteringというアルゴリズムを代わりに使用しました。これは、深層学習ベースのアルゴリズムではなく、クラスタリングという古典的な技術をもとにした物体検知の手法です。深層学習ベースに比べると精度は劣るものの、周囲の物体や人をうまく認識することができるようになりました。


パーキング機能の検証

Autowareには通常走行以外に駐車場などを想定したパーキング機能も実装されており、この実験も行いました。この機能は、ベクターマップ上に駐車場のラベルを割り振り、そのエリアをゴールに指定することで、簡単に使うことができます。これはHybrid A*というアルゴリズムで車両運動モデルを考慮した経路探索が行われており、一回では曲がりきれない場合は切り返しも含めた経路を計算してくれます。


20220615 Blog Image 07

バック駐車の軌道生成と実行


3. ロボタクシーJPN TAXIを動かしてみた(2週間)

成果物:autoware.robotaxiが今回作成・使用したコードです。


コンピュータのセットアップ

JPN TAXIには既にオンボードコンピュータなどは搭載されていましたが、それに対して一から公式のAutowareをインストールしました。Autoware周りで詰まることはなかったものの、NVIDIA DriverとLinux カーネルのバージョン周りでなかなか所望のCUDAをインストールすることができず、これを解決するために数日の時間を要しました。


各種キャリブレーション

Logiee同様、JPN TAXIの車両のパラメータを求め、それをパラメータファイルに記述する必要があります。車両のパラメータには、例えば次のようなものがあります。


  • 車の運動モデルに関係する寸法(車体の寸法、ホイールベース、タイヤ径など)
  • センサのパラメータ(センサ-センサ間の相対位置と姿勢、カメラの焦点距離など)
  • 足回りのパラメータ(アクセル・ブレーキの踏み具合と加速度の関係など)

1つ目はメジャーなどによる大雑把な計測でもある程度使用に堪える一方で、2つ目や3つ目はそれなりに数学に基づいて推定してあげないと、自己位置推定などが正しく動作しませんでした。2つ目については内部で開発しているキャリブレーションツール、3つ目についてはAutowareに入っている専用のモジュールを使って推定しました。


例えば下は「accel_brake_map_calibration」というツールを用いて過去の走行データから足回りのパラメータをキャリブレーションした際の図です。青色の線で黃〜緑〜青色の点に対して補完を行っているのですが、当初は不十分な量のデータを用いたため図のように若干の乖離が残ったままになっており、このパラメータを用いて走行すると停止時に不自然に大きな減速が起きるという問題が起こりました。最終的に2つ目の図に表されるパラメータを用いるとその問題を解決することができました。


20220615 Blog Image 08

キャリブレーション結果(不充分)


20220615 Blog Image 09

キャリブレーション結果(良好)


Autowareには自律走行のためのモジュールだけではなくキャリブレーションのためのツールも用意されており、日々機能の追加・改善が行われています。


GPUを用いた物体検知

JPN TAXIはLogieeよりもパワフルな計算機を積んでいたため、Autowareの物体検知を起動しながら実際に走らせました。弊社の品川オフィス周りを手動走行して、周囲の車や歩行者が実際にリアルタイムで検知され、推定される予想軌道などが妥当であることを確認しました。


実車実験

これまでの実験はすべて弊社オフィス内にあるガレージで行ってきましたが、外部にある施設で自動走行の試験も実際に行いました。


自動運転を実際に走らせてみると様々な問題が生じることがわかりました。一例を上げると、停車時の挙動に問題が生じた場面がありました。停車が荒かったり、一時停止のポイントで停止線を超えて停止してしまう、などです。これについては、アクセルやブレーキの足回りのキャリブレーションがデータ不足でうまく推定できていなかったことが問題だということを特定し、しっかり推定したものに置き換えてあげることで解決することができました。


最終的には、交差点の走行や人(を模したマネキン)の回避を含むデモを行い、Autowareの機能が十分に使えていることを確認しました。

 

1区画を一周して最後に子供の人形を避けて駐車するデモ


20220615 Blog Image 10

障害物回避シーン


4. Autowareコミュニティ・TIER IVへのフィードバック

今回のプロジェクトを行った上で、Autowareコミュニティへの参入障壁を下げるために自分たちができることをまとめました。主に以下の3つにまとめられます。


  1. 新規参入者のハードルを下げるためのドキュメンテーションの改善
  2. 新たに車両のインテグレーションを進める上で発見された問題点の修正
  3. 開発・実機のインテグレーションをする上で感じた開発体制への課題感の社内への共有

私たちが特に課題だと感じたのが、1番目のドキュメンテーションだったので、少し詳細に説明します。ティアフォー内部であればドキュメント等から必要な情報を参照できる環境が整ってはいるものの、外部目線のドキュメンテーションは、下記のように、いくつか不足している点があると分かりました。


  • Autoware DocumentationのInstallationやTutorialが不明瞭で分かりづらい。
  • 個別具体的な問題(停車が荒い、など)に対する対処法が検索してもなかなか出てこない。
  • 各モジュールが全体としてどのように繋がっているのかが分かりづらい。

これらの問題を解決するために、次のような改善を行いました。



今回のフィードバックにとどまらず、外部視点でのドキュメンテーションの充実化は怠らぬよう心がけていきたいと思います。


5. まとめ

今回は、新卒3名が、外部の視点でAutowareの実機へのインテグレーションを行い、それを通してどのようにしてAutowareコミュニティへの参入障壁を下げるかを検討するプロジェクトの紹介を行いました。


Autowareは基本的に使いやすく、その意味で民主化は着実に進んでいるのではないかと感じました。Autowareと車両とのインターフェースの部分でのデバッグで多少時間を取られたものの、それを除けば、新卒3名という非力なチームでも、2つの車両を合計1ヶ月程度で自動走行させるまでに持っていくことができました。なにか問題が発生したときにも、AutowareのIssueやDiscussionsページでコミュニティからフィードバックが得られる環境が整っており、オープンソースの強みを実感できました。一方でドキュメントを中心に問題点も洗い出すことができ、参入ハードルを下げることに貢献することもできたかなと思います。今後も会社の目標を達成すべく日々改善を進めていきたいと考えています。


この記事を読んで、外部視点で改善されたAutowareを触りたくなった読者の皆さま、ぜひAutowareを一緒に開発しませんか?今すぐThe Autoware Foundationに参加しましょう!


オープンソースのソフトウェアを一緒に開発していきませんか?


ティアフォーでは、「自動運転の民主化」というビジョンに共感を持ち、自らそれを実現する意欲に満ち溢れた新しい仲間を募集しています。


キャリアページ


Media Contact
pr@tier4.jp


Share the post
LinkedIn | Twitter | Facebook | Instagram


More
Autoware—Github | The Autoware Foundation