wsl2(Ubuntu16.04 LTS)にAutoware.aiをインストール
- 環境
- Windows10 home(20H2)
- WSL2
- Ubuntu16.04 LTS
- 目標
- autowareをdockerで起動
- demo用のrosbag使ってmapを描画
公式のGithubで強く推奨されているDockerを使ってインストールする
Generic x86 Docker · Autoware-AI/autoware.ai Wiki · GitHub
- wsl2インストールする(VcXsrv等でXserverも使えるようにしておく)
- Dockerをインストールする
Docker素人なので、↓に従って慣れてみる
Docker Installation · Autoware-AI/autoware.ai Wiki · GitHub
順調にインストールできていたが、最後のsudo docker run hello-world
でエラーになる。
$ sudo docker run hello-world docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'.
エラーメッセージからするとdocker daemonなるものが動いていない様子。
sudo service docker status
で調べてみると
$ sudo service docker status * Docker is not running
と出力される。Autowareのほうのチュートリアルは書いてなかったがsudo service docker start
でdockerエンジンを立ち上げる?と無事hello-worldまで完了。
$ sudo service docker start * Starting Docker: docker [ OK ] $ sudo service docker status * Docker is running $ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:e7c70bb24b462baa86c102610182e3efcb12a04854e8c582838d92970a09f323 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/
- Autoware Docker Containerを実行する
私は↓のCase 1で実行しました。
Generic x86 Docker · Autoware-AI/autoware.ai Wiki · GitHub
$ cd ~/docker/generic $ ./run.sh -r kinetic -c off
※defaultだとROSはmelodicが選択される。
↓によるとUbuntu16.04ではkineticが推奨らしいので-r kinetic
を引数に追加。
Source Build · Wiki · Autoware Foundation / MovedToGitHub / autoware · GitLab
また、cuda周りでエラーが出たので、とりあえず-c off
。
ここで下記のエラーが出た場合は、docker実行時に管理者実行できていないことが原因。 補足①を参考に権限を付与する。
無事にrun.shの実行が終わるとユーザーがautowareに変わる。
※2回目に起動したスクショ。1回目はいろんなdownloadが実行される。
- autowareのdemo実行
一度exitしてhostに戻る(戻らなくてもできるかもしれない)。
↓に従い、demo用のデータをダウンロード。 ROSBAG Demo · Autoware-AI/autoware.ai Wiki · GitHub cdで/shared_dirに移動してからダウンロードすると、autowareコンテナと共有できる。 (2個目のsample_moriyama_150324.tar.gzは容量でかい。ダウンロード完了に時間かかる)
$ cd shared_dir/ $ wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz $ wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz
ダウンロード完了したら再度autoware docker起動。
(もともとautowareユーザーでshare_dirにwgetでもできるかもしれない)
$ cd ~/docker/generic $ ./run.sh -r kinetic -c off
↓に従い、上記でダウンロードしたデータを指定のフォルダに移動&解凍。
ROSBAG Demo · Autoware-AI/autoware.ai Wiki · GitHub
$ cd ~ $ mkdir .autoware $ cd .autoware $ cp ~/shared_dir/sample_moriyama_* . $ tar zxfv sample_moriyama_150324.tar.gz $ tar zxfv sample_moriyama_data.tar.gz
ここから先が公式のチュートリアル"2.Run Autoware"とは異なる。
autowareのバージョンは1.12以上(1.14)なのだが、autoware.ai
というディレクトリがない。
代わりにAutoware
というディレクトリに移動する。
$ cd ~/Autoware $ source install/setup.bash $ roslaunch runtime_manager runtime_manager.launch
なんだかエラーなのかよくわからんのがターミナル上に表示される。
とはいえautoware自体は起動する。
Simulationタブに移動する
さきほどダウンロードしたdemo用のrosabagデータを読み込む。
ダウンロード&解凍したディレクトリ.autoware
は隠しファイルなので、"右クリック→Show Hidden Filesをクリック"で表示させる。
sample_moriyama_150324.bag
を選んでopen。
こんな感じになる
Start Timeに140をセットし、Playを押す。
適当なタイミングでPause押す。
右下にあるRVizを押す。
が、一瞬RVizのロゴが出てきて何も起こらない・・・
どうもOpenGLが原因らしい。
WSLやらVcXsrvやら一度すべて落として再起動。
VcXsrvのwindows側のOpenGLを使用しない設定の引数を追加する。
再度、docker起動し.autoware
にデータコピー&解凍。
roslaunchでAutoware起動。
同じ手順でrosbagデータを読み込むと今度は無事RViz起動。
Configを読み込む。
↓のパスにあるdefault.rviz
を読み込む。
~/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/default.rviz
最初に起動したときのconfigの変更するか聞かれるが、とりあえずdiscard。
QuickStartのタブに戻る。
公式の画像だと画像がつぶれて見えにくいが、おそらく下記の設定にする。
・Map:
home/autoware/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/my_map.launch
・Sensing:
/home/autoware/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/my_sensing.launch
・Localization:
/home/autoware/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/my_localization.launch
・Detection:
/home/autoware/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/my_detection.launch
・Mission Planning:
/home/autoware/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/my_mission_planning.launch
・Motion Planning:
/home/autoware/Autoware/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/my_motion_planning.launch
Mapボタンを押す。
Simulationタブに戻り、Pauseを解除するとMapがRVizに描画される。
- 補足①
Got permission denied while trying to connect to the Docker daemon socket
sudoなしでdockerを動作させられるように、下記を参考に権限付与。
dockerコマンド実行時の「Got permission denied while trying to connect to the Docker daemon socket」 - Libra Studio エンジニアブログ
$ sudo gpasswd -a $USER docker $ sudo chgrp docker /var/run/docker.sock
参考にしたサイトではdockerの再起動でOKとのことだったが、私の環境ではダメだったのでUbuntuを再起動(プロンプトを再起動)したらsudoなしでdockerが実行できるようになった。