5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Autoware.Autoの環境構築〜デモ実施の手順

Posted at

はじめに

そこそこのスペックのUbuntuデスクトップが手に入ったので、自動運転システムのOSSであるAutoware.Autoの環境構築を実施してみます。
ただ、環境構築だけじゃ面白くないので、Autowareが提供しているデモを動かすところまで実施します。

Autoware.Autoとは

Autoware(オートウェア)ティアフォー が主導で開発をしているLinuxとROSベースのオープンソースの自動運転車用オペレーティング・システムです。
もともとROS1をベースとしてAutoware(Autoware.AIと呼ばれている)は開発されており、ROS2が出てからROS2ベースとして再開発されているものがAutoware.Autoになります。
今回は、ROS2ベースであるAutoware.Autoの環境を構築していきます。

システムの依存関係と対象環境

Autoware.Autoではサポートされているプラットフォームや推奨スペックがあるので、下記に記載します。

ハードウェア/ソフトウェア要求

  • CPU
    • amd64 / x86_64 (Intel/AMD)
    • arm64 / aarch64 / arm64v8 (ARM v8, 64-bit)
  • OS
    Ubuntu ROS Version
    20.04 LTS ROS2 Foxy (active development)
    18.04 LTS ROS2 Dashing (maintenance only)

[補足]
Ubuntu 18.04でも動くとは書いてあるが、今後の機能追加はされなさそうなので、おとなしくUbuntu 20.04 を使うのが良いでしょう。

推奨スペック

Autonomous Valet Parking Demonstration のデモを動かす際の推奨スペックは下記の通り。

  • CPU
    Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz (16 virtual cores) with 64GB RAM
    ※最低 Core i5 はないと厳しそう

  • GPU
    NVIDIA GeForce RTX 2080 with 8 GB memory
    ※最低 NVIDIA RTX1080 はないと厳しそう

  • SSD
    Dockerのイメージが結構容量を食うので、あるだけあると良さそう。
    ※なんだかんだで1TBぐらいあれば困ることはなさそう

事前準備

Autoware.Autoを動かすために必要なツールを準備しましょう。

  1. Git
  2. NVIDIA Graphic Driver
  3. Docker CE
  4. NVIDIA Container Toolkit

[補足]
2から4に関しては、[Ubuntu 18.04 LTS で NVIDIA-Docker2 を使ってみる] のページを参考にしました。

1. Gitのインストール

下記コマンドでGitをインストールします (導入済みであればスキップ)。

sudo apt -y install git

2. NVIDIA Graphics Driverのインストール

  1. グラフィックスドライバのリポジトリを追加します。

    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt update
    
  2. 使っているGPUで利用できるドライバを確認するためにubuntu-drivers-commonをインストールします。

    sudo apt-get -y install ubuntu-drivers-common
    

    インストールできるドライバの一覧は下記コマンドで確認することができます。

    ubuntu-drivers devices
    
  3. 下記コマンドで、ドライバの一覧の中で推奨 (recommended) になっているドライバをインストールします。

    sudo ubuntu-drivers autoinstall
    

    [補足]
    バージョンを指定してインストールするときは 下記のようにapt-getを使うことで実施できます。
    特定のバージョンのみ使用したい場合はこの方法でインストールしてください。

    sudo apt-get -y install nvidia-driver-430
    

3. Docker CEのインストール

[Install Docker Engine on Ubuntu]を参考にインストールを実施します。
2022/10/30時点では下記のような手順になります。

  1. パッケージの更新およびインストールを実施します。

    sudo apt-get update
    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    
  2. GPGキーを追加します。

    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
  3. リポジトリをセットアップします。

    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  4. 最新版のDockerをインストールします。

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

4. NVIDIA Container Toolkitのインストール

[Installation Guide — NVIDIA Cloud Native Technologies documentation]を参考にインストールを実施します。
2022/10/30時点では下記のような手順になります。

  1. パッケージを更新します。

    sudo apt-get update
    
  2. GPGキーを追加します。

    distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
          && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
          && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
                sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
                sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
  3. nvidia-docker2パッケージをインストールします。

    sudo apt-get install -y nvidia-docker2
    
  4. Dockerデーモンを再起動します。

    sudo systemctl restart docker
    

これで、事前準備は一通り完了となります。
問題なく導入できているかを確認するために、下記コマンドでCUDAコンテナを実行してみます。

sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

問題なく導入できていれば、下記のような結果が返ってきます。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |
| N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------

