自動運転から、色々なAI RC Carまでのつながりをざっと見渡してみる

本記事は、[AI RC Car Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ai-rc-car)の19日目です。
昨日は、 [@arigadget](https://qiita.com/arigadget)氏による「[AIカーをいろんなところで走らせてみた。](https://qiita.com/arigadget/items/f7d771a61a9096bfbfb7)」でした。

本内容は、技術書典7『[30日で動かして学ぶ! 自動運転](https://tomo-makes.booth.pm/items/1573349)』第0.8版よりAdvent Calendar向けに抜粋、加筆したものです。

## 自動運転のこれまでと、これから

AIカーの話に入る前に、自動運転全般の話をしましょう。人工知能、深層学習の適用先のひとつとして、自動車の自律走行が盛んに取り上げられます。

### 自動運転の歴史

現在の自動運転開発競争は、どのように始まったのでしょうか。何がその適用を加速させたのでしょう。YouTubeなどに残された映像を頼りに、遡ってみましょう。

車の自動運転をもう少し抽象化するなら「自動での乗り物の操縦」です。その意味では、すでに飛行機や電車が先行しています。飛行機では、以前からオートパイロットシステムが使われています。電車も、新交通システムは完全自動で運行されています。

では、自動車で困難な点は何でしょうか。

- 経路が固定されていない (電車は、移動がレールに制限される)
- 周囲の物との相互影響の多さ (飛行機は、比較的他機との距離が保たれる)

こうした点が思い浮かびます。前後左右の車、歩行者などの複雑な障害に対応し、かつ自身で数ある選択肢から経路を選び、その通りに操縦する、という難しさがありそうです。

古くは1991年より、自動運転化のはしりとして、先進安全自動車(ASV)の検討の取り組みがはじまりました。その成果は一足先にヒット、普及しています。例えばEyeSightなどの衝突被害軽減ブレーキ、Adaptive Cruise Control(ACC)、その他は、そうしたコンセプトから生まれたものです。

2000年代、完全自動運転では、DARPA(アメリカ国防高等研究計画局)によって、3回の競技会が開催されました。最初の2回は郊外で開催されたDARPA Desert Challengeという砂漠のコースにおけるコンペです。最後の1回は2007年に行われたUrban Challengeです。こちらは、市街地を模した場所を走行するものでした。それぞれの映像が残されています。

- DARPA Grand Challenge - 2005 Driverless Car Competition - YouTube
  - https://www.youtube.com/watch?v=7a6GrKqOxeU

- DARPA Urban Challenge: Final Event Highlights - YouTube
  - https://www.youtube.com/watch?v=aHYRtOvSx-M

この競技会にも参加し、チーム「Stanley」で2005年に優勝、2007年に2位の成績をあげたスタンフォード大のSebastian Thrun氏は、その後Googleに移籍し、自動運転研究をスタートしたとされています。一定の成果をもとに、2011年にはGoogleでの自動運転研究者として、TEDに登壇し、その映像が今も残っています。

- Google's driverless car | Sebastian Thrun - YouTube
  - https://www.youtube.com/watch?v=bp9KBrH8H04

余談ですが、同氏は確率ロボティクスの大家であり、Google X、UdacityというMOOCsそれぞれの設立に関わっています

2015年にはChris Urmson氏の講演を聞くことができます。後にGoogleを去りますが、この当時はWaymoの技術チーフです。

- Chris Urmson: How a driverless car sees the road - YouTube
  - https://www.youtube.com/watch?v=tiwVMrTLUWg

2010年代前半のGoogleによる前進がWake up callとなり、自動車業界、IT業界入り乱れての自動運転開発競争が始まりました。

米国に目を向けると、自動運転開発ではWaymoが頭一つ抜けている、というのがコンセンサスでしょう。Waymo Oneと呼ばれる自律走行タクシーのサービスを米国複数都市で立ち上げています。このWaymoの源流を辿ると、上に挙げたSebastian Thrun氏のGoogle加入に行き着きます。

Google以外にも、Uber、Lyftなどのライドシェア企業は自動タクシーを見据えた開発、内外の自動車企業は現在の車の機能拡張として、Tesla社は電気自動車とともにオートクルーズ機能をバンドル、Wayve、Comma.aiなど大学発、ハッカー発の自動運転企業と、たくさんのプレイヤーがひしめき合っています。

プレーヤーは米国だけではありません。欧州にも面白い会社があります。複数の自動運転バスを作っている会社があります。日本でも、SBドライブ社は、現在は仏NAVYA社の自動走行バス NAVYA ARMAを用いた実証実験を行なっています。また、中国では、Baidu社がApollo計画という、自動運転プラットフォームのオープンソース化とパートナ開拓を進めています。

ただ、研究や実用化の進展への期待とともに、2016年5月には米国でTesla社のレベル2自動運転における死亡事故、2018年3月にはUberのレベル4自動運転試験中の死亡事故が取り上げられ、技術面、倫理面での論議を呼びました。各国の法規制や各社の立ち位置に、「安全性」と「発展のためどこまでリスクを取るか」のトレードオフが現れます。

産業と学術、日本と海外各国、それぞれが自動運転開発において、それぞれ歩みを進めてきた様子が、構造を持って掴めてきたでしょうか。

### 自動運転のレベル分け

ここまで話してきた自動運転ですが、言葉を聞いて思い浮かべる自動の度合いは様々でしょう。米SAE(Society of Automotive Engineers)は、2014年1月に自動運転の成熟度の定義を発表しました。米国、欧州を皮切りに、日本を含めた各国の自動運転政策の検討にこの分類が採用され、デファクトスタンダードとなりました。

SAEの定義では、自動運転を6段階に分類します。

- レベル0 ドライバーが全て操作する
- レベル1 システムが加減速またはハンドル操作を支援する
- レベル2 システムが加減速とハンドル操作を支援する
- レベル3 指定の場所でシステムが全てを操作、緊急時はドライバーが操作する
- レベル4 指定の場所でシステムが全てを操作する
- レベル5 場所の限定なくシステムが全てを操作する

レベルは、下へ行くほど難易度が高くなります。

2010年代一般に販売される車でも、レベル2まで備えているものがあります。例えば、車の前面に取り付けられたセンサーで回避行動をとる機能は、レベル2と言えます。この定義では、レベル3から5が、一般に思い浮かべられる「自動運転」です。

2019年、日本においての自動運転車は、主に自家用車、商用車の二つの文脈に分かれます。また商用車は、あらかじめ指定した区域内を走るバスやタクシー、または高速道路を隊列走行するトラック、という二種類の実証実験が盛んに計画、または実施されています。

法規制とその適切な緩和については様々な意見があるでしょうが、日本は一定健闘していると言えるでしょう。日本では、直近2020年に高速道路におけるレベル3自動運転がマイルストーンとして掲げられ、法整備、各社の研究開発が進められています。

- 一部「レベル3」の高速道自動運転を2020年に確立…ホンダミーティング2019
  - https://response.jp/article/2019/07/05/324132.html

### 3つの要素 - 認知・判断・操作

さて、自動運転を実現するには、人間の代わりに、コンピュータが何を行えれば良いのでしょうか。まず、人間が車を運転する様子を、できるだけ細かく想像してみましょう。

例えば、あなたが高速道路の走行車線を走っているとします。

- 運転席に座り、前方を注視、時にミラーを確認します。周囲に何があり、どんなスピードで動いていて、という状態を把握します。前の車がハザードランプをたいて、減速したとします。もう少し前方に目をやると、どうも渋滞というわけではありません。一台だけで故障か、何らかの事情で減速、停止をしようとしているようです。ミラーで右後ろを確認し、追越車線には、後ろに迫る車はありません。

- その状態と、自分の向かう計画を照らし合わせて、次の行動を決めます。走行車線を守るなら、減速しなければ、目の前の車にすぐに追突してしまうでしょう。車線を守り、減速する。これがとりうる選択肢Aです。追越車線へ、速度を守りながら車線を変更する。これもとりうる選択肢Bです。選択肢Aをとっても、前の車がそのまま停止してしまうとしたら、そこに付き合う必要はないでしょう。ここでは選択肢Bをとるとしましょう。

- 選択肢Bを取るなら、まず方向指示器で右折を知らせ、速度は保ちながら、ステアリングをゆるやかに右に傾けます。左右の手と足を協調させ、こうした操作を車に対して行います。

これらそれぞれのパラグラフが、認知、判断、操作という、自動運転の3つの要素に対応します。

まとめると以下のようになります。

**認知**

- 前方の車の減速
- 追越車線の確認

**判断**

- 選択肢A、Bの着想
- 選択肢Bを取る判断

**操作**

- 方向指示器の操作
- アクセルの維持
- ステアリングの操作

自動運転のソフトウェアは、基本この3つを連携させ、実現しています。次に、それらの実現方法をざっと見てみましょう。



#### 認知

現在、ひとつではなく、複数のセンサーを相互補完させる「センサーフュージョン」が主なアプローチとしてとられています。ステレオカメラ、LIDAR、レーダーなどのセンサ、GNSS、SLAMなどを組み合わせ、自身をとりまく環境、自身の場所の把握、自身だけでなく周囲の物体の動きを認識します。



#### 判断

上の認知で得た情報を元に、次の行動の選択肢を洗い出します。そして、それらの選択肢をスコア付けし、どの選択肢を取るのがベストかを判断します。



#### 操作

選択した行動を、できるだけ精緻に現実の環境で再現するための操作を行います。現実の世界には、命令と実際の動きの時差、制御で指定する振る舞いと実際の動きの誤差など、考慮すべきことがたくさんあります。ここは制御工学の世界です。



### ラジコンカー自律走行における3要素

上記の自動運転車で行なっていることを聞くと、個人の手ではとても扱いきれない代物に感じられませんか。しかし、DIYによる自動運転車、そのレースが流行の兆しを見せています。

こちらの映像を見てみましょう。

- Three Car Head to Head by Tawn Kramer
  - https://www.youtube.com/watch?v=bX1INlWLDQA 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/ec1c2191-1d7d-5106-49ad-1d963abc4a82.png)
![](images/rccar-head-to-head.png)

驚くべきことに、この3台は全て自律走行しています。このラジコンカー自律走行における、認知、判断、操作を考えてみましょう。

#### Donkey Car

**認知**

標準のDonkey Carにおける入力は、正面に設置された単眼の広角カメラのみ。それ以外のセンサーはありません。オプションで、IMU、ステレオカメラその他を追加することはできます。広角カメラからは、一定の間隔で、画像が取得されます。

**判断**

この入力画像を元に、ステアリングは右か左か、スロットリング(アクセル)は踏み込むか否か、が学習済みの深層学習モデルから出力されます。

**操作**

モデルの出力を元に、サーボコントローラへ所定の制御信号が出力され、ステアリング、スロットリングが調整されます。

DonkeyCarは、先ほど挙げた3つのポイントを単純化し、うまく動かしているモデルです。

#### MIT Racecar

また、同じラジコンカーが対象ながら、今度はこちらの映像を見てみましょう。

- Fast Autonomous RC Car - Pure Pursuit Trajectory Tracking
  - https://www.youtube.com/watch?v=9fzzp6oxid4

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/c44f0452-182c-8679-b684-3ed4b512ae0f.png)
![](images/mitracecar-youtube.png)

後ほど紹介するMIT RaceCarやF1/10(F1tenth)では、実車の自律走行に近い、認知から操作までのパイプラインを持っています。

**認知**

単眼または二眼のステレオカメラ、IMUといわれる加速度・ジャイロセンサ、LIDAR、その他のセンサー情報を統合(センサーフュージョン)し、自車の状態を認識します。

**判断**

深層学習ではなく、一定のルールに基づき、行動の選択肢を挙げ、スコア付けなどの基準に従い、ベストな行動を選択します。

**操作**

判断を元に所定の制御が行われます。PIDなどの制御工学の知見が使われます。

ニュースの画面の向こうにしかなかった自動運転が、少し身近に感じられて来たでしょうか。



## ラジコンカーの自律走行化に必要なこと

まず、一般的なラジコンカーの構成、およびそれらを自動運転化する時の流れや、要素を説明します。

### ラジコンカーの主要部品

まず、自動運転化のベースとなる、改造前の一般的なラジコンカーの構成を説明します。

ラジコンカーは、一般に以下から構成されています。

- ボディ
- シャーシ
- 送信機
- 受信機
- ESC
- メインモータ
- ステアリングサーボ
- バッテリー(駆動用)

例えば、タミヤのTT-02というキットだと、このように対応しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/aabff791-32d9-d0ca-3142-eaf450079047.png)
![](images/rccar-assembly.png)

