Docker의 ROS 응용 프로그램을 호스트 측 GUI로 표시

5552 단어 도커RobotROS

개요


  • 호스트 측 GUI에서 docker에서 ROS 기반 응용 프로그램을 시작하는 방법을 보여줍니다.
  • 간단하게 사용할 수 있는 dockerfile 가 없었기 때문에 만들어 공개했습니다 → chikuta-dockerfiles

  • 검증 환경



    이번 검증한 환경은 다음과 같습니다.

    Hardware
    cpu - AMD Ryzen 9 3900X
    gpu - Geforce RTX 2060 super
    램 - 32G

    소프트웨어
    os - 우분투 20.04.1
    커널 - Linux define 5.4.0-48-generic
    docker - 19.03.13
    nvidia-driver - 450.66
    cuda version - 11.0
    nvidia-smi 출력을 첨부합니다.
    $ nvidia-smi
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 450.66       Driver Version: 450.66       CUDA Version: 11.0     |
    |-------------------------------+----------------------+----------------------+
    | 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 206...  Off  | 00000000:0E:00.0  On |                  N/A |
    | 38%   40C    P8    11W / 175W |    916MiB /  7979MiB |      1%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    

    환경 정비



    먼저 nvidia-container-runtime을 설치합니다.
    # apt 関連設定
    $ curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
    $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    $ 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
    
    # nvidia-container-runtimeインストール
    $ sudo apt update
    $ sudo apt install nvidia-container-runtime
    
    # docker service の再起動
    $ sudo systemctl restart docker.service
    

    그런 다음 docker group에 자신의 UID를 등록합니다. docker 를 사용하고 있는 사람은 하고 있다고 생각합니다만 생각을 위해.
    $ sudo usermod -a -G docker `id -un`
    $ sudo systemctl restart docker.service
    

    실행 방법



    그런 다음 docker 이미지를 빌드합니다.
    $ git clone https://github.com/chikuta/chikuta-dockerfiles.git
    $ cd chikuta-dockerfiles
    $ ./docker/ros-bionic-melodic/build-docker-image.bash
    

    그런 다음 다음 명령을 실행하여 빌드된 이미지의 컨테이너를 시작할 수 있습니다. 스크립트의 내용은 xhost 주위의 처리와 docker의 인수를 랩핑한 것입니다. 필요에 따라 편집을 하면 자신의 환경을 만들 수 있어 적극적으로 커스터마이즈합시다.
    $ cd chikuta-dockerfiles
    $ ./docker/ros-bionic-melodic/run-docker-container.bash
    

    스크립트를 실행하면 terminator가 시작됩니다. 이것은 docker 컨테이너상에서 움직이고 있는 터미널 어플리케이션이 되기 (위해)때문에, 여기에서 실행한 명령은 모두 docker 컨테이너상에서 처리됩니다.

    콘솔을 기본 빨간색에서 파란색으로 변경하는 것이 세련된군요.


    terminator를 시작하는 아이디어는 shadow-robot의 dockerfile을 참조합니다. 본가는 dockerfile상에서 ansible을 실행하는 과잉의 사양이므로 필요한 곳만을 추출해 컴팩트하게 정리했습니다.

    마지막으로 기본 GUI 앱을 시작해 봅시다.
    # 1st terminal
    $ roscore
    
    # 2nd terminal
    $ rviz
    
    # 3rd terminal
    $ gazebo
    



    참고


  • h tps:// 하테나 bぉg. jp/엔트리/2019/08/17/002854
  • htps : ///응아아아. 기주 b. 이오 / 응 ぃ ぢ 아-이런 r 루 룬 치메 /
  • htps : // 메이 m. 코 m/@벤자민. 보트 / 오 펜 gl an d 쿠다 - 아 p ぃ 카치 온 s - ndo- c r r a f0 에세 000f1
  • 좋은 웹페이지 즐겨찾기