Udacity というオンライン講座のサービスでたまに講座を受講しています。
2020 年ですが Self-Driving Car Engineer Nanodegree という自動運転車の制御に関する講座を修了しました。分量が多いのもあったのですが、3 分割されていて、1 つの Term を終えるごとに間を空けて、だらだらやってしまい長い期間かかってしまいました。
修了までに時間はかけてしまったのですが、内容的にとても面白い講座だったので簡単に内容を紹介したいと思います。
内容がすごく多岐に渡るのでやった課題を紹介します。なお、Term 1 を受講したときは Term が 3 まであったのですが、Term 3 を受講する段階で Term 2 までになり、紹介する課題もいくつか無くなっています。
画像処理で車線の認識
ノイズを除去、上から見た画像に変換、白黒画像に変換、そして多項式でのフィッティングにより車線を検出する課題です。
最終的に実際の道路の動画について車線を検出するので、部分的に色が違う道路や明るい箇所があったりして、プログラムのチューニングが大変でした。
自動車の検出
HOG (Histogram of oriented gradients) という画像の特徴データと
Support Vector Machine という機械学習の方法を利用して、画像から自動車の検出をする課題です。
ディープラーニングで道路標識を認識
道路標識の画像を
Convolutional Neural Network により学習させて、テスト用の画像にある道路標識を認識させる課題です。
実際に課題に使った画像ではないですが、以下のような道路標識の画像を使います。
ディープラーニングで自動車の運転 (ハンドル・アクセル) の学習
3D シミュレータ上で自動車を運転して学習データを溜めて、Convolutional Neural Network で学習させます。そして、3D シミュレータ上で運転させる課題です。
運転させた結果は以下のようになりました。
カルマンフィルタとパーティクルフィルタで自動車の状態推定
カルマンフィルタと
パーティクルフィルタを使って 2D シミュレータ上の自動車の状態を推定する課題です。
シミュレータ上で自動車の状態を推定している様子は以下です。
Model Predictive Control と PID 制御で自動車の運転 (ハンドル・アクセル) の制御
Model Predictive Control と
PID 制御という手法を使って 3D シミュレータ上の自動車の制御をする課題です。
以下が Model Predictive Control による自動車制御の課題の様子です。
以下が PID 制御による自動車制御の課題の様子です。
高速道路を模したシミュレータ上での自動車の制御
他の自動車が自由に走行している状態で、車線変更や速度を調整しつつ自動車を走行させる課題です。
この課題がとても難しくて、安定して走らせるのにひたすらプログラムのチューニングをしました。このシミュレータ上の車が結構繊細なので、他の車に衝突せずに車線変更させたり、速度を緩やかに変更させたりするのが難しかったです。
実際の Udacity が所有している自動運転車を練習用のコースで走行
この課題の存在が衝撃的でした。オンラインの講座で自分が書いたプログラムを実際の車に載せて動かすことまでできるのか、ととても衝撃を受けました。
しかし、残念ながらコロナウィルスの関係でこの課題ができなくなったため、私はこの課題は実施できませんでした。そこが少し心残りです。
講座について
課題はなかったのですが、他にも
A* アルゴリムや
ROS というロボットアプリケーション作成用のソフトウェアについてなど、多様な内容が含まれている講座だったのでとても楽しめました。
また、課題はしっかりレビューしてくれて参考資料のリンクなども教えてくれますし、履歴書の添削などもしてくれるのでおすすめです。
しかし、分量が多いのと課題も難しい上に期間が決められているので、受講する際は一定期間講座にあてる時間を確保して腰を据えてやる必要があります。また、この記事を書いている時に見たら受講料が月約 400 ドルで、講座のページにある想定期間が週 10 時間で 5 ヶ月だったので、想定期間で修了しても約 20,000 ドルかかるので注意してください。
なお、講座の言語は英語ですが、課題で手を動かしますし、その際に動画を見直したりするので、高い英語力は不要です。動画の英語は半分くらいしか分かっていなかったと思いますが修了することができました。