Autoware.Autoのセットアップ

Autoware.Autoでは開発環境としてDockerベースのツールであるAgile Development Environment (ADE)を使用します。
[Installation with ADE]と[ADE-Installation]を参考にしてADEをインストールし、ADEで用意したコンテナに資材を入れたり、シミュレーション環境を用意するといった作業を実施していきます。

ADEのインストール

以下のコマンドでadeのバイナリをダウンロードし、/usr/local/binに移動させます。

wget https://gitlab.com/ApexAI/ade-cli/-/jobs/1341322851/artifacts/raw/dist/ade+x86_64
mv ade+x86_64 ade
chmod +x ade
mv ade  /usr/local/bin

下記コマンドでADEが実行できるかを確認します。

cd ~
# パス確認コマンド
which ade
# バージョン確認コマンド
ade --version

バージョン情報が表示されれば、ADEのインストールは完了です。

ADE Projectのセットアップ

ADE を使用する際、コンテナを作成することになるのですが、ADEで作成するコンテナ内のユーザディレクトリには、ホスト内のディレクトリがマウントされている必要があります。
下記の手順で、ホスト内にADEにマウントするためのディレクトリを用意します。

下記コマンドで、任意の場所にadehomeディレクトリを作成し、フォルダ内に.adehomeファイルを作成します (下記ではユーザフォルダに作成しています)。

# adehome を作成する場所はどこでも良い
mkdir -p ~/adehome
cd ~/adehome
touch .adehome

下記コマンドで、先ほど作成したadehomeディレクトリ内にAutoware.Autoのリポジトリをクローンします。

cd ~/adehome
git clone https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto.git

公式HPには、次の手順として [ホストシステムと ADE 間のファイルの共有(Sharing files between the host system and ADE (Optional))] という手順がありますが、この手順を実施しなくてもデモは動作します。公式HP の内容を確認し、必要だと思う方は実施してください。

ADE(開発環境)の起動

下記コマンドでADE環境を立ち上げることができます。
実行すると、AEDで用意されたコンテナに入った状態となります。

# SVLボリュームでADEを開始
cd ~/adehome/AutowareAuto
ade --rc .aderc-amd64-foxy-lgsvl start --update --enter

[備考]
今回のデモではSVLシミュレータを使用しますが、使用しない場合はSVLボリュームは不要なので、下記コマンドでコンテナを起動しても問題ないはずです。

# デフォルトでADEを開始
cd ~/adehome/AutowareAuto
ade start --update --enter

なお、別ターミナルから起動中のADEコンテナに入りたい場合は、下記コマンドを実行すれば入れます。

ade enter

以上で、Autoware.Autoの環境構築は完了となります。

SVLシミュレータの動作確認

デモをする前に、SVLシミュレータの動作確認だけ行っておきます。
SVL simulator: running the SVL simulator alongside Autoware.Auto を参考にキー入力で車両を操作するシミュレーションを実施してみます。

SVLシミュレータのアカウント作成

SVL Simulatorを使用するためには 公式サイト でアカウント作成する必要があります。アカウントを持っていない方は、作成しておきましょう。

SVLシミュレータの起動&サインイン

SVLボリュームのADEコンテナを起動し、下記コマンドでSVL Simulatorを起動します。

# コンテナに入る
ade enter

# コンテナ内で実施する
/opt/lgsvl/simulator

SVL Simulatorが開かれたら、LINK TO CLOUDをクリックします (ダイアログが表示されたらOKをクリック)。
Open_SVL-Simulator.png

SVL Simulatorの Webサイトが開かれるので、先ほど作成したアカウントでサインインします。
Login_SVL-Simulator.png

ログインに成功すると、下記のような画面に遷移します。
Web_SVL-Simulator.png

シミュレーション環境の用意

