LoginSignup
12
6

More than 1 year has passed since last update.

プログラミング素人がAutoware.AIを使ったコンテストに参加した話(その1:Autoware.AIの環境構築)

Last updated at Posted at 2020-12-11

まずはじめに

仕事ではプログラミングとは全く縁がありませんが数年前からAIに興味を持って独学で勉強を始めました。
コマンドや参考リンク等は最新の状況では当てはまらないかもしれません。
これは素人が環境構築するだけでもとても大変で非常に勉強になったことをまとめて記事にしたものです。

その1:Autoware.AIの環境設定 ←いまここ
その2:ROSの情報まとめ
その3:Autoware.AIとLGSVLシミュレータを使ってみる

項番 ページ内リンク
0 コンテストに参加したきっかけ
1 Ubuntuが起動しない
2 CUDA、docker、nvidia-docker2とそれぞれインストール
3 Autoware.AIのビルド
4 参考リンク

0. コンテストに参加したきっかけ

ソフトウェアファーストやコネクティッドの考え方とともにモノづくりが変わろうとしています。私は普段の業務ではソフトウェアにはほとんど関わらないのですがそれではいけないと思い、2年ほど前から社内の有志とともにAIをはじめとしたプログラミング勉強を仕事とは別にやってきました。そのなかで自動運転とAIという非常にホットなワードがある自動運転AIチャレンジに参加しました。(ものすごく大変だった。。。)

1. Ubuntuのインストール

Ubuntuが起動しない。(PCが起動しない)

当時はUbuntuって何?という知識レベルでした。とりあえずUbuntu18.04のインストーラーを使って起動したのですが何故か起動しません。NVIDIA GPUと標準のUbuntuのグラフィックドライバーの相性が悪いためうまく起動しないようです。

こちらの記事を参考にして解決。

nouveauの無効化

1. BIOSのメニューに入り、Secure Boot を Disabled にしておく
  (BIOSへの入り方はPCによって異なるので型番とかと合わせてググってください。)
2. Install Ubuntu にカーソルを合わせて eを押し起動オプションの設定

3.quiet splash --- となっているところを quiet splash nomodeset ---
と書き換えるとnouveauを無効化できます。

nvidia-smiができない(GPUドライバのインストール)

こちらを参考にしました。

Install_GPU_Driver
ubuntu-drivers devices
sudo apt update
sudo apt install nvidia-driver-***

もしうまく行かない場合こちらの記事を参考にしました。GUIが使えなくなるのはツライ・・・
NVIDIA公式サイトでドライバを検索してインストール。もし見つからない場合はβ版があるかもしれないのでこちらから探すようにしてください。

Install_GPU_Driver
sudo bash NVIDIA-Linux-x86_64-440.36.run

2. 必要なものインストール

GPUのnvidia-driverとCUDA Toolkitの一覧はこちら
ちゃんと対応するものをインストールしましょう。

CUDA Toolkit 10.0 をインストール(dockerを使うなら不要)

まずCUDAをインストールします。今回はAutowareの推奨がCUDA10なのでそちらをインストールします。

CUDA_Toolkit_10.0
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda-10.0
# パスをbashrcに追加
echo -e "\n## CUDA and cuDNN paths"  >> ~/.bashrc
echo 'export PATH=/usr/local/cuda-10.0/bin:${PATH}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:${LD_LIBRARY_PATH}' >> ~/.bashrc
source ~/.bashrc
# PCを再起動
sudo reboot

cudnn7.6.5 をインストール(参考)

こちら:cuDNN Archiveからダウンロード(要会員登録)。
下記3つをダウンロードしてくる。
・cuDNN Runtime Library for Ubuntu18.04 (Deb)
・cuDNN Developer Library for Ubuntu18.04 (Deb)
・cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)

install_cudnn7.6.5
sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.0_amd64.deb 
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.0_amd64.deb 
sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.0_amd64.deb 

dockerのインストール

dockerのサイト:Install Docker Engine on Ubuntuにそっていけばインストールできます。

Install_Docker_Engine_on_Ubuntu
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 一般ユーザがdockerコマンドを使えるようにする
sudo usermod -aG docker $USER
reboot

nvidia-dockerと nvidia-docker2のインストール

こちらNVIDIA Docker って今どうなってるの? (19.11版) → こちらが最新のようですNVIDIA Docker って今どうなってるの? (20.09 版)
こちらNVIDIA-DOCKER2の始め方を参考にしてインストールします。

nvidia-docker2のインストール
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

sudo apt-get install nvidia-docker2
sudo pkill -SIGHUP dockerd
nvidia-docker2の動作確認
docker run --gpus all --rm nvidia/cuda:9.0-base nvidia-smi
docker run --gpus all --rm nvidia/cuda:10.0-base nvidia-smi

