ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker]Docker에서 RViz 실행하기(ROS Error log)
    카테고리 없음 2023. 3. 27. 11:16

    최근  ROS1를 사용할 일이 생겨서 그냥 우분투 18.04 위에서 사용하고 있었는데 우분투를 20.04로 업데이트를 해버려서 디펜던시 에러가 났다. 우분투 버전에 따라 ROS 버전도 달라져서 그냥 도커를 써버리기로 했다. 

    도커를 사용할때 ROS Visualizaion Tool 인 RViz의 GUI사용이 docker 내에서 작동이 안 되는데 간단하게 볼륨 마운트를 통해 도커 내에 GUI사용을 가능하게 할 수 있다. 

     

    ROS의 상징인 거북이

     

     ROS 버전 

    • Ubuntu 14.04 + ROS Indigo
    • Ubuntu 16.04 + ROS Kinetic
    • Ubuntu 18.04 + ROS Melodic
    • Ubuntu 20.04 + ROS Noetic

    위에처럼 버전이다다르고 다른 버전끼리 충돌 나니 docker를 사용하는 게 정신 건강에 이롭다.

    Open Source Robotics Foundation 에서 제작한 ROS도커 이미지를 사용해도 되지만 Ubuntu 18.04 이미지로 ROS 설치해 진행했다. 

     

    RViz

    Docker 실행

    sudo docker run -it -d \     
    --network="host" \
    --ipc="host" \
    --gpus all \
    --privileged \
    --name="ros" \
    -e DISPLAY=$DISPLAY \
    -v $XAUTHORITY:$XAUTHORITY \
    -e XAUTHORITY=$XAUTHORITY \
    -e QT_X11_NO_MITSHM=1 \
    -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
    ubuntu:18.04

    위와 같이 host옵션으로 실행하고 privileged(도커내에서 호스트 컴퓨터의 옵션을 바꿀 수 있음→ 필수) 모드로 실행 후 ROS관련 패키지를 설치한다.

     

    그리고 디스플레이들은 다 연결하였지만 만약 아래와 같은 에러가 발생하는경우

    [ WARN] [1678170522.800490847]: OGRE EXCEPTION(3:RenderingAPIException): Unable to create a suitable GLXContext in GLXContext::GLXContext at /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXContext.cpp (line 61)
    rviz::RenderSystem: error creating render window: OGRE EXCEPTION(3:RenderingAPIException): Unable to create a suitable GLXContext in GLXContext::GLXContext at /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXContext.cpp (line 61)
    [ERROR] [1678170522.800518308]: Unable to create the rendering window after 100 tries.
    terminate called after throwing an instance of 'std::logic_error'
      what():  basic_string::_M_construct null not valid
    [ INFO] [1678170522.834817415]: I0307 15:28:42.000000 22420 ordered_multi_queue.cc:172] All sensor data for trajectory 0 is available starting at '638137673228306087'.
    [ INFO] [1678170522.907428787]: I0307 15:28:42.000000 22420 local_trajectory_builder_2d.cc:127] Extrapolator not yet initialized.
    [ INFO] [1678170522.933869912]: I0307 15:28:42.000000 22420 local_trajectory_builder_2d.cc:138] Extrapolator is still initializing.
    ===============
    =================================================================REQUIRED process [rviz-7] has died!
    process has died [pid 22456, exit code -6, cmd /opt/ros/melodic/lib/rviz/rviz -d /root/catkin_ws/src/STELLA_N1_REMOTEPC_X4_ROS1_v2.0/stella_slam/rviz/stella_cartographer.rviz __name:=rviz __log:=/root/.ros/log/443acb9e-bcb1-11ed-9f7b-04421a0bc2f4/rviz-7.log].
    log file: /root/.ros/log/443acb9e-bcb1-11ed-9f7b-04421a0bc2f4/rviz-7*.log
    Initiating shutdown!
    ================================================================================
    [rviz-7] killing on exit
    [ WARN] [1678170523.082931502]: global_costmap: Parameter "plugins" not provided, loading pre-Hydro parameters

     

     

    구글에 찾아봐도 안 나와서 다양한 방법을 시도해 보다가 그냥 컨테이너 내에서 그래픽카드를 새로 설치하였다. 

    sudo apt install nvidia-driver-470 libnvidia-gl-470 libnvidia-compute-470 libnvidia-decode-470 libnvidia-encode-470 libnvidia-ifr1-470 libnvidia-fbc1-470

     

    그 후 컨테이너 재실행을 하니 제대로 실행이 되었다. 

Designed by Tistory.