> https://www.amazon.co.jp//dp/B07L4BNNXW および https://www.tamiya.com/japan/products/58600/index.html より引用、改変

それぞれどういったものかを詳しく見てみましょう。

**ボディ**

軽量な樹脂製のカバーが、数カ所シャーシにピン留めされています。自動運転化にあたっては、既存のカッコ良い車の外形は取り外し、無骨だが必要なボードを保持できる、実用的なボディに取り替えます。

キットを用いるにせよ、自作をするにせよ、レーザーカッターを使って切り出されたアクリル板や樹脂と、3Dプリントされたパーツの組み合わせがよく使われます。

ただ、レーザーカッターや3Dプリンターが手元にない、しかしキットではなく自分で作ってみたい、という場合も心配いりません。筆者は、初回のプロトタイプとして、ダブルのダンボールを切り出して、ボディを作りました。後続の章で、そうした方法にも触れます。

**シャーシ**

以下に挙げる、送信機、受信機、ESC、メインモーター、ステアリングサーボ、バッテリーなどの部品や、車輪が取り付けられる、車の基礎となる部分です。

**送信機**

上の画像には含めていませんが、人が操作するためのプロポを指します。複数の周波数帯が使われますが、最近はWiFiと同様の産業バンド 2.4GHz帯を使うものが主流のようです。

