2019.04.10

信号・標識・横断歩道…自動運転車は、どうやって交通ルールを守るの?

世界中の自動車メーカーが競って開発を進める自動運転車。最近では、大手のIT企業も開発に乗り出し、技術にしのぎを削っています。そんなホットなテクノロジーに取り組むのが、立命館大学泉研究室の学生たち。自分たちの手でイチから開発し、2018年に開催されたコンテストでも優勝したロボットカーを見せてもらいました。

ロボットカーの頭脳「FPGA」とは?

2018年9月に開催された、電子情報通信学会が主催のコンテストで、見事に優勝した泉研究室のロボットカー。いったい、どのような車なのでしょうか。

▲泉研究室のメンバー。左から泉知論教授、工藤裕也さん、高田厚志さん、堺拓実さん。

人が乗る自動運転車ではなく、その研究に役立つことを目指して、手で持てるサイズの小型自律走行車を開発しています。僕たちの作った「自律移動するロボットカー」の特徴は、その「頭脳」に「FPGA」というチップを搭載していることです。

FPGAは「Field Programmable Gate Array」の略で 、コンピュータに使われるLSIなどと同じ集積回路のこと。その内部のデジタル回路の構成を、後からかなり自由度高く変えられるのが大きな違いです。

LSIは基本的に、工場から出荷した時点で回路が固定化されていますが、使いたい用途に合わせて回路をデザインできるFPGAは、インターネットのルーター等の通信機器や、最近ではドローンなどによく用いられています。
FPGAの回路を組み替えるときは、回路を記述するためのハードウェア記述言語を使います。こういう用途に使いたい、と思ったとき、即座にその場で、思ったとおりの回路が組めるのが、FPGAの大きな利点ですね。

泉研究室のロボットカーは、このFPGAが頭脳となり、車輪を動かすモーターや、カメラなどの制御に使っているそう。

ロボットカーは、人が操作するラジコンとは違い、自分で外界を認識して、環境に合わせて動く必要があります。走行しながら自分で道路の地図を作成し、交通標識に従ったり、障害物や急に飛び出してくる人などを避ける能力も大切です。
自由度の高いFPGAだからこそ、そうした複雑な機能をトライ&テストしながら、組み込むことができるんです。
では、実際にロボットカーを走らせてみましょう。

ロボットカーの走行実験!

泉研究室には、走行実験用のコースが常設されており、ここで繰り返しテストを行いながら開発を進めているそう。ちなみにこのコースも彼らのお手製。ミニチュアの道路標識や信号機が設置され、本物さながらです。

▲スタンバイ中。PCにつないで、ロボットカーの頭脳にプログラムをインプット。

▲走り出した!

▲カーブも白線に沿ってスムーズに曲がる。

このロボットカーは、左右の車輪それぞれのモーターに取り付けたセンサーで、地図を自動的に作成していきます。車輪の回転数で走行した道路の距離を測り、左右の回転数の違いによって、道路がカーブしていることを認識するんです。
でも、ロボットカーは横滑りしたりするときもあるので、それだけでは正確な地図が作れません。そこで、搭載したカメラの映像で、道路の白線を認識して補正する機能を持たせています。白線が曲がっていれば、道路自体が曲がっているということなので、それに合わせてロボットカーも曲がるような仕組みです。

▲ロボットカーに搭載されたカメラの映像。

▲映像を俯瞰画像に変換し…

▲エッジを捉えてコースを認識。

▲カーブに沿った走行ルートを決定。ロボットカーはこのような処理を瞬時に行っている。

さらに複雑な「頭脳」への挑戦

カメラのもう一つの大切な機能が、障害物の認識です。先ほどもあった通り、実際の道路には様々な障害物がありますよね。ロボットカーがそれらに対応できるようにする必要がありました。

実際に彼らが参加したコンテストでも、工事現場によくある黄色と黒の標識や赤いコーン、右折の指示標識、人形などの障害物が道路に置いてあり、それにロボットカーがぶつかると、減点されるルールが取り入れられていたそう。

そこでFPGAに物体を認識するプログラムを載せて、自動的にロボットカーが障害物を避けて走る機能を持たせました。

