Connect Jetson Nano to Udacity Self Driving Car Simulator (Part 1)

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の詳細は、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!!!と表示されます。

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

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

まとめ

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