**受信機**

同周波数帯を使い、信号を受け取ります。受け取った信号を、ここではまだ詳しく解説しませんが、ラジコン用のPWMという制御信号に変換します。その信号はESC、ステアリングサーボに渡されます。

**ESC**

「アクセルとブレーキ」を制御します。PWM信号を受け、メインモータへ供給する電力を制御します。

**メインモーター**

ESCからの供給電力でモーターを回し、ギアを通してタイヤへ動力を伝え、車を動かします。

**ステアリングサーボ**

「ハンドル操作」を制御します。PWM信号を受けて、モータの回転角を変え、左・中央・右と、指定の位置へタイヤの向きを合わせます。

**バッテリー（駆動用）**

ステアリングサーボ、ESCを通したメインモータ、受信機等への給電をします。最も電力を消費するのはメインモータです。



### 自律走行ラジコンカーの主要部品

これを自動運転化する時には、 **受信機**部分をサーボコントローラ基盤で置き換え、それをコントロールするRaspberry Pi、Jetson Nanoなど、基本Linuxベースの小型コンピュータを搭載します。そのコンピュータはカメラモジュールを備えています。まず、そのカメラからの画像と、必要に応じて外部センサの値を入力用に取得します。それを学習済みの機械学習モデルに渡します。そのモデルからの出力を得て、それを元にステアリングとアクセルを制御します。