下記の手順でシミュレーションを実施するための環境(道路や車両)を用意します。

  1. 左ツリーのClustersを選択し、New Clusterに任意の名前を入力してCreate Clusterをクリックします。(とりあえずade-clusterとした)
  2. 左ツリーのLibrary/Mapsを選択し、AutonomouStuffを検索してヒットするかを確認します。
    ヒットしない場合、左ツリーのStore/Mapsにて AutonomouStuff を検索&選択し、Add to Libraryをクリックします。
  3. ROS2ForUnitySVLBridge のページにアクセスし、Add to Libraryをクリックします。
  4. 左ツリーのLibrary/Vehiclesを選択しAWFLexus2016RXHybridを選択します。
    Sensor Configurationの右側にあるボタンを押し、最下部にあるAdd New Configurationをクリックします。
    Configuration Nameは任意(とりあえずAutowareAuto-ROS2_bridgeとした)、BridgeはROS2ForUnitySVLBridgeを選択します。
  5. Sensor Configurationの最下部にAutowareAuto-ROS2_bridgeがあるのでクリックします。
    Visual Editorの右端にある{...}を選択し、avp-sensors.jsonの内容をコピペします。(コピペするとセンサーが追加されるはず)
  6. キー入力操作用のシミュレーションを作成します。
    左ツリーのSimulationsを選択し、Add Newを選択します。
    Simulation Nameは任意(とりあえずSample-KeyControlとした)、Select Clusterはade-clusterを選択し、Nextをクリックします。
    Run TemplateはRandom Traffic、MapはAutonomouStuff、VehicleはLexus2016RXHybrid、Select Sensor ConfigurationはAutowareAuto-ROS2_bridgeを選択し、Nextをクリックします。
    AutopilotはOther ROS 2 Autopilot (自動操縦)を選択し、NextPublishの順にクリックします。

シミュレーションを実施

左ツリーのSimulationsの中に先ほど作成したシミュレーションが入っています。
作成したシミュレーションを選択し、Run Simulationをクリックすると、SVL Simulatorアプリの画面にシミュレーション環境が表示されます。
左下の ▶ をクリックするとシミュレーションが開始され、キー操作により車両を動かせるようになります。
(F1を押すとキー操作のリストが表示されます)
Demo_SampleKeyControl.gif
以上で、SVLシミュレータの動作確認が完了となります。
Autoware.AutoおよびSVLシミュレータが準備できたので、最後にデモを実施していきます。

Autoware.Autoのデモ: Autonomous Valet Parking Demonstration

Autowareでは、バレーパーキングのデモが提供されています。
ユーザが駐車場を指定し、指定した駐車場まで自動運転した後に駐車するといったデモ内容となります(障害物がある場合は停止します)。
下記手順に沿ってデモを実施していきます。

  1. SVLボリュームでADEコンテナの起動、SVL Simulatorの起動&サインイン、 先ほど作成したSample-KeyControlのシミュレーションの起動まで実施します。

  2. ターミナルを開き、ADEコンテナ内に入り、下記コマンドを実行してRViz(可視化ツール)を起動します。

    # コンテナに入る
    ade enter
    # コンテナ内で実施する
    source /opt/AutowareAuto/setup.bash
    ros2 launch autoware_auto_launch autoware_auto_visualization.launch.py
    
  3. 新しいターミナルを開き、ADEコンテナ内に入り、下記コマンドでデモを実行します。

    # コンテナに入る
    ade enter
    # コンテナ内で実施する
    source /opt/AutowareAuto/setup.bash
    ros2 launch autoware_demos avp_sim.launch.py
    
  4. RViz内の車両位置がSVLシミュレータとあっていないため、2D Pose Estimateを使用してRViz内の車両位置を調整します。
    (本来車両が位置する場所に矢印を引けば位置合わせできるはず)

  5. 2D Goal Poseで駐車スペースを選択します。

[補足]
プログラムからでも駐車スペースを指定することができます。その場合は下記のようなコマンドにようになります。

ros2 topic pub /planning/goal_pose geometry_msgs/msg/PoseStamped '{header: {frame_id: "map"}, pose: {position: {x: -96.46856384277344, y: 58.39532775878906}, orientation: {z: 0.42554035782814026, w: 0.9049394130706787}}'} --once

実際にデモを動作させている様子は下記の通りです(容量制限の関係上、カクついたgifになっていますがご了承ください)。
※オレンジの矩形が荒ぶっていますが、一旦スルーで、、
Demo_ValetParking.gif
指定した駐車スペースに駐車しているっぽい振る舞いになったので、これで良しとしました!

おわりに

今回は自動運転システムのOSSであるAutoware.Autoの環境構築およびデモ実施までを行いました。
トヨタ自動車が東京オリンピックで動かしていた自動運転バス「e-Palette(イーパレット)」にAutowareが採用されており、注目を浴びているOSSです。
動作環境としては、ある程度スペックがあるPC(GPUなど)が必要になるので手軽に動かすのは難しいですが、興味がある方は触ってみてはどうでしょうか?

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?