Connect Jetson Nano to Udacity Self Driving Car Simulator

connect-jetson-nano-to-udacity-self-driving-car-simulator

Jetson Nanoを用いて、UdacityのSelf Driving Car Engineer Nanodegree Program(以下、CarND)のKidnapped Vehicle Projectを実行できるか試してみました。

Udacity Self Driving Car Simulatorを実行するPCと、CarND Kidnapped Vehicle Projectのコードを実行するJetson Nanoの組み合わせで、プロジェクトを遂行することができました。

CarND Kidnapped Vehicle Project

CarND Kidnapped Vehicle Projectは、CarNDのプロジェクトの一つで、https://github.com/udacity/CarND-Kidnapped-Vehicle-Projectにベースとなるコードが公開されています。

名前から内容を推定することが難しいのですが、このプロジェクトでは、Particle Filterを用いてLocalizationを行います。なお、CarNDの受講者には、位置・姿勢推定精度と処理時間の要求を満たすコードを完成させることが求められます。

Udacity Self Driving Car Simulator

CarNDのプロジェクトに対応するシミュレータが、https://github.com/udacity/self-driving-car-simで公開されているUdacity Self Driving Car Simulatorです。

CarND Kidnapped Vehicle Projectでは、Term 2 Simulator(投稿時の最新版は、v1.45)を使用します。

NVIDIA Jetson Nano

Jetson Nanoは、下の図のような手のひらサイズのコンピュータです。

jetson-nano

Jetson Nanoの詳細は、https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetson-nano/をご覧ください。

今回は、JetPackでインストール済のDockerを用いて開発環境を構築しましたが、このプロジェクトに関しては、比較的依存パッケージが少ないので、Dockerを用いなくても開発環境を構築できそうです。

Jetson NanoとUdacity Self Driving Car Simulatorの接続方法

Term 2 Simulatorが、localhostの4567ポート(127.0.0.0:4567)を用いて通信を行うように設定されているようなので、Term 2 Simulatorを実行するPCから、以下のように、PCの4567ポートを<JetsonNano>の4567ポートにポートフォワードします。

$ ssh -L 4567:<JetsonNano>:4567 <UserName>@<JetsonNano>

<JetsonNano>にログインしたら、CarND Kidnapped Vehicle Projectのディレクトリに移動し、以下のコマンドを実行します。

$ ./run.sh
Listening to port 4567

PCでTerm 2 Simulatorを起動し、下図に示す「Project 3: Kidnapped Vehicle」へ移動し、[SELECT]をクリックします。このとき、<JetsonNano>に接続したコンソールに、Connected!!!と表示されます。

connect-jetson-nano-to-udacity-self-driving-car-simulator-1

下図の状態で[Start]をクリックすると、シミュレーションが始まります。

connect-jetson-nano-to-udacity-self-driving-car-simulator-2

シミュレーションが終了すると、最初の図が表示されます。Success! Your particle filter passed!と表示されたら、プロジェクト成功です。

まとめ

Udacity Self Driving Car Simulatorを実行するPCと、CarND Kidnapped Vehicle Projectのコードを実行するJetson Nanoの組み合わせで、プロジェクトを遂行することができました。