それにより、先ほどのベースに、以下の改造が施されます。

- ~~ボディ~~ 取り外す
- シャーシ
- ~~送信機~~ カメラ付き小型コンピュータを車載
- ~~受信機~~ サーボコントローラ
- ESC
- メインモータ
- ステアリングサーボ
- バッテリー(駆動用)
- バッテリー(車載コンピュータ用)  **追加**

まず、部品のつながりは、どのように変わるのでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/8939ba23-3326-71f8-d4c2-41821eccbe9d.png)
![](images/rccar-autonomous-components.png)

**Jetson Nano/ Raspberry Piなどの搭載コンピュータ (ざっくり言うと送信機の代替)**

学習済みモデルを動作させ、カメラ入力を元に、アクセル・ブレーキ・ハンドルを制御します。モデルの学習は、同コンピュータ上で行うこともありますし、外部クラウドで行なった上で、学習済みモデルを再度コンピュータ上に展開することもあります。

**カメラや、その他のセンサ**

搭載する小型コンピュータに対応するカメラモジュールを使います。Raspberry Pi用の広角カメラモジュールが、Raspberry PiだけでなくJetson Nanoの場合にも使われます。また、より発展したプロジェクトでは、加速度、深度カメラ、LiDARなど、他のセンサを取り付けることもあります。

**サーボコントローラ (ざっくり言うと受信機の代替)**

PCA9685というチップを用いた、I2Cインタフェースを通して制御されるサーボコントローラを使うことが一般的なようです。I2Cについても、PWM同様ここでは詳しい解説はスキップし、後に譲ります。

**バッテリー（車載コンピュータ用）**

駆動用のバッテリーに加えて、車載コンピュータ用の追加バッテリーが必要です。



それ以外にも、以下が必要です。

