##まずはじめに
仕事ではプログラミングとは全く縁がありませんが数年前から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ドライバのインストール)
こちらを参考にしました。
ubuntu-drivers devices
sudo apt update
sudo apt install nvidia-driver-***
もしうまく行かない場合こちらの記事を参考にしました。GUIが使えなくなるのはツライ・・・
NVIDIA公式サイトでドライバを検索してインストール。もし見つからない場合はβ版があるかもしれないのでこちらから探すようにしてください。
sudo bash NVIDIA-Linux-x86_64-440.36.run
##2. 必要なものインストール
GPUのnvidia-driverとCUDA Toolkitの一覧はこちら
ちゃんと対応するものをインストールしましょう。
###CUDA Toolkit 10.0 をインストール(dockerを使うなら不要)
まずCUDAをインストールします。今回はAutowareの推奨がCUDA10なのでそちらをインストールします。
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)
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にそっていけばインストールできます。
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 版)](https://medium.com/nvidiajapan/nvidia-docker-%E3%81%A3%E3%81%A6%E4%BB%8A%E3%81%A9%E3%81%86%E3%81%AA%E3%81%A3%E3%81%A6%E3%82%8B%E3%81%AE-20-09-%E7%89%88-558fae883f44?source=collection_home---6------5----------------------- "NVIDIA Docker って今どうなってるの? (20.09 版)")と
こちら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
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してこない場合はうまく行っていないので注意してください。
<- imageが存在しないようなので削除しました。sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
docker run --rm --runtime nvidia nvidia/cuda:10.0-base nvidia-smi
###ROSのインストール <- (dockerで使用するなら不要)
ROSはOSのバージョンによって対応するバージョンが異なり、Ubuntu18.04にはmelodicをインストールします。
こちらにそってインストールしましょう。
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
あとはAutoware-docker buildにしたがってビルドしていきます。今回はv1.13.0をビルドしていくためバージョン指定します。
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
するたびにイメージが作成されるようになることになりますが。。。
# 最後の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をビルドするところがちょっとうまく行かなかったので変えています。
# 依存ライブラリのインストール
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をインストールにそってやればビルドが完了します。
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の環境ファイルの読み込み
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 版)](https://medium.com/nvidiajapan/nvidia-docker-%E3%81%A3%E3%81%A6%E4%BB%8A%E3%81%A9%E3%81%86%E3%81%AA%E3%81%A3%E3%81%A6%E3%82%8B%E3%81%AE-20-09-%E7%89%88-558fae883f44?source=collection_home---6------5----------------------- "NVIDIA Docker って今どうなってるの? (20.09 版)")
・NVIDIA-DOCKER2の始め方
・[cuDNN Archive](https://developer.nvidia.com/rdp/cudnn-archive "cuDNN Archive"
・Ubuntu install of ROS Melodic
・id - ユーザIDやグループIDを表示する
・Autoware-docker build
・Autoware-docker Source Build
・Ubuntu18.04にAutoware.AIをインストール
・Ubuntuの18.04 - NVIDIAドライバをインストールする方法
・NVIDIA CUDA Toolkit Release Notes