栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

云服务器Docker运行ROS,并通过VNC连接

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

云服务器Docker运行ROS,并通过VNC连接

云服务器Docker运行ROS,并通过VNC连接
  • 使用华为云服务器
  • 系统Ubuntu18
  • VNC为x11vnc
安装图形界面

选择Xubuntu界面,占用资源较少,参考链接ubuntu安装gui

  1. 直接安装即可
    sudo apt install xubuntu-core
  2. 安装完成后可能需要启动
    startx
安装并启动x11vnc

开始用的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

  1. 安装
    sudo apt-get install x11vnc

  2. 生成密码
    sudo x11vnc -storepasswd

  3. 编辑启动文
    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
    
  4. 另一个窗口启动lightdm
    sudo lightdm

  5. 添加到服务中

    sudo systemctl daemon-reload
    sudo systemctl enable x11vnc.service
    sudo systemctl start x11vnc.service
    
  6. 验证x11vnc服务
    sudo netstat -an | grep 5901
    出现:

    tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN     
    tcp6       0      0 :::5901                 :::*                    LISTEN
    
  7. 远程连接vnc
    接下来就可以在远程客户端vnc连接服务器了

Docker运行ROS
  1. 重要但是很容易忘记的一步
    xhost +

xhost命令是X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示。
xhost +代表关闭访问授权,允许任何主机访问本地X服务器

  1. 拉取镜像
    docker pull ros:melodic-desktop-full

  2. 创建容器并运行

    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
    
  3. 启动master节点(注意是在容器中)
    roscore

  4. 另外打开一个终端,进入刚才的容器,注意把container_id换成真实的id
    sudo docker exec -it container_id bash

  5. 在容器内设置DISPLAY变量(这一步似乎很重要,设置为0,我也不太清楚什么意思)
    export DISPLAY=:0

  6. source一下环境变量(仍然在容器内)
    source ros_entrypoint.sh

  7. 检查是否可以运行rviz(仍然在容器中)
    rviz
    若出现rviz窗口,则成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号