**ラップトップPC**

学習やテスト走行時に、WiFi経由でJetson Nano/ Raspberry Piなどの搭載コンピュータへ接続し、様々な操作を行います。

**ジョイスティック**

学習時の操作に、ジョイスティックを用いて、より直感的・便利に行うこともあります。



さて、これらを一から揃えるのは大変だと思われるかもしれません。そんなみなさんには、キットの形で販売されています。DonkeyCarのフルセットは4万円程度で揃えることができます。せっかくなので、自分で揃えてみたい、既存のRCカーを改造してみたい、という方はいかがでしょうか。BOM(Bill of Materials)という形で、どういった部品を買う必要があるか、目録が整理されています。それに従って購入し、組み上げると、1-2万円であなただけの自動運転車を組み上げることができます。



### 機械学習と自律走行

まず、機械学習は万能ではありません。従来の制御の仕組みと、機械学習を組み合わせて使います。RCカーでは、少しエクストリームな方法を試しているのだと理解してください。認知、判断、操作に対して、それぞれのAI RCカーでの各モデルの使い方をマッピングしてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/efa2a1cc-1fc8-a102-fed8-2ae63dd8e822.png)


## 世界のAI RC Carプロジェクト

ここで、様々な自動運転ラジコンカープロジェクトを紹介します。先ほど挙げたように、自律走行を行えるカーは、エントリーレベルのものから、本物の自動運転に近い構成まで、様々なものがあります。

今回の[AI RC Car Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ai-rc-car)では、主にDonkeyCarとJetRacer関連の記事が紹介されています。



### DonkeyCar

- Webサイト: https://www.donkeycar.com/

DIY文化の旗手であり、米WIRED誌の元編集長Chris Anderson氏が、2016年12月にDIY Robocarsというコミュニティを立ち上げました。自作・自動操縦ラジコンカーレースを開催し、コミュニティでは盛んに知見が共有されています。Donkey Carはそこから生まれた、自動運転ラジコンのオープンソースプラットフォームです。ハードウェア、ソフトウェア両方が公開されています。

TensorFlowをRaspberry Pi上で(Jetson Nanoにも対応)動かし、市販のラジコンカーをオンボードカメラ映像を頼りに走らせられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/34faba6e-cf6a-09d0-3353-a36f011aa47e.png)
![](images/donkeycar-graphic_orig.jpg)

> https://www.donkeycar.com/ より引用



### NVIDIA JetRacer

- Webサイト: https://github.com/NVIDIA-AI-IOT/jetracer

2019年3月に発表されたJetRacerは、NVIDIA Jetson Nanoの教育・コミュニティ活動促進の一環でオープンソース化されました。他にもJetBotなどが公開されています。2種類のシャーシが選べますが、日本で取り組む場合は、手に入りやすいTT-02というタミヤの初心者向けフレームを使います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/0fd48d2c-8374-455d-e40b-39b1df997c65.png)


> https://github.com/NVIDIA-AI-IOT/jetracer/ より引用



### AWS DeepRacer

- Webサイト: https://aws.amazon.com/jp/deepracer/

AWS Re: Inventで発表された。AWS SageMakerなどのMLaaSに親しみ、オンライン・オフライン両方のリーグに参加できます。完成機体がAmazonから販売される予定がありましたが、日本では技適関連でまだ売り出されていません。


2019年12月のAWS re:Inventでは、2つのニュースがありました。

ひとつは、[アマゾンの自動運転｢DeepRacerリーグ｣で日本人が“圧倒的”世界トップになった理由](https://www.businessinsider.jp/post-203746)の記事にあるように、DeepRacerのファイナル開催と、日本人ワンツーフィニッシュです。

また、DeepRacer Evoが発表されました。新たにステレオカメラ、LIDARを搭載し、2020年に発売予定です。新しい車体とセンサーで、他車との抜きつ抜かれつ、といったレースが今後展開されるかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/7342f831-6406-c5cf-72d4-65a8e02bd960.png)


> https://www.amazon.com/dp/B07JMHRKQG より引用



### MIT Racecar

- Webサイト: https://mit-racecar.github.io/

MIT Racecarは、もともとマサチューセッツ工科大学(MIT)におけるロボティクス授業で開発されました。先に紹介したDonkeyCarやDeepRacerなどと比べ、以下の点で、より実車の制御に近い構成を取っています。