▲信号や工事現場の標識、歩行者などの障害物を想定したコース。

▲障害物をマーカーが捉え、3次元で空間を認識している様子。

コンテストでは事前に、障害物のデータが公開されていて、それを3Dプリンタで作成することができます。しかし見え方は、高さや角度、明るさや背景でぜんぜん違ってくるので、それをFPGAに記憶させる必要があります。

人間ならばひと目で「同じ標識」とわかっても、コンピュータにそれを「同じもの」と認識させるのは簡単ではない、と工藤さん。カメラの映像では、窓から光が入ってきただけで、白飛びして見えなくなったり、見物しているお客さんの足を障害物だと認識してしまったり、予期せぬトラブルが起こるといいます。

そこで僕たちは、AIの領域で最近話題の「ディープラーニング」という方法を用いて、あらかじめさまざまな「障害物の見え方」をFPGAに記憶させておいて、障害物を認識するという手法をとりました。
まだまだ発展途上の段階ですが、コンテストに勝つことだけを目指した作り込みでは面白くないので、その先の汎用性を持った機能を目指しています。

「超」がつくハイレベル!悔しさを味わうも…

非常に高度な処理を行っているロボットカーですが、コンテストでの優勝には機能だけでなく「小型化」というもう一つの壁がありました。

コンテストに出場できるロボットカーの大きさや重量は、厳しく制限されており、それに合わせた仕様の中で最大限の能力を発揮させるのが、本当に難しいんです。
この大会は国際的な催しなので、バッテリーは飛行機の中に持ち込める容量でなければいけません。小型のバッテリーの出力で動く、省電力の機体設計に、コンテストに参加した各大学はみんな苦労したと思います。

そうした苦労を重ねた上での昨年9月の優勝。でも、じつはその後の12月に開催された国際大会では、無念の走行前リタイアとなり悔しさを味わったのだとか。

彼らの名誉のために言っておくと、まずFPGAによる自動走行車を作るというのは、大学院生・学部生からすると相当に難しい課題なんです。自動車メーカーの本職のエンジニアたちが日夜取り組みながら、完全な実用化にはまだ至っていない課題ですからね。ロボットカー自体もキットがあるわけでなく、全部イチから設計して作る必要があり、機械設計からプログラミングまで、幅広い総合力が求められます。学生の大会としては、本当にえげつないほどの難度だと思います。
先生、フォローありがとうございます(笑)。でも本当にそうなんです。12月の大会に出したロボットカーは、9月に走らせたモデルではなく、より汎用性を高めた機体にしました。結果的にその設計が間に合わず、リタイアすることになったのですが…。
現状を良しとせず、果敢に次のチャレンジに挑んだ結果の、「名誉ある敗退」だったということです(笑)。今年も国内外で再びコンテストが予定されているので、そこでぜひリベンジを決めたいとみんなで奮起しているところです。

作ることで身につくモノづくりの力

コンテストという場をモチベーションに、難解な課題へ挑戦を続ける泉研究室の学生たち。ラジコンカーに夢中になった少年のように、モノづくりを楽しむ姿が印象的でした。そんな彼らはFPGAの発展、ロボットカーの未来をどのように見ているのでしょうか。

例えば通販会社の倉庫や工場の中で、荷物を運んだりする自律作業車などに搭載される可能性は十分あると思います。社会にどう活かせるかを考えるのはワクワクしますね。
FPGAは、流れるようにカメラから映像データが入ってくるストリーミングの処理などが得意なチップなんです。画像処理はAIの実用化においても、非常に重要なテーマですから、僕らがいま取り組んでいる研究は、ロボットカーだけでなく様々な用途に広げられると思っています。
FPGAによる自動走行の研究は、世界的な先端自動車メーカーも取り組んでいます。将来社会に出たとき、自分の力になるよう頑張りたいですね。
彼らがここで学んでいることは数学的な理論だけではなく、モノづくりに必要な総合力・行動力。実際に作るからこそ身につくノウハウなんです。それはいずれ、あらゆる分野で役立つはずですし、モノづくりの面白さでもあると思いますね。
立命館大学 理工学部 立命館大学研究活動報 RADIANT

おすすめ記事