為了要寫出這篇關於「為了使用GUI,我走過的那些歪路」,得先把自己的狀態拉回兩年前,小小闡述一下當時混亂的自己。
當時剛接到論文題目的我,還正試圖理解自走車的一切,以及當時研究所的其他課程
最初對ROS1的理解就是只能在Ubuntu上操作,又當時只有windows電腦的我,學習了怎麼使用WSL(Windows 子系統 Linux 版),下一步就是要讓WSL顯示圖形介面。
給自己的小筆記:
Linux 作業系統的桌面環境有很多種,包括Openbox、FluxBox、GNOME、KDE、Xfce、LxDE、IceWM等...
來源:ubuntu wiki
以下是有成功的方式整理,依照學習順序排序,不建議效仿!!
在windows wsl 情況下使用X server之VcXsrv連線工具,接著再開啟Ubuntu 終端機(WSL),安裝X Server,一些設定後,正常來說就可以出現小烏龜囉~
來源:Window10 建置Ubuntu(WSL2)與GUI桌面配置筆記
hostname -I得到終端機ip後,透過RealVNC來遠端

來源:How to Use WSL2 With A GUI
上面兩個是在windows操作!!
後來又慢慢地找到更方便的方法,也就是前兩天介紹的Docker,無論在windows/ubuntu都可以使用!
這是從F1tenth學到的方式,之後有機會再來慢慢補充~
以下擷取docker-compose.yml
version: '3'
services:
  sim:
    image: f1tenth_gym_ros
    build: ./
    volumes: 
      - .:/sim_ws/src/f1tenth_gym_ros
    environment:
      - DISPLAY=novnc:0.0
    networks:
      - x11
    stdin_open: true
    tty: true 
  novnc:  
    image: theasp/novnc:latest
    environment:
      - DISPLAY_WIDTH=1728
      - DISPLAY_HEIGHT=972
    ports:
      - "8080:8080"
    networks:
      - x11
networks:
  x11:

後來搞懂自己究竟在幹嘛後,發現官方教學(Using GUIs with Docker)舊友提供很好的方式了,還包含了windows/ubuntu兩個版本
以下是ubuntu版本
xhost local:root
XAUTH=/tmp/.docker.xauth
docker run -it \
    --name=it15test_gui \
    --env="DISPLAY" \
    --env="QT_X11_NO_MITSHM=1" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --env="XAUTHORITY=$XAUTH" \
    --volume="$XAUTH:$XAUTH" \
    --net=host \
    --privileged\
    osrf/ros:foxy-desktop \
    bash
以上就是為了叫出小烏龜的血淚史QQ
ros2 run turtlesim turtlesim_node

明天就以這隻小烏龜來介紹node吧~