差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| articles:ros_docker [2023/11/10 21:45] – [nvidia_ros_noetic の今回の使い方] Takashi Suehiro | articles:ros_docker [2025/01/13 17:37] (現在) – 削除 Takashi Suehiro | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== ROS Docker ====== | ||
| - | 参考: | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | ===== Docker ===== | ||
| - | 参考:https:// | ||
| - | |||
| - | aptの設定 | ||
| - | <code shell> | ||
| - | # Add Docker' | ||
| - | sudo apt-get update | ||
| - | sudo apt-get install ca-certificates curl gnupg | ||
| - | sudo install -m 0755 -d / | ||
| - | curl -fsSL https:// | ||
| - | sudo chmod a+r / | ||
| - | |||
| - | # Add the repository to Apt sources: | ||
| - | echo \ | ||
| - | "deb [arch=" | ||
| - | "$(. / | ||
| - | sudo tee / | ||
| - | sudo apt-get update | ||
| - | |||
| - | </ | ||
| - | dockerのインストール | ||
| - | <code shell> | ||
| - | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||
| - | |||
| - | </ | ||
| - | NVIDIA Container Toolkitのインストール\\ | ||
| - | https:// | ||
| - | |||
| - | aptの設定 | ||
| - | <code shell> | ||
| - | curl -fsSL https:// | ||
| - | && curl -s -L https:// | ||
| - | sed 's#deb https://# | ||
| - | sudo tee / | ||
| - | && \ | ||
| - | sudo apt-get update | ||
| - | </ | ||
| - | インストー | ||
| - | <code shell> | ||
| - | sudo apt-get install -y nvidia-container-toolkit | ||
| - | </ | ||
| - | dockerを一般ユーザで使えるようにする | ||
| - | <code shell> | ||
| - | sudo usermod -aG docker jibun | ||
| - | </ | ||
| - | ===== ros-docker-gui ===== | ||
| - | 参考: | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | |||
| - | |||
| - | |||
| - | githubからのダウンロード | ||
| - | <code shell> | ||
| - | $ git clone https:// | ||
| - | </ | ||
| - | <code shell> | ||
| - | $ cd ros-docker-gui | ||
| - | $ ls | ||
| - | LICENSE | ||
| - | </ | ||
| - | サポートされているコンテナを調べる | ||
| - | <code shell> | ||
| - | $ make | ||
| - | help This help. | ||
| - | nvidia_ros_indigo | ||
| - | |||
| - | . | ||
| - | . | ||
| - | nvidia_ros_kinetic | ||
| - | . | ||
| - | . | ||
| - | nvidia_ros_melodic | ||
| - | nvidia_ros_melodic_cuda10 | ||
| - | nvidia_ros_melodic_cuda10-1 | ||
| - | nvidia_ros_melodic_cuda10_cudnn7 | ||
| - | nvidia_ros_melodic_cuda10-1_cudnn7 | ||
| - | nvidia_ros_melodic_cuda11-4-2 | ||
| - | nvidia_ros_melodic_cuda11-4-2_cudnn8 | ||
| - | nvidia_ros_noetic | ||
| - | . | ||
| - | . | ||
| - | nvidia_ros_bouncy | ||
| - | nvidia_run_help | ||
| - | cpu_ros_indigo | ||
| - | cpu_ros_kinetic | ||
| - | cpu_ros_melodic | ||
| - | cpu_ros_noetic | ||
| - | cpu_run_help | ||
| - | tools_vscode | ||
| - | tools_canutils | ||
| - | tools_cannelloni | ||
| - | tools_cmake | ||
| - | </ | ||
| - | サポートされているものが多数あるのでどれが良いかわからないが | ||
| - | とりあえずシンプルに nvidia_ros_melodic を選択してみる. | ||
| - | <code shell> | ||
| - | $ sudo make nvidia_ros_melodic | ||
| - | </ | ||
| - | かなり時間がかかる. | ||
| - | |||
| - | 最後に以下が表示されて完了となる. | ||
| - | < | ||
| - | Docker Image: turlucode/ | ||
| - | </ | ||
| - | |||
| - | ==== 利用法の一般論 ==== | ||
| - | |||
| - | 実行前の処理 | ||
| - | <code shell> | ||
| - | $ xhost + | ||
| - | </ | ||
| - | |||
| - | rootとしてログインする実行スクリプト(--rm オプションは終了時にcontainerを削除するので注意) | ||
| - | <code shell> | ||
| - | docker run --gpus all -it --rm --name=ros_melodic \ | ||
| - | | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e XAUTHORITY=/ | ||
| - | | ||
| - | </ | ||
| - | 一般ユーザでログインする実行スクリプト(--rm オプションは終了時にcontainerを削除するので注意) | ||
| - | |||
| - | ホスト側ユーザと同じ名前,IDのユーザをコンテナ側にも作成する | ||
| - | <code shell> | ||
| - | docker run -it --gpus all --rm --privileged --net=host --ipc=host \ | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e DOCKER_USER_NAME=$(id -un) \ | ||
| - | -e DOCKER_USER_ID=$(id -u) \ | ||
| - | -e DOCKER_USER_GROUP_NAME=$(id -gn) \ | ||
| - | -e DOCKER_USER_GROUP_ID=$(id -g) \ | ||
| - | -e ROS_IP=127.0.0.1 \ | ||
| - | turlucode/ | ||
| - | </ | ||
| - | 入ってから, | ||
| - | <code shell> | ||
| - | > sudo apt update | ||
| - | > sudo apt upgrade | ||
| - | </ | ||
| - | この後,turtlebot3関連のパッケージをインストールすれば良い. | ||
| - | |||
| - | ユーザのローカルディスクのマウントオプション | ||
| - | < | ||
| - | # for root user | ||
| - | -v $HOME/< | ||
| - | # for local user | ||
| - | -v $HOME/< | ||
| - | </ | ||
| - | |||
| - | ==== nvidia_ros_melodicの今回の使い方 ==== | ||
| - | 実行前の処理 | ||
| - | <code shell> | ||
| - | $ xhost + | ||
| - | </ | ||
| - | |||
| - | rootとしてログインする実行スクリプト(containerを残すため--rmをなくす): | ||
| - | <code shell> | ||
| - | docker run --gpus all -it --name=ros_melodic \ | ||
| - | | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e XAUTHORITY=/ | ||
| - | | ||
| - | </ | ||
| - | |||
| - | containerのrootとしてやるべきことをやる. | ||
| - | * aptのupdate, | ||
| - | * その他,パッケージのインストール(これは後からでもできる) | ||
| - | * ユーザの追加.ホスト側に合わせておくと楽かも. | ||
| - | * ユーザのパスワード設定 | ||
| - | * ユーザをsudoグループに追加 | ||
| - | |||
| - | <code shell> | ||
| - | > apt update | ||
| - | > apt upgrade | ||
| - | > apt install emacs | ||
| - | > useradd -u 1000 ts | ||
| - | > passwd ts | ||
| - | > usermod -G sudo ts | ||
| - | </ | ||
| - | とりあえずsudoできるユーザを作成しておけば後は比較的自由にできる. | ||
| - | |||
| - | 上記containerを抜けて新しいイメージの保存する. | ||
| - | < | ||
| - | $ docker commit melodic melodic:01 | ||
| - | </ | ||
| - | |||
| - | このあとは新たに作成したmelodic: | ||
| - | |||
| - | ホスト側にソースコードなどを残したいのでホスト側でディレクトリを作り | ||
| - | それをcontainer側でマウントする. | ||
| - | <code shell> | ||
| - | $ mkdir ros_melodic | ||
| - | </ | ||
| - | container名として同じros_melodicを使うのでros_melodicを消しておく. | ||
| - | |||
| - | <code shell> | ||
| - | $ docker container rm ros_melodic | ||
| - | </ | ||
| - | |||
| - | ros_melodic: | ||
| - | (run_ros_melodic_4.sh) | ||
| - | |||
| - | **このスクリプトは,startのたびに深くsu tsするためおかしな状態になるので使えない.** | ||
| - | <code shell> | ||
| - | docker run -it --gpus all \ | ||
| - | | ||
| - | | ||
| - | -v $HOME/ | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e XAUTHORITY=/ | ||
| - | -e DOCKER_USER_NAME=$(id -un) \ | ||
| - | -e DOCKER_USER_ID=$(id -u) \ | ||
| - | -e DOCKER_USER_GROUP_NAME=$(id -gn) \ | ||
| - | -e DOCKER_USER_GROUP_ID=$(id -g) \ | ||
| - | -e ROS_IP=127.0.0.1 \ | ||
| - | | ||
| - | </ | ||
| - | そこで以下のスクリプトで走らせる. | ||
| - | |||
| - | <code shell> | ||
| - | docker run -it --gpus all \ | ||
| - | | ||
| - | | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e XAUTHORITY=/ | ||
| - | -e ROS_IP=127.0.0.1 \ | ||
| - | -v $HOME/ | ||
| - | | ||
| - | |||
| - | </ | ||
| - | この後は,su tsとして一般ユーザとしてrosbookの作業を行っていけばよい. | ||
| - | |||
| - | containerを削除せずに続けて使えば変更が蓄積されていく. | ||
| - | <code shell> | ||
| - | |||
| - | </ | ||
| - | もう一つのスクリプト | ||
| - | <code shell> | ||
| - | docker run -ti --rm --name robosoft \ | ||
| - | –v / | ||
| - | | ||
| - | | ||
| - | –e DISPLAY=:0 \ | ||
| - | –v / | ||
| - | –v / | ||
| - | | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | スナップショットが必要であれば新たな名前でimageを作成する. | ||
| - | |||
| - | | ||
| - | < | ||
| - | $ sudo apt-get install libcanberra-gtk* | ||
| - | </ | ||
| - | === imageリスト === | ||
| - | - ros_noetic: | ||
| - | - ros_noetic: | ||
| - | |||
| - | ==== nvidia_ros_noetic の今回の使い方 ==== | ||
| - | 実行前の処理 | ||
| - | <code shell> | ||
| - | $ xhost + | ||
| - | </ | ||
| - | |||
| - | rootとしてログインする実行スクリプト(containerを残すため--rmをなくす): | ||
| - | <code shell> | ||
| - | docker run --gpus all -it --name=ros_noetic_01 \ | ||
| - | | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e XAUTHORITY=/ | ||
| - | | ||
| - | </ | ||
| - | |||
| - | containerのrootとしてやるべきことをやる. | ||
| - | * aptのupdate, | ||
| - | * その他,パッケージのインストール(これは後からでもできる) | ||
| - | * ユーザの追加.ホスト側に合わせておくと楽かも. | ||
| - | * ユーザのパスワード設定 | ||
| - | * ユーザをsudoグループに追加 | ||
| - | |||
| - | <code shell> | ||
| - | > apt update | ||
| - | > apt upgrade | ||
| - | > apt install emacs | ||
| - | > apt install ros-noetic-turtlebot3-gazebo | ||
| - | > apt install gnome-terminal | ||
| - | > apt install python-is-python3 | ||
| - | > adduser ts | ||
| - | > usermod -G sudo ts | ||
| - | > cp / | ||
| - | > cp / | ||
| - | > cp / | ||
| - | > cd /home/ts | ||
| - | > chown ts:ts . .bashrc .bash_logout .profile | ||
| - | > su ts | ||
| - | $ cd | ||
| - | $ echo " | ||
| - | </ | ||
| - | とりあえずsudoできるユーザを作成しておけば後は比較的自由にできる. | ||
| - | |||
| - | 上記containerを抜けて新しいイメージの保存する. | ||
| - | < | ||
| - | $ docker commit ros_noetic_01 ros_noetic: | ||
| - | </ | ||
| - | |||
| - | このあとは新たに作成したros_noetic: | ||
| - | |||
| - | ホスト側にソースコードなどを残したいのでホスト側でディレクトリを作り | ||
| - | それをcontainer側でマウントする. | ||
| - | <code shell> | ||
| - | $ mkdir ros_noetic | ||
| - | </ | ||
| - | |||
| - | |||
| - | ros_melodic: | ||
| - | (run_ros_melodic_4.sh) | ||
| - | |||
| - | **このスクリプトは,startのたびに深くsu tsするためおかしな状態になるので使えない.** | ||
| - | <code shell> | ||
| - | docker run -it --gpus all \ | ||
| - | | ||
| - | | ||
| - | -v $HOME/ | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e XAUTHORITY=/ | ||
| - | -e DOCKER_USER_NAME=$(id -un) \ | ||
| - | -e DOCKER_USER_ID=$(id -u) \ | ||
| - | -e DOCKER_USER_GROUP_NAME=$(id -gn) \ | ||
| - | -e DOCKER_USER_GROUP_ID=$(id -g) \ | ||
| - | -e ROS_IP=127.0.0.1 \ | ||
| - | | ||
| - | </ | ||
| - | そこで以下のスクリプトで走らせる. | ||
| - | |||
| - | <code shell> | ||
| - | docker run -it --gpus all \ | ||
| - | | ||
| - | | ||
| - | -v / | ||
| - | -v $HOME/ | ||
| - | -e XAUTHORITY=/ | ||
| - | -e ROS_IP=127.0.0.1 \ | ||
| - | -v $HOME/ | ||
| - | | ||
| - | |||
| - | </ | ||
| - | この後は,su tsとして一般ユーザとしてrosbookの作業を行っていけばよい. | ||
| - | |||
| - | containerを削除せずに続けて使えば変更が蓄積されていく. | ||
| - | |||
| - | 以下のエラーメッセージへの対応. | ||
| - | <code shell> | ||
| - | Couldn' | ||
| - | </ | ||
| - | .bashrcに以下を記述 | ||
| - | <code shell> | ||
| - | # disable to display dbind-WARNING | ||
| - | export NO_AT_BRIDGE=1 | ||
| - | </ | ||
| - | |||
| - | もう一つのスクリプト | ||
| - | <code shell> | ||
| - | docker run -ti --rm --name robosoft \ | ||
| - | –v / | ||
| - | | ||
| - | | ||
| - | –e DISPLAY=:0 \ | ||
| - | –v / | ||
| - | –v / | ||
| - | | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | スナップショットが必要であれば新たな名前でimageを作成する. | ||
| - | |||
| - | | ||
| - | < | ||
| - | $ sudo apt-get install libcanberra-gtk* | ||
| - | </ | ||
| - | === imageリスト === | ||
| - | - ros_noetic: | ||
| - | - ros_noetic: | ||
| - | - ros_noetic: | ||
| - | - ros_noetic: | ||
| - | - ros_noetic: | ||
| - | |||
| - | ==== nvidiaのcontainerが動かなくなった ==== | ||
| - | containerをstartさせたり,imageからrunしようとしても以下のようなエラーで立ち上がらなくなった. | ||
| - | < | ||
| - | .... | ||
| - | nvidia-container-cli: | ||
| - | </ | ||
| - | |||
| - | 対策: | ||
| - | - 再起動 | ||
| - | - ドライバーの入れ直し.https:// | ||
| - | |||
| - | 1が楽. | ||
| - | ===== docker-ros-desktop-vnc ===== | ||
| - | これはubuntu22.04ベース固定であまり使えなそう. | ||
| - | |||
| - | ちょとお試しという感じ. | ||
| - | |||
| - | 参考: | ||
| - | * https:// | ||
| - | * https:// | ||
| - | |||
| - | < | ||
| - | $ sudo docker run -p 6080:80 --shm-size=512m tiryoh/ | ||
| - | </ | ||
| - | ===== ubuntu18.04 ===== | ||
| - | |||
| - | 参考: | ||
| - | * https:// | ||
| - | * https:// | ||
| - | |||
| - | これから調査 | ||
| - | |||
| - | 素のubuntu desktop環境から始めれば自由度が高いかもしれない | ||
| - | |||
| - | と思ったが,何も(xとかも)入っていないので環境構築に苦労しそうl | ||