LoginSignup
2

More than 1 year has passed since last update.

osrf / rockerでROS/ROS2のためのGUIコンテナ環境構築

Posted at

はじめに

本格的にROS2を使いたいと思っていた所、ROS Japan UG #42 LT大会の資料にずっとやりたかったGUIが使えるコンテナ環境構築のやり方があったので実際にやってみる。

方針

  • 資料で説明されていたやり方の1つである「Ubuntuマシン+DockerでX11経由でGUIを利用」を採用する。
    • 他にもWEBブラウザ経由(参考)というやり方があるが、気軽に試す分にはこれが一番簡単。
  • ROS2 Foxyでrviz2とgazeboが起動することを確認する。
    • 念の為、ROS1 noeticでも可能か確認する。

環境

  • ホストPC

    • OS: Ubuntu 18.04
    • GPU: Geforce RTX 2060
  • nvidiaドライバのバージョン

user@user-ubuntu:~$ nvidia-smi     
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.80       Driver Version: 460.80       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 2060    Off  | 00000000:0A:00.0  On |                  N/A |
| 49%   36C    P5    22W / 160W |   1232MiB /  5931MiB |     26%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

手順

  • Python製Docker CLIラッパーのosrf/rockerを利用することで手軽に環境を構築できるようなのでこれを使う。
  • まずnvidiaドライバーとnvidia container toolkitをインストールしてなければインストール。
    • 今回ドライバのバージョンは動作確認されているものと違うものを使ったが現状問題なく動作している。
  • 後はインストールとテストを行う
    • 基本はREADMEに沿ってやればいいがいくつかハマった場所がある。
    • rockerインストール時の注意
      • pipコマンドを直打は現在推奨されていないので記述が古い。
        • 正式にはpython3 -m pip installのような書き方にする。
      • rockerインストール時Failed building wheel for empyというエラーがでる。
        • wheelをpipでインストールすれば解決
    • テスト実行
      • 以下のテスト実行コマンドが動作しない。
        • nosetests-3.4 --with-coverage --cover-package rocker
      • 後述のサンプル実行に影響なさそうなので、原因は後で調べるとして今は無視。
  • サンプル実行
    • サンプルコマンドを実行するとrivz2やgazeboが実行できる。
    • ただし、droneと飛行機のサンプルはエラーがでて動作しなかった。
      • マウントが失敗したというエラーがでる。
      • 対策が分からなかったため後で調査する。
  • foxyで実行
    • サンプルにfoxyがなかったが以下のコマンドを実行してrviz2が起動することを確認。
      • sudo rocker --nvidia --x11 --user --home osrf/ros:foxy-desktop rviz2
    • gazebo起動についてはコンテナ内でgazeboをインストールしてから実行。
      • コンテナ内に移動: sudo rocker --nvidia --x11 --user --home osrf/ros:foxy-desktop
      • パッケージを最新に更新: sudo apt update
      • gazeboインストール: sudo apt install gazebo11 ros-foxy-gazebo-ros-pkgs
      • gazeboコマンドを入力して起動したらOK
  • noeticで実行
    • サンプルにnoeticはなかったがrvizはroscoreを起動しないといけないため以下の手順で動作を確認。
      • コンテナ内に移動: sudo rocker --nvidia --x11 --user --home osrf/ros:noetic-desktop-full
      • roscoreとrvizを実行: roscore & rviz
      • rvizが起動したらOK。
    • gazebo起動は以下のコマンドで起動したらOK
      • sudo rocker --nvidia --x11 --user --home osrf/ros:noetic-desktop-full gazebo

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
What you can do with signing up
2