- 使用华为云服务器
- 系统Ubuntu18
- VNC为x11vnc
选择Xubuntu界面,占用资源较少,参考链接ubuntu安装gui
- 直接安装即可
sudo apt install xubuntu-core - 安装完成后可能需要启动
startx
开始用的tightvnc,后来发现不能远程启动rviz,报错信息:
[ INFO] [1537648559.395352789]: rviz version 1.12.16 [ INFO] [1537648559.395581867]: compiled against Qt version 5.5.1 [ INFO] [1537648559.395659829]: compiled against OGRE version 1.9.0 (Ghadamon) [ INFO] [1537648559.835809950]: Stereo is NOT SUPPORTED [ INFO] [1537648559.836059261]: OpenGl version: 3 (GLSL 1.3).
于是换成x11vnc:
参考链接:Ubuntu18.04 远程命令行下安装并启动x11vnc
-
安装
sudo apt-get install x11vnc -
生成密码
sudo x11vnc -storepasswd -
编辑启动文
sudo vim /lib/systemd/system/x11vnc.service
启动文件内容(USERNAME要替换成自己的用户名)[Unit] Description=Start x11vnc at startup. After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5901 -shared [Install] WantedBy=multi-user.target
-
另一个窗口启动lightdm
sudo lightdm -
添加到服务中
sudo systemctl daemon-reload sudo systemctl enable x11vnc.service sudo systemctl start x11vnc.service
-
验证x11vnc服务
sudo netstat -an | grep 5901
出现:tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN tcp6 0 0 :::5901 :::* LISTEN
-
远程连接vnc
接下来就可以在远程客户端vnc连接服务器了
- 重要但是很容易忘记的一步
xhost +
xhost命令是X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示。
xhost +代表关闭访问授权,允许任何主机访问本地X服务器
-
拉取镜像
docker pull ros:melodic-desktop-full -
创建容器并运行
sudo docker run -it --env="DISPLAY=:0" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" osrf/ros:melodic-desktop-full -
启动master节点(注意是在容器中)
roscore -
另外打开一个终端,进入刚才的容器,注意把container_id换成真实的id
sudo docker exec -it container_id bash -
在容器内设置DISPLAY变量(这一步似乎很重要,设置为0,我也不太清楚什么意思)
export DISPLAY=:0 -
source一下环境变量(仍然在容器内)
source ros_entrypoint.sh -
检查是否可以运行rviz(仍然在容器中)
rviz
若出现rviz窗口,则成功