- アーキテクチャとして、ROSを採用
- センサーは、単眼カメラだけでなく、LiDARやステレオカメラを搭載できる
- 未知の場所の地図を生成しながら、一定のルールに沿って走れる(DonkeyCarやDeepRacerは、決まったコースを教えこむ)

DonkeyCar、DeepRacerと比較して、より「シリアスな」プロジェクトといえるでしょう。外見こそ違いますが、同じ技術は実車の自動運転だけでなく、ルンバなどのお掃除ロボット、倉庫などでの荷物の自律搬送車で使われます。

MIT Racecar関連の資料は、上のWebサイトや、ICRA2019のワークショップサイトに公開されています。派生のプロジェクトとして、F1/10(F1tenth)が挙げられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/23d79b34-a79c-550d-af77-274a571f3ccc.png)


> https://www.jetsonhacks.com/racecar-j/ より引用



### F1tenth(F1/10)

- Webサイト: http://www.f1tenth.org/

F1/10は、ペンシルバニア大学(UPenn)で、MIT Racecarの派生として生まれ、今はプロジェクトを率いたMadhur Behl氏が移ったことから、バージニア大学でも教育の一環で使われています。1/10スケールのラジコンカーを用いて、F1のようにレースを行う、というのが名称の由来のようです。インターナショナルな、F1/10カーによるレースコンペも主催しています。また、MIT Racecar同様、授業の資料や、レースコンペの模様などが公開されており、良いリソースです。


### M5Stackファミリーを使ったAI Car

通常サイズのRC Carだけではありません。[せまいおうちでもできるお気軽AIカー - Qiita](https://qiita.com/takeru@github/items/604697225d3214ff0e8b)
にあるように、テーブル上で走らせてしまえるような、極小AI Carを作るプロジェクトもあります。

このプロジェクトにおける頭脳部分は、Raspberry Piでも、Jetson Nanoでもありません。M5StickC、M5StickVという、指でつまめるサイズのモジュールです。駆動部にも、スマートフォンのバイブレータ等に使われるような超小型モータを使っています。

M5StickCはESP32、M5StickVはKendryte K210というSoCを使っています。開発にはArduino IDE、MicroPython(MaixPy)などを使う、マイコン


### (参考)Autoware

自動運転は、様々な車メーカーに閉じられて開発されているものだけではありません。名古屋大学発のスタートアップであるティアフォーは、Autowareという自動運転OSSを開発しています。実際にこれらの車に積載し、実証実験を行なっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64608/494566b6-600b-f5ec-c405-285127cff14d.png)


> https://tech.tier4.jp/ より引用

Autowareというソフトウェアは、オープンソースであるため、個人で実際に触って動かしてみることができます。

- アーキテクチャとして、ROSを採用
- センサーは、単眼カメラだけでなく、LiDARやステレオカメラを搭載できる
- 未知の場所の地図を生成したり、既存の地図を参照しながら、一定のルールに沿って走れる

といった形で、MIT Racecarと似ています。実際にラジコンカーに載せてみた例が、インターネット上の記事にありました。



### それぞれの違いと共通点

それぞれ扱う車体の大きさやアプローチも異なり、別のものに見えるかもしれませんが、実現を支える技術、アーキテクチャは似ています。

車やステアリングなどの「動かす」要素、カメラやLiDARなどの「センサー」要素が、それぞれ情報をやりとりし、理想的な経路を辿れるように制御します。そのためには、それぞれのノードが、リアルタイムでメッセージをやりとりします。ただし、メッセージングの提供方法は、ROSに頼ったり、それぞれのソフトウェアで独自に実装したり、異なったアプローチをとっています。

このように、AI RC Carから、実車の自動運転までのつながりを見ることができました。これならラジコンカーを動かしてみることで、自動運転の要素技術を体感しながら学べそうですね。

興味を持たれたら、各自充実した内容の[AI RC Car Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ai-rc-car)から、次の一歩を進めてみてください。



## 初出について

本内容は、技術書典7『[30日で動かして学ぶ! 自動運転](https://tomo-makes.booth.pm/items/1573349)』第0.8版より抜粋、加筆しました。2/28開催予定の技術書典8、また同時に電子版にて、さらにハンズオンなどを加えた第1版を頒布予定です。ご興味を持たれたら、ぜひご覧ください。