確認コマンドが動作してイメージをpullしてこない場合はうまく行っていないので注意してください。
sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi <- imageが存在しないようなので削除しました。

nvidia-docker確認コマンド
docker run --rm  --runtime nvidia nvidia/cuda:10.0-base nvidia-smi

ROSのインストール  <- (dockerで使用するなら不要)

ROSはOSのバージョンによって対応するバージョンが異なり、Ubuntu18.04にはmelodicをインストールします。
こちらにそってインストールしましょう。

ROS_melodic_install
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop-full
# 次回起動時もROSの環境ファイルが読み込まれるようにbashrcに追加
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 依存関係のインストール
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init
rosdep update

3. Autowareのビルド

Autoware.AIにはdockerで起動するAutoware-dockerとローカルPCに直接ビルドする方法の2種類あります。
環境的な制約もあるかもしれませんがAutoware-dockerをおすすめします。
もしROS環境やAutowareがこわれて動かなくなってもdockerならすぐにもとに戻すことができますので。。。

Autoware-dockerの場合

まずユーザーIDを調べます。

ユーザID確認
id

あとはAutoware-docker buildにしたがってビルドしていきます。今回はv1.13.0をビルドしていくためバージョン指定します。

ユーザID確認
git clone https://github.com/Autoware-AI/docker.git
cd docker/generic
# uid=1000のとき
./run.sh -t 1.13.0
# uid!=1000のとき
./run.sh -s -t 1.13.0

【補足】dockerからexitしてもimageが残るようにする。

このままではdockerからexitするとimageが残らないためまたパッケージのビルドからはじめないといけません。
それを避けるためにAutoware-docker/run.shの最後の部分を変えると簡単です。その代わり./run.shするたびにイメージが作成されるようになることになりますが。。。

run.sh
# 最後のdockerコマンド
*****

docker run \
    -it\          #<=--rm コマンドを消すだけ
    $VOLUMES \
    --env="XAUTHORITY=${XAUTH}" \
    --env="DISPLAY=${DISPLAY}" \
    --env="USER_ID=$USER_ID" \
    --privileged \
    --net=host \
    $RUNTIME \
    $IMAGE

ソースビルドする場合

こちらAutoware-docker Source Buildにそってすすめていきます。私の環境の場合はEigenをビルドするところがちょっとうまく行かなかったので変えています。

Autoware_AI_Source_Build
# 依存ライブラリのインストール
sudo apt update
sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin
sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
pip3 install -U setuptools
# Eigenのインストール
cd && wget http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz 
mkdir eigen && tar --strip-components=1 -xzvf 3.3.7.tar.gz -C eigen
cd eigen && mkdir build && cd build && cmake .. && make
sudo make install #<=ここにsudoをいれる

あとはこちらUbuntu18.04にAutoware.AIをインストールにそってやればビルドが完了します。

Autoware_AI_Source_Build
mkdir -p autoware.ai/src
cd autoware.ai

# v1.13.0をビルドしていくためバージョン指定
wget -O autoware.ai.repos "https://gitlab.com/autowarefoundation/autoware.ai/autoware/raw/1.13.0/autoware.ai.repos?inline=false"
vcs import src < autoware.ai.repos
sudo rosdep init
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro melodic
source /opt/ros/melodic/setup.bash

# CUDA support ありでビルド
AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

# CUDA Support なしでビルド
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

AutowareのRuntime Managerが起動できればビルド成功です。

Autoware_runtime_managerの起動
# Autowareの環境ファイルの読み込み
source ~/Autoware/install/local_setup.bash
# runtime_managerの起動
roslaunch runtime_manager runtime_manager.launch

お疲れ様でした。どんなに順調に行ってもここまでやるのに丸一日はかかると思います。(初めてやったときは試行錯誤で4日くらいかかった。)
ここまででようやくAutoware.AIを動かす環境設定が終わりました。
かなり長くなってしまったのであらためてROSの勉強方法とAutoware.AIの使い方など書きたいと思います。

4. 参考リンク

自動運転AIチャレンジ
ubuntu18.04にnvidiaドライバを入れるの苦労した
エヌビディア製品用ドライバ
エヌビディア製品用ドライバのベータ版
Deep Learning 環境の構築
Autoware.AI Source Build
Ubuntu 18.04へのCUDAインストール方法
NVIDIA CUDA Installation Guide for Linux
Install Docker Engine on Ubuntu
NVIDIA Docker って今どうなってるの? (19.11版)
NVIDIA Docker って今どうなってるの? (20.09 版)
NVIDIA-DOCKER2の始め方
cuDNN Archive
id - ユーザIDやグループIDを表示する
Autoware-docker build
Autoware-docker Source Build
Ubuntu18.04にAutoware.AIをインストール
Ubuntuの18.04 - NVIDIAドライバをインストールする方法
NVIDIA CUDA Toolkit Release Notes

12
6
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
12
6