Autoware Docker環境の構築

ここでは以下の書籍に従い、Autoware Dockerを動作させていきます。


**加藤 真平、藤居 祐輔、大里 章人　監修**
**安積 卓也、福富 大輔、徳永 翔太、橘川 雄樹、清谷 竣也　著**
**[Autoware :自動運転ソフトウェア入門](http://www.ric.co.jp/book/contents/book_1187.html)**

以降「Autoware :自動運転ソフトウェア入門」を**本書**と記述します。


同じような投稿が他にもありますが、ここでは初心者を対象として、できるだけ丁寧に書いていきたいと思います。
また、私が行った内容をトレースしているため、最終的に不要な事を行っている場合もありますので、ご注意下さい。

Autowareのdocker環境構築は、本書の3.2章に記載されていますが、情報が既に古くなっています。
例えば本書ではAutowareはGitHubで開発されていると記載されていますが、現在は[GitLab](https://gitlab.com/autowarefoundation/autoware.ai/autoware)へ移行しています。


GitLab上のドキュメントに載っている[手順](https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Generic-x86-Docker)ですが、新しい部分と古い部分が混在していて、少なくとも私にはわかりずらいです(2019年時点)。


# 環境
今回実施したのは以下の環境です。
- OS：Ubuntu 16.04
- GPU：GeForce GTX 960

# Autowareバージョンの決定
動作させるAutowareのバージョンを決定します。
3.2章を読み進めていくとどうもUbuntu 16.04ではAutoware1.8を使っているようです。

しかし[ここ](https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Source-Build)を見るとUbuntu16.04では1.9.0〜1.12.0を使うように書かれています。
1.8.0についての記述はありません。よってここでは1.8.0に近い1.9.0を使うこととします。

#Nvidia GPUドライバのセットアップ
GPUドライバのセットアップについては3.2章には詳しい記述がありません。

UbuntuでNvidiaドライバのインストール方法をググってみると、リポジトリを登録してaptでインストールする方法がよく出てきます。
しかしドライバのバージョンは、使用するGPUに依存するだけでなく、CUDAのバージョンにも依存するので、単独のインストールは避けたいところです。

本書の3.3章を見るとCUDAのインストールを行うとGPUドライバがインストールできることがわかります。
CUDAのバージョンはAutowareのバージョンに依存しているらしいです。Autoware1.8に対応するCUDAのバージョンは8.0と本書に書かれていますが、AutowareとCUDAの対応バージョンの一覧は載っていないです。本書はココらへんは割と載っていないので、ちょっと違うことをやろうとすると判断に困ります。

以下をみるとUbuntu16.04ではCUDA9.0を使うと書かれています。
https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Source-Build
ちょっと不安ですがCUDA9.0を使うようにします。

以下からダウンロードします。
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux
![Screenshot from 2020-01-02 13-30-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564717/2343dc53-36a1-264c-0882-286499c3e679.png)
※画像はNVIDIA公式サイトから引用

Installer Typeは"dev(local)"を選択しました。
パッチがあるようですが目的はGPUドライバのみなのでBase Installerだけでいいでしょう。
画像の赤マルのところをクリックしてダウンロードします。

ファイルをダウンロードしたら四つのコマンドを実行しろと書かれています（上の画像の青シカク）ので、1つずつ実行していきます。
まずは、dpkgによるインストールコマンドです。

```
kameyama@u1604:~/ダウンロード$ ls
cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
kameyama@u1604:~/ダウンロード$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
以前に未選択のパッケージ cuda-repo-ubuntu1604-9-0-local を選択しています。
(データベースを読み込んでいます ... 現在 218236 個のファイルとディレクトリがインストールされています。)
cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb を展開する準備をしています ...
cuda-repo-ubuntu1604-9-0-local (9.0.176-1) を展開しています...
cuda-repo-ubuntu1604-9-0-local (9.0.176-1) を設定しています ...

The public CUDA GPG key does not appear to be installed.
To install the key, run this command:
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub

kameyama@u1604:~/ダウンロード$
```

```
kameyama@u1604:~/ダウンロード$ sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
OK
kameyama@u1604:~/ダウンロード$ 
```

```
kameyama@u1604:~/ダウンロード$ sudo apt-get update
取得:1 file:/var/cuda-repo-9-0-local  InRelease
無視:1 file:/var/cuda-repo-9-0-local  InRelease
取得:2 file:/var/cuda-repo-9-0-local  Release [574 B]
　・・・・略・・・・
取得:18 http://jp.archive.ubuntu.com/ubuntu xenial-backports/universe amd64 DEP-11 Metadata [5,320 B]
ヒット:20 http://repo.steampowered.com/steam precise InRelease                             
取得:21 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]               
1,589 kB を 1秒 で取得しました (979 kB/s)
パッケージリストを読み込んでいます... 完了
kameyama@u1604:~/ダウンロード$ 
```

```
kameyama@u1604:~/ダウンロード$ sudo apt-get install cuda
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm5.0 snapd-login-service
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  bbswitch-dkms ca-certificates-java cuda-9-0 cuda-command-line-tools-9-0 cuda-core-9-0
  cuda-cublas-9-0 cuda-cublas-dev-9-0 cuda-cudart-9-0 cuda-cudart-dev-9-0 cuda-cufft-9-0
  cuda-cufft-dev-9-0 cuda-curand-9-0 cuda-curand-dev-9-0 cuda-cusolver-9-0
  cuda-cusolver-dev-9-0 cuda-cusparse-9-0 cuda-cusparse-dev-9-0 cuda-demo-suite-9-0
  cuda-documentation-9-0 cuda-driver-dev-9-0 cuda-drivers cuda-libraries-9-0
  cuda-libraries-dev-9-0 cuda-license-9-0 cuda-misc-headers-9-0 cuda-npp-9-0
  cuda-npp-dev-9-0 cuda-nvgraph-9-0 cuda-nvgraph-dev-9-0 cuda-nvml-dev-9-0 cuda-nvrtc-9-0
  cuda-nvrtc-dev-9-0 cuda-runtime-9-0 cuda-samples-9-0 cuda-toolkit-9-0
  cuda-visual-tools-9-0 default-jre default-jre-headless dkms fonts-dejavu-extra freeglut3
  freeglut3-dev java-common lib32gcc1 libc6-i386 libcuda1-384 libdrm-dev libgif7
  libgl1-mesa-dev libglu1-mesa-dev libice-dev libjansson4 libpthread-stubs0-dev libsm-dev
  libvdpau1 libx11-dev libx11-doc libx11-xcb-dev libxau-dev libxcb-dri2-0-dev
  libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev
  libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb1-dev libxdamage-dev
  libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxmu-dev libxmu-headers libxnvctrl0
  libxshmfence-dev libxt-dev libxxf86vm-dev mesa-common-dev mesa-vdpau-drivers nvidia-384
  nvidia-384-dev nvidia-modprobe nvidia-opencl-icd-384 nvidia-prime nvidia-settings
  ocl-icd-libopencl1 openjdk-8-jre openjdk-8-jre-headless screen-resolution-extra
  vdpau-driver-all x11proto-core-dev x11proto-damage-dev x11proto-dri2-dev
  x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev
  x11proto-xf86vidmode-dev xorg-sgml-doctools xtrans-dev
提案パッケージ:
  bumblebee default-java-plugin libice-doc libsm-doc libxcb-doc libxext-doc libxt-doc
  icedtea-8-plugin fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei
  fonts-wqy-zenhei fonts-indic libvdpau-va-gl1 nvidia-vdpau-driver
  nvidia-legacy-340xx-vdpau-driver
以下のパッケージが新たにインストールされます:
  bbswitch-dkms ca-certificates-java cuda cuda-9-0 cuda-command-line-tools-9-0
  cuda-core-9-0 cuda-cublas-9-0 cuda-cublas-dev-9-0 cuda-cudart-9-0 cuda-cudart-dev-9-0
  cuda-cufft-9-0 cuda-cufft-dev-9-0 cuda-curand-9-0 cuda-curand-dev-9-0 cuda-cusolver-9-0
  cuda-cusolver-dev-9-0 cuda-cusparse-9-0 cuda-cusparse-dev-9-0 cuda-demo-suite-9-0
  cuda-documentation-9-0 cuda-driver-dev-9-0 cuda-drivers cuda-libraries-9-0
  cuda-libraries-dev-9-0 cuda-license-9-0 cuda-misc-headers-9-0 cuda-npp-9-0
  cuda-npp-dev-9-0 cuda-nvgraph-9-0 cuda-nvgraph-dev-9-0 cuda-nvml-dev-9-0 cuda-nvrtc-9-0
  cuda-nvrtc-dev-9-0 cuda-runtime-9-0 cuda-samples-9-0 cuda-toolkit-9-0
  cuda-visual-tools-9-0 default-jre default-jre-headless dkms fonts-dejavu-extra freeglut3
  freeglut3-dev java-common lib32gcc1 libc6-i386 libcuda1-384 libdrm-dev libgif7
  libgl1-mesa-dev libglu1-mesa-dev libice-dev libjansson4 libpthread-stubs0-dev libsm-dev
  libvdpau1 libx11-dev libx11-doc libx11-xcb-dev libxau-dev libxcb-dri2-0-dev
  libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev
  libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb1-dev libxdamage-dev
  libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxmu-dev libxmu-headers libxnvctrl0
  libxshmfence-dev libxt-dev libxxf86vm-dev mesa-common-dev mesa-vdpau-drivers nvidia-384
  nvidia-384-dev nvidia-modprobe nvidia-opencl-icd-384 nvidia-prime nvidia-settings
  ocl-icd-libopencl1 openjdk-8-jre openjdk-8-jre-headless screen-resolution-extra
  vdpau-driver-all x11proto-core-dev x11proto-damage-dev x11proto-dri2-dev
  x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev
  x11proto-xf86vidmode-dev xorg-sgml-doctools xtrans-dev
アップグレード: 0 個、新規インストール: 105 個、削除: 0 個、保留: 0 個。
1,217 MB 中 120 MB のアーカイブを取得する必要があります。
この操作後に追加で 2,852 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
取得:1 file:/var/cuda-repo-9-0-local  cuda-license-9-0 9.0.176-1 [22.0 kB]
取得:2 file:/var/cuda-repo-9-0-local  cuda-misc-headers-9-0 9.0.176-1 [684 kB]
　・・・・略・・・・
Adding debian:Staat_der_Nederlanden_EV_Root_CA.pem
done.
libc-bin (2.23-0ubuntu11) のトリガを処理しています ...
initramfs-tools (0.122ubuntu8.16) のトリガを処理しています ...
update-initramfs: Generating /boot/initrd.img-4.15.0-72-generic
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
dbus (1.10.6-1ubuntu3.5) のトリガを処理しています ...
ureadahead (0.100.0-19.1) のトリガを処理しています ...
ca-certificates (20170717~16.04.2) のトリガを処理しています ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

done.
done.
kameyama@u1604:~/ダウンロード$ 
```


インストールが完了したらUbuntuを再起動する必要があります。

nvidia-smiコマンドが実行できればOKです。
![Screenshot from 2020-01-02 13-47-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564717/be6992c5-7a00-2038-769b-0838e0d24c4d.png)
ここではバージョン384.130のドライバがインストールされていました。


#Dockerのインストール
本書の"3.2.2 Dockerのセットアップ"に従いDockerをインストールします。
ここら辺は以下に詳しく載ってます。
https://docs.docker.com/install/linux/docker-ce/ubuntu/


まずは過去のバージョンのDockerを削除します。

```
kameyama@u1604:~$ sudo apt-get remove docker docker-engine docker.io containerd runc
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ 'docker-engine' はインストールされていないため削除もされません
パッケージ 'docker' はインストールされていないため削除もされません
パッケージ 'containerd' はインストールされていないため削除もされません
パッケージ 'docker.io' はインストールされていないため削除もされません
パッケージ 'runc' はインストールされていないため削除もされません
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm5.0 snapd-login-service
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
kameyama@u1604:~$ 
kameyama@u1604:~$ sudo apt-get update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease                      
ヒット:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease                    
無視:4 http://dl.google.com/linux/chrome/deb stable InRelease                              
ヒット:5 http://repo.steampowered.com/steam precise InRelease                              
ヒット:6 http://dl.google.com/linux/chrome/deb stable Release                              
取得:8 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]                
109 kB を 1秒 で取得しました (97.2 kB/s)
パッケージリストを読み込んでいます... 完了
kameyama@u1604:~$ 
```

次にリポジトリをアップデートして、必要なパッケージをインストールします。

```
kameyama@u1604:~$ sudo apt-get update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease                      
ヒット:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease                    
無視:4 http://dl.google.com/linux/chrome/deb stable InRelease                              
ヒット:5 http://repo.steampowered.com/steam precise InRelease                              
ヒット:6 http://dl.google.com/linux/chrome/deb stable Release                              
取得:8 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]                
109 kB を 1秒 で取得しました (97.2 kB/s)
パッケージリストを読み込んでいます... 完了
kameyama@u1604:~$ 
kameyama@u1604:~$ 
kameyama@u1604:~$ sudo apt-get install \
>     apt-transport-https \
>     ca-certificates \
>     curl \
>     gnupg2 \
>     software-properties-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
apt-transport-https はすでに最新バージョン (1.2.32) です。
ca-certificates はすでに最新バージョン (20170717~16.04.2) です。
curl はすでに最新バージョン (7.47.0-1ubuntu2.14) です。
curl は手動でインストールしたと設定されました。
gnupg2 はすでに最新バージョン (2.1.11-6ubuntu2.1) です。
software-properties-common はすでに最新バージョン (0.96.20.9) です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm5.0 snapd-login-service
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
kameyama@u1604:~$ 
```
次にDockerのofficial GPG keyを設定します。

```
kameyama@u1604:~$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
OK
kameyama@u1604:~$ 
kameyama@u1604:~$ sudo apt-key fingerprint 0EBFCD88
pub   4096R/0EBFCD88 2017-02-22
      フィンガー・プリント = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22
kameyama@u1604:~$ 
```

続けubuntu向けのstableリポジトリを登録します。

```
kameyama@u1604:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
kameyama@u1604:~$ 
kameyama@u1604:~$ sudo apt-get update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease                      
ヒット:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease                    
ヒット:4 https://download.docker.com/linux/ubuntu xenial InRelease                      
無視:5 http://dl.google.com/linux/chrome/deb stable InRelease                           
ヒット:6 http://repo.steampowered.com/steam precise InRelease                              
ヒット:7 http://dl.google.com/linux/chrome/deb stable Release                              
取得:9 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]                
109 kB を 1秒 で取得しました (66.8 kB/s)                                  
パッケージリストを読み込んでいます... 完了
kameyama@u1604:~$ 
```
updateも忘れずに実行します。
最後にdocker ceをインストールします。

```
kameyama@u1604:~$ sudo apt-get install docker-ce docker-ce-cli containerd.io
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm5.0 snapd-login-service
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  aufs-tools cgroupfs-mount git git-man liberror-perl pigz
提案パッケージ:
  git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb
  git-arch git-cvs git-mediawiki git-svn
以下のパッケージが新たにインストールされます:
  aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli git git-man
  liberror-perl pigz
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
89.2 MB のアーカイブを取得する必要があります。
この操作後に追加で 409 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
取得:1 https://download.docker.com/linux/ubuntu xenial/stable amd64 containerd.io amd64 1.2.10-3 [19.9 MB]
取得:2 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 pigz amd64 2.3.1-2 [61.1 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 aufs-tools amd64 1:3.2+20130722-1.1ubuntu1 [92.9 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 cgroupfs-mount all 1.2 [4,970 B]
取得:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 liberror-perl all 0.17-1.2 [19.6 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 git-man all 1:2.7.4-0ubuntu1.7 [736 kB]
取得:7 https://download.docker.com/linux/ubuntu xenial/stable amd64 docker-ce-cli amd64 5:19.03.5~3-0~ubuntu-xenial [42.4 MB]
取得:8 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 git amd64 1:2.7.4-0ubuntu1.7 [3,160 kB]
取得:9 https://download.docker.com/linux/ubuntu xenial/stable amd64 docker-ce amd64 5:19.03.5~3-0~ubuntu-xenial [22.8 MB]
89.2 MB を 1秒 で取得しました (58.4 MB/s)                       
以前に未選択のパッケージ pigz を選択しています。
(データベースを読み込んでいます ... 現在 217124 個のファイルとディレクトリがインストールされています。)
.../pigz_2.3.1-2_amd64.deb を展開する準備をしています ...
pigz (2.3.1-2) を展開しています...
以前に未選択のパッケージ aufs-tools を選択しています。
.../aufs-tools_1%3a3.2+20130722-1.1ubuntu1_amd64.deb を展開する準備をしています ...
aufs-tools (1:3.2+20130722-1.1ubuntu1) を展開しています...
以前に未選択のパッケージ cgroupfs-mount を選択しています。
.../cgroupfs-mount_1.2_all.deb を展開する準備をしています ...
cgroupfs-mount (1.2) を展開しています...
以前に未選択のパッケージ containerd.io を選択しています。
.../containerd.io_1.2.10-3_amd64.deb を展開する準備をしています ...
containerd.io (1.2.10-3) を展開しています...
以前に未選択のパッケージ docker-ce-cli を選択しています。
.../docker-ce-cli_5%3a19.03.5~3-0~ubuntu-xenial_amd64.deb を展開する準備をしています ...
docker-ce-cli (5:19.03.5~3-0~ubuntu-xenial) を展開しています...
以前に未選択のパッケージ docker-ce を選択しています。
.../docker-ce_5%3a19.03.5~3-0~ubuntu-xenial_amd64.deb を展開する準備をしています ...
docker-ce (5:19.03.5~3-0~ubuntu-xenial) を展開しています...
以前に未選択のパッケージ liberror-perl を選択しています。
.../liberror-perl_0.17-1.2_all.deb を展開する準備をしています ...
liberror-perl (0.17-1.2) を展開しています...
以前に未選択のパッケージ git-man を選択しています。
.../git-man_1%3a2.7.4-0ubuntu1.7_all.deb を展開する準備をしています ...
git-man (1:2.7.4-0ubuntu1.7) を展開しています...
以前に未選択のパッケージ git を選択しています。
.../git_1%3a2.7.4-0ubuntu1.7_amd64.deb を展開する準備をしています ...
git (1:2.7.4-0ubuntu1.7) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libc-bin (2.23-0ubuntu11) のトリガを処理しています ...
ureadahead (0.100.0-19.1) のトリガを処理しています ...
ureadahead will be reprofiled on next reboot
systemd (229-4ubuntu21.23) のトリガを処理しています ...
pigz (2.3.1-2) を設定しています ...
aufs-tools (1:3.2+20130722-1.1ubuntu1) を設定しています ...
cgroupfs-mount (1.2) を設定しています ...
containerd.io (1.2.10-3) を設定しています ...
docker-ce-cli (5:19.03.5~3-0~ubuntu-xenial) を設定しています ...
docker-ce (5:19.03.5~3-0~ubuntu-xenial) を設定しています ...
liberror-perl (0.17-1.2) を設定しています ...
git-man (1:2.7.4-0ubuntu1.7) を設定しています ...
git (1:2.7.4-0ubuntu1.7) を設定しています ...
libc-bin (2.23-0ubuntu11) のトリガを処理しています ...
systemd (229-4ubuntu21.23) のトリガを処理しています ...
ureadahead (0.100.0-19.1) のトリガを処理しています ...
kameyama@u1604:~$ 
```
hello-worldイメージを起動させて動作確認とします。

```
kameyama@u1604:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

```

#DockerからGPUを使う設定

DockerからGPUを使うためには、本書に従うとNVIDIA Dockerのセットアップを行う必要があります。
しかし、以下を見るとDocker のバージョン19.03以降の場合、DockerエンジンがGPUをサポートしているのでNVIDIA Dockerは不要とあります。
https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Generic-x86-Docker

インストールしたDockerのバージョンを確認すると19.3.5でしたのでNVIDIA Dockerは不要のようです。

```
kameyama@u1604:~$ docker --version
Docker version 19.03.5, build 633a0ea838
kameyama@u1604:~$ 
```
DockerからGPUを使用する方法は以下に記載されています。

https://docs.docker.com/engine/reference/commandline/run/#access-an-nvidia-gpu

それによるとnvidia-container-runtimeをインストールする必要があります。インストール方法は以下にあります。

https://nvidia.github.io/nvidia-container-runtime/

このページに従って実行してみます。まずはGPGキーの設定から。

```
kameyama@u1604:~$ curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
>   sudo apt-key add -
OK
```

次にリポジトリの登録

```
kameyama@u1604:~$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
kameyama@u1604:~$ curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
>   sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
deb https://nvidia.github.io/libnvidia-container/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/$(ARCH) /
```
アップデートしてインストールします。

```
kameyama@u1604:~$ sudo apt-get update
取得:1 file:/var/cuda-repo-9-0-local  InRelease
無視:1 file:/var/cuda-repo-9-0-local  InRelease
取得:2 file:/var/cuda-repo-9-0-local  Release [574 B]
取得:2 file:/var/cuda-repo-9-0-local  Release [574 B]
無視:4 http://dl.google.com/linux/chrome/deb stable InRelease                  
ヒット:5 https://download.docker.com/linux/ubuntu xenial InRelease             
ヒット:6 http://jp.archive.ubuntu.com/ubuntu xenial InRelease                  
取得:7 https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64  InRelease [1,106 B]
取得:8 https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64  InRelease [1,103 B]
ヒット:9 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease          
ヒット:10 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease       
ヒット:11 http://dl.google.com/linux/chrome/deb stable Release                 
取得:12 https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64  Packages [8,576 B]
取得:13 https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64  Packages [9,212 B]
ヒット:14 http://repo.steampowered.com/steam precise InRelease                 
ヒット:16 http://security.ubuntu.com/ubuntu xenial-security InRelease          
20.0 kB を 0秒 で取得しました (20.5 kB/s)
パッケージリストを読み込んでいます... 完了
kameyama@u1604:~$ apt-get install nvidia-container-runtime
E: ロックファイル /var/lib/dpkg/lock-frontend をオープンできません - open (13: 許可がありません)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
kameyama@u1604:~$ sudo apt-get install nvidia-container-runtimeパッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm5.0 snapd-login-service
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  libnvidia-container-tools libnvidia-container1 nvidia-container-toolkit
以下のパッケージが新たにインストールされます:
  libnvidia-container-tools libnvidia-container1 nvidia-container-runtime
  nvidia-container-toolkit
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。
1,260 kB のアーカイブを取得する必要があります。
この操作後に追加で 4,136 kB のディスク容量が消費されます。
続行しますか? [Y/n] 
取得:1 https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64  libnvidia-container1 1.0.5-1 [57.9 kB]
取得:2 https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64  libnvidia-container-tools 1.0.5-1 [15.6 kB]
取得:3 https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64  nvidia-container-toolkit 1.0.5-1 [575 kB]
取得:4 https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64  nvidia-container-runtime 3.1.4-1 [612 kB]
1,260 kB を 0秒 で取得しました (3,420 kB/s)       
以前に未選択のパッケージ libnvidia-container1:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 231201 個のファイルとディレクトリがインストールされています。)
.../libnvidia-container1_1.0.5-1_amd64.deb を展開する準備をしています ...
libnvidia-container1:amd64 (1.0.5-1) を展開しています...
以前に未選択のパッケージ libnvidia-container-tools を選択しています。
.../libnvidia-container-tools_1.0.5-1_amd64.deb を展開する準備をしています ...
libnvidia-container-tools (1.0.5-1) を展開しています...
以前に未選択のパッケージ nvidia-container-toolkit を選択しています。
.../nvidia-container-toolkit_1.0.5-1_amd64.deb を展開する準備をしています ...
nvidia-container-toolkit (1.0.5-1) を展開しています...
以前に未選択のパッケージ nvidia-container-runtime を選択しています。
.../nvidia-container-runtime_3.1.4-1_amd64.deb を展開する準備をしています ...
nvidia-container-runtime (3.1.4-1) を展開しています...
libc-bin (2.23-0ubuntu11) のトリガを処理しています ...
libnvidia-container1:amd64 (1.0.5-1) を設定しています ...
libnvidia-container-tools (1.0.5-1) を設定しています ...
nvidia-container-toolkit (1.0.5-1) を設定しています ...
nvidia-container-runtime (3.1.4-1) を設定しています ...
libc-bin (2.23-0ubuntu11) のトリガを処理しています ...
kameyama@u1604:~$ 
```
インストールできたか確認します。

```
kameyama@u1604:~$ which nvidia-container-runtime-hook
/usr/bin/nvidia-container-runtime-hook
kameyama@u1604:~$ 
```
インストールできたようです。インストール後はDockerデーモンを再起動する必要があります。

```
kameyama@u1604:~$ sudo systemctl | grep docker
sys-devices-virtual-net-docker0.device                                                   loaded active plugged   /sys/devices/virtual/net/docker0
sys-subsystem-net-devices-docker0.device                                                 loaded active plugged   /sys/subsystem/net/devices/docker0
docker.service                                                                           loaded active running   Docker Application Container Engine
docker.socket                                                                            loaded active running   Docker Socket for the API
kameyama@u1604:~$ sudo systemctl restart docker
kameyama@u1604:~$ 
```
ここまで出来たらDockerイメージからGPUが使えるかを確認します。確認方法もhttps://docs.docker.com/engine/reference/commandline/run/#access-an-nvidia-gpu に従います。
GPUを使用する場合はオプション"--gpus"を使用します。このオプションにはどのGPUを使用するかを渡します。
ここではこだわりがないので"all"を指定しています。

```
kameyama@u1604:~$ sudo docker run -it --rm --gpus all ubuntu nvidia-smi
Fri Jan  3 02:50:00 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.130                Driver Version: 384.130                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 960     Off  | 00000000:01:00.0  On |                  N/A |
| 21%   38C    P8     9W / 120W |    247MiB /  4036MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+
kameyama@u1604:~$ 
```
#Autoware Dockerのセットアップ
ここではPre-built Autoware Docker Imageを使用する方法を取ります。
3.2.4 章の流れに従いAutoware Dockerをセットアップします。
まずは適当にディレクトリを作って、リポジトリをCloneします。本書に記載されいているリポジトリは古い(GitHub)ので、
https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Generic-x86-Docker に従います。

```
kameyama@u1604:~$ mkdir autoware
kameyama@u1604:~$ cd autoware/
kameyama@u1604:~/autoware$ git clone https://gitlab.com/autowarefoundation/autoware.ai/docker.git
Cloning into 'docker'...
remote: Enumerating objects: 536, done.
remote: Counting objects: 100% (536/536), done.
remote: Compressing objects: 100% (319/319), done.
remote: Total 536 (delta 237), reused 496 (delta 214), pack-reused 0
Receiving objects: 100% (536/536), 962.20 KiB | 719.00 KiB/s, done.
Resolving deltas: 100% (237/237), done.
Checking connectivity... done.
kameyama@u1604:~/autoware$ 
```
cloneした内容を確認します。

```
kameyama@u1604:~/autoware$ ls
docker
kameyama@u1604:~/autoware$ cd docker/
kameyama@u1604:~/autoware/docker$ ls -F
CODE_OF_CONDUCT.md  LICENSE    SUPPORT.md   dependencies  nvidia/
CONTRIBUTING.md     README.md  crossbuild/  generic/
kameyama@u1604:~/autoware/docker$ cd generic/
kameyama@u1604:~/autoware/docker/generic$ ls -F
Dockerfile                Dockerfile.legacy.colcon  hooks/
Dockerfile.base           README.md                 run.sh*
Dockerfile.cuda.kinetic   build.sh*                 run_no_nvidia_docker.sh*
Dockerfile.cuda.melodic   dependencies
Dockerfile.legacy.catkin  entrypoint.sh*
```

Pre-built Autoware Docker Imageを起動するにはrun.shスクリプトを実行しろと書かれているのですが、
既存のrun.shはDockerコンテナを使用しているため、NVIDIA Runtimeの指定方法が異なります。

run.sh -hでオプションを確認すると、CUDAのon/offの切り替えができますので、これをoff指定にすることでNVIDIA Dockerの設定を無効にし、先のDockerエンジンからNVIDIA Runtimeを指定するオプションをrun.shに追加します。具体的な変更は以下です。

```
kameyama@u1604:~/autoware/docker/generic$ git diff
diff --git a/generic/run.sh b/generic/run.sh
index c0a3d2b..e2857cb 100755
--- a/generic/run.sh
+++ b/generic/run.sh
@@ -117,7 +117,7 @@ echo -e "\tPre-release version: $PRE_RELEASE"
 echo -e "\tUID: <$USER_ID>"
 
 SUFFIX=""
-RUNTIME=""
+RUNTIME=" --gpus all "
 
 XSOCK=/tmp/.X11-unix
 XAUTH=$HOME/.Xauthority
kameyama@u1604:~/autoware/docker/generic$
```

run.shを実行します。先に記述した通りAutowareのバージョンは1.9.0、ROSはUbuntu16.04なのでROSはKineticです。

```
kameyama@u1604:~/autoware/docker/generic$ sudo ./run.sh -t 1.9.0 -r kinetic -c off
Using options:
	ROS distro: kinetic
	Image name: autoware/autoware
	Tag prefix: 1.9.0
	Cuda support: off
	Pre-release version: off
	UID: <0>
Launching autoware/autoware:1.9.0-kinetic
Unable to find image 'autoware/autoware:1.9.0-kinetic' locally
1.9.0-kinetic: Pulling from autoware/autoware
18d680d61657: Pulling fs layer 
0addb6fece63: Pulling fs layer 
78e58219b215: Pulling fs layer 
eb6959a66df2: Waiting 
7a0b022c2633: Waiting 
2536ccb3c0e4: Waiting 
72568544e638: Waiting 
eb3c7a1fa7df: Waiting 
89d000f1160c: Pull complete 
ab501f65d629: Pull complete 
d8ad9440c91b: Pull complete 
d2f04e964386: Pull complete 
adfe26dc1787: Pull complete 
81077af92d65: Pull complete 
dba30169ab94: Pull complete 
a32d592f8e1d: Pull complete 
d9c260415685: Pull complete 
428ae4963ce1: Pull complete 
5fdd11ef6135: Pull complete 
0d5bc3d196a5: Pull complete 
6a5190daa6ee: Pull complete 
765fb5730fbd: Pull complete 
bf41175d74f3: Pull complete 
cd90ad64d433: Pull complete 
941205d3e9b6: Pull complete 
9386e57c18b6: Pull complete 
3bc1bcc4e918: Pull complete 
774c00c9d22f: Pull complete 
53efcdafd4a1: Pull complete 
ee426c8a1b38: Pull complete 
55a185be5aac: Pull complete 
Digest: sha256:217efb995faa0ef058723b7e98620462aa2c30d72a37e186ca590aebdf8e50c3
Status: Downloaded newer image for autoware/autoware:1.9.0-kinetic
autoware@u1604:~$ 
autoware@u1604:~$ 
```
プロンプトが"kameyama@u1604:"から"autoware@u1604:"へ変わりました。無事Autoware Docker imageが起動しました。

#Autowareの起動
最後にAutowareを起動します。~/Autoware/ros配下の"run"を実行します。

```
autoware@u1604:~$ pwd
/home/autoware
autoware@u1604:~$ ls
Autoware  darknet  shared_dir
autoware@u1604:~$ cd Autoware/
autoware@u1604:~/Autoware$ ls
AUTHORS  docker  docs  LICENSE  README.md  ros  THANKS  ui  vehicle
autoware@u1604:~/Autoware$ cd ros/
autoware@u1604:~/Autoware/ros$ ls
build                catkin_make_release_cross  cross_toolchain.cmake             devel  run               shutdown
catkin_make_release  cleanup                    cross_toolchain_driveworks.cmake  dpp    run_proc_manager  src
autoware@u1604:~/Autoware/ros$ ./run
Process Manager
```
こんな画面がでます。
![Screenshot from 2020-01-03 12-20-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564717/3d6976d1-e30e-62fc-bcaf-0a8bcc148fd6.png)


# しかし、、、
本書の"5章 Autowareの立ち上げ"に従いDEMOを実行したところ、Runtime ManagerからのROSツールの呼び出し（"RViz"ボタンを押す）でエラーになりました。dockerコンテナからOpenGLが使えないようです。
やっぱりNVIDIA Dockerを使うべきか？

※DEMOについてはここでは詳しく書きません。そのうち別に書くかも？

#NVIDIA Dockerのインストール
pre-build Autoware docker imageはNVIDIA Dockerを使用するようになっているので、NVIDIA dockerをインストールします。
NVIDIA Dockerには1(無印)と2があります。本書の"3.2.3 NVIDIA Dockerのインストール"ではNVIDIA Docker 1を使用することになっていますが、Autoware 1.9.xのrun.shではNVIDIA Docker2を使っていましたので、そちらをインストールします。

```
kameyama@u1604:~$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
OK
kameyama@u1604:~$ 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
deb https://nvidia.github.io/libnvidia-container/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-docker/ubuntu16.04/$(ARCH) /
kameyama@u1604:~$ sudo apt-get update
取得:1 file:/var/cuda-repo-9-0-local  InRelease
無視:1 file:/var/cuda-repo-9-0-local  InRelease
取得:2 file:/var/cuda-repo-9-0-local  Release [574 B]
取得:2 file:/var/cuda-repo-9-0-local  Release [574 B]
ヒット:3 http://jp.archive.ubuntu.com/ubuntu xenial InRelease               
ヒット:4 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease          
ヒット:6 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease        
無視:7 http://dl.google.com/linux/chrome/deb stable InRelease                  
ヒット:8 https://download.docker.com/linux/ubuntu xenial InRelease             
ヒット:9 https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64  InRelease
ヒット:10 https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64  InRelease
取得:11 https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64  InRelease [1,096 B]
ヒット:12 http://repo.steampowered.com/steam precise InRelease                 
ヒット:13 http://dl.google.com/linux/chrome/deb stable Release                 
取得:14 https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64  Packages [8,796 B]
取得:15 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]   
取得:17 http://security.ubuntu.com/ubuntu xenial-security/main amd64 DEP-11 Metadata [74.7 kB]
取得:18 http://security.ubuntu.com/ubuntu xenial-security/main DEP-11 64x64 Icons [79.5 kB]
取得:19 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 DEP-11 Metadata [124 kB]
取得:20 http://security.ubuntu.com/ubuntu xenial-security/universe DEP-11 64x64 Icons [194 kB]
取得:21 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 DEP-11 Metadata [2,464 B]
593 kB を 2秒 で取得しました (288 kB/s)
パッケージリストを読み込んでいます... 完了
W: ターゲット Packages (Packages) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Translations (ja_JP) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Translations (ja) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Translations (en) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Packages (Packages) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
W: ターゲット Translations (ja_JP) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
W: ターゲット Translations (ja) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
W: ターゲット Translations (en) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
W: ターゲット Packages (Packages) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Translations (ja_JP) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Translations (ja) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Translations (en) は /etc/apt/sources.list.d/nvidia-container-runtime.list:1 と /etc/apt/sources.list.d/nvidia-docker.list:1 で複数回設定されています
W: ターゲット Packages (Packages) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
W: ターゲット Translations (ja_JP) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
W: ターゲット Translations (ja) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
W: ターゲット Translations (en) は /etc/apt/sources.list.d/nvidia-container-runtime.list:2 と /etc/apt/sources.list.d/nvidia-docker.list:2 で複数回設定されています
kameyama@u1604:~$ sudo apt-get install -y nvidia-docker2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm5.0 snapd-login-service
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  nvidia-docker2
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
2,866 B のアーカイブを取得する必要があります。
この操作後に追加で 18.4 kB のディスク容量が消費されます。
取得:1 https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64  nvidia-docker2 2.2.2-1 [2,866 B]
2,866 B を 0秒 で取得しました (9,939 B/s) 
以前に未選択のパッケージ nvidia-docker2 を選択しています。
(データベースを読み込んでいます ... 現在 231230 個のファイルとディレクトリがインストールされています。)
.../nvidia-docker2_2.2.2-1_all.deb を展開する準備をしています ...
nvidia-docker2 (2.2.2-1) を展開しています...
nvidia-docker2 (2.2.2-1) を設定しています ...
kameyama@u1604:~$ 
```
#NVIDIA Docker 2を使ったAutoware Dockerの起動
NDIVIA Dockerを使ったAutoware Dockerを起動してみます。
NVIDIA Dockerを使用しなかったときに変更した"run.sh"はもとに戻してください。
Autowareのバージョンは1.9.0、ROSはUbuntu16.04なのでROSはKineticです。

```
kameyama@u1604:~/autoware/docker/generic$ sudo ./run.sh -t 1.9.0 -r kinetic -c on
Using options:
	ROS distro: kinetic
	Image name: autoware/autoware
	Tag prefix: 1.9.0
	Cuda support: on
	Pre-release version: off
	UID: <0>
Launching autoware/autoware:1.9.0-kinetic-cuda
Unable to find image 'autoware/autoware:1.9.0-kinetic-cuda' locally
docker: Error response from daemon: manifest for autoware/autoware:1.9.0-kinetic-cuda not found: manifest unknown: manifest unknown.
See 'docker run --help'.
kameyama@u1604:~/autoware/docker/generic$ 
```

エラーがでました。どうもautoware/autoware:1.9.0-kinetic-cudaというdocker imageが無いようです。

Docker-hubでイメージを探してみます。検索はDocker Hubの公式サイトから行います。
https://hub.docker.com/
以下、画像はDocker Hub公式サイトからの引用です。

![Screenshot from 2020-01-06 11-12-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564717/cd85c1f2-ae66-fac6-111f-422f6a9636e3.png)
"autoware"で検索します(赤四角部分)。
![Screenshot from 2020-01-06 11-12-53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564717/079a2d63-56c8-15d8-e605-83ecfcf75257.png)
複数検索されますが、"Autoware/autoware"が正解です。
![Screenshot from 2020-01-19 12-57-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564717/6dd39525-3c37-d03c-7b2a-fa12b627b1e6.png)
タブ"tag"を選択し、"1.9"で検索してみたところ、確かにありません。

いっそのことUbuntu 16.04で使える最新の1.12.0にしてみます。

1.12.0を使用する場合、sudoで起動することができませんでした。そこで自ユーザをdockerグループに追加して、自ユーザからdockerを起動できるようにします。

https://qiita.com/tifa2chan/items/9dc28a56efcfb50c7fbe

追加後はdockerサービス一式を再起動する必要があります。面倒なのでPCを再起動しました。

```
kameyama@u1604:~/autoware/docker/generic$ ./run.sh -t 1.12.0 -r kinetic 
Using options:
	ROS distro: kinetic
	Image name: autoware/autoware
	Tag prefix: 1.12.0
	Cuda support: on
	Pre-release version: off
	UID: <1000>
Launching autoware/autoware:1.12.0-kinetic-cuda
Unable to find image 'autoware/autoware:1.12.0-kinetic-cuda' locally
1.12.0-kinetic-cuda: Pulling from autoware/autoware
f7277927d38a: Pulling fs layer 
8d3eac894db4: Pulling fs layer 
edf72af6d627: Pulling fs layer 
3e4f86211d23: Waiting 
043ed1e8467c: Pulling fs layer 
e012378676bb: Waiting 
b660a670cd96: Waiting 
9d36c8c1d464: Pulling fs layer 
9aa65fdb2ffc: Waiting 
0d6158c90f97: Waiting 
d88a338206e9: Pull complete 
9e53d5eaa46e: Pull complete 
bd1a8624b870: Pull complete 
feff03c28825: Pull complete 
e15ebf0d9f8f: Pull complete 
3d758a5f8930: Pull complete 
9144371c59ca: Pull complete 
3fb4ac91b3db: Pull complete 
88a50a258b75: Pull complete 
feb2fd5f57e3: Pull complete 
5d2e178afc7d: Pull complete 
fc9d69c0c60a: Pull complete 
c2c4a7b696e8: Pull complete 
cd2510ba8834: Pull complete 
3a95675ea1d8: Pull complete 
49cb36c7682b: Pull complete 
ef1393e2650f: Pull complete 
25eaca28f128: Pull complete 
423a4e601079: Pull complete 
5cdf53770173: Pull complete 
42f136333de3: Pull complete 
3f278d8fa51b: Pull complete 
ba80186b4625: Pull complete 
Digest: sha256:7c2fdb7974b8643230ac9275f0c647f49c602f91a6db8227b3e8ba1ff83ab253
Status: Downloaded newer image for autoware/autoware:1.12.0-kinetic-cuda
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

autoware@u1604:~$ 
```
1.12.0のAutoware dockerイメージが起動しました。
1.12.0以降ではAutowareの起動方法も違っています。
https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/ROSBAG-Demo

```
autoware@u1604:~/Autoware$ source install/setup.bash 
autoware@u1604:~/Autoware$ ls
autoware.ai.repos  build  install  log  src
autoware@u1604:~/Autoware$ roslaunch runtime_manager runtime_manager.launch
... logging to /home/autoware/.ros/log/8f141552-302e-11ea-b922-74d435181e13/roslaunch-u1604-1043.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://u1604:40423/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.14

NODES
  /
    run (runtime_manager/run)

auto-starting new master
process[master]: started with pid [1053]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 8f141552-302e-11ea-b922-74d435181e13
process[rosout-1]: started with pid [1066]
started core service [/rosout]
process[run-2]: started with pid [1069]
[run-2] process has finished cleanly
log file: /home/autoware/.ros/log/8f141552-302e-11ea-b922-74d435181e13/run-2*.log

```
これでROSツールの呼び出しにも成功しました。
![Screenshot from 2020-01-06 11-57-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564717/8989a9b6-7d2b-8b3d-59fe-73c76a5fd71e.png)

以上です。

※各種製品名は、各社の製品名称、商標または登録商標です。本記事に記載されているシステム名、製品名には、必ずしも商標表示（(R)、TM）を付記していません。