[태그:] gcamp

  • ros를 nvidia docker로 돌리기

    ros를 nvidia docker로 돌리기

    최신 ros docker 이미지로 gazebo를 그냥 돌리면 초당 4 frame으로 업데이트 된다. 참고 사용 사용하려다 느려 도저히 사용할 수 없어 방법을 찾아 봤다. nvidia-docker로 runtime을 nvidia로 입력해 주면 초 당 60 프레임으로 업데이트 된다. 금방 할 수 있어 찾은 보람이 있다.

    http://wiki.ros.org/docker/Tutorials/Hardware%20Acceleration

    위 사이트를 참조하여 아래 Dockerfile로 새롭게 이미지를 만들었다.

    FROM osrf/ros:noetic-desktop-full
    
    # nvidia-container-runtime
    ENV NVIDIA_VISIBLE_DEVICES \
        ${NVIDIA_VISIBLE_DEVICES:-all}
    ENV NVIDIA_DRIVER_CAPABILITIES \
        ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics
    
    USER root
    RUN apt -y update
    RUN apt -y install vim
    COPY ./.bashrc /root/

    매번 입력하기 귀찮으니 ros 강의 자료에 있는 alias를 참조하여 .bashrc를 루트 홈에 넣었다. 처음 컨테이너를 실행할 때 entrypoint로 bashrc를 자동으로 실행하는데, 두번째 부터는 같은 컨테이너에 붙여도 bashrc를 실행하지 않는다. docker exec 옵션에 없는 듯 하다.

    now0930@amd2004:~/dockerBuild/ros$ docker exec -it noetic_ros /bin/bash
    root@amd2004:/# sds

    매번 컨테이너에 들어간 후 sds를 실행해야 하여 귀찮다.

    now0930@amd2004:~/dockerBuild/ros$ cat .bashrc 
    alias eb='vi ~/.bashrc'
    alias sb='source ~/.bashrc'
    alias cma='catkin_make -DCATKIN_WHITELIST_PACKAGES=""'
    alias cop='catkin_make --only-pkg-with-deps'
    alias sds='source /opt/ros/noetic/setup.bash'
    alias axclient='rosrun actionlib axclient.py'
    set -o vi

    xhost로 local을 추가하여 docker 출력을 돌린다. docer run을 다음과 같이 한다.

    now0930@amd2004:~/dockerBuild/ros$ sudo xhost +local:docker
    [sudo] now0930 암호: 
    non-network local connections being added to access control list
    now0930@amd2004:~/dockerBuild/ros$ xhost 
    access control enabled, only authorized clients can connect
    LOCAL:
    INET:localhost
    SI:localuser:now0930
    now0930@amd2004:~/dockerBuild/ros$ 
    #!/bin/bash
    nvidia-docker run -it -v /run/user/1000:/run/user/1000 -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
    	-v /home/now0930/ros_test:/home/ros_test --name noetic_ros \
    	--privileged --ipc=host --shm-size=512m --net=host -e DISPLAY=$DISPLAY \
    	-e XDG_RUNTIME_DIR=/run/user/1000 --runtime=nvidia \
    	osrf/ros_custom:noetic-desktop-full