VNC-Ros-kinetic 镜像构筑

2023-05-16

VNC -Ros-kinetic 镜像

鉴于某些服务器的特殊要求,rviz图像无法穿透X11显示,特此构建基于 ros-knetic-vnc 镜像的docker容器镜像 & 记录其构筑过程

docker 安装 & 拉取镜像

#拉取docker镜像
docker pull ct2034/vnc-ros-kinetic-full:latest
#运行docker
docker run -it --rm -p 6080:80 ct2034/vnc-ros-kinetic-full
#打开网页栏目登入: Browse http://127.0.0.1:6080/

ROS 添加源设置

#添加ros源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update

#桌面完整版安装(Desktop-full):这是最为推荐的一种安装版本,除了包含ROS的基础功能(核心功能包、构建工具和通信机制)外,还包含丰富的机器人通用函数库、功能包(2D/3D感知功能、机器人地图建模、自主导航等)以及工具(rviz可视化工具、gazebo仿真环境、rqt工具箱等)。

sudo apt install ros-melodic-desktop-full

#桌面版安装(Desktop):该版本是完整安装的精简版,去掉了机器人功能包和部分工具,仅包含ROS基础功能、机器人通用函数库、rqt工具箱和rviz可视化工具。

sudo apt install ros-melodic-desktop

#基础版安装(ROS-Base):基础版精简了机器人通用函数库、功能包和工具,仅保留了没有任何GUI的基础功能(核心功能包、构建工具和通信机制)。因此该版本软件的规模最小,也是ROS需求的“最小系统”,非常适合直接安装在对性能和空间要求较高的控制器之上,为嵌入式系统使用ROS提供了可能。

sudo apt install ros-melodic-ros-base

#功能包独立安装(Individual Package): 无论使用以上哪种安装方式,都不可能讲ROS社区内的所有功能包安装到计算机上,在后期使用中会时常根据需求使用如下命令安装独立的功能包:

sudo apt install ros-melodic-PACKAGE

例如: sudo apt install ros-melodic-slam-gmapping

初始化ros

rosdep是ROS中自带的工具,主要功能是为某些功能包安装系统依赖,同时也是某些ROS核心功能包必须用到的工具。完成以上安装步骤后,需要使用以下命令进行初始化和更新:

sudo rosdep init
rosdep update

PS:
我在台式电脑上执行sudo rosdep init命令的时候, 遇到如下问题:

ERROR: cannot download default sources list from:
https://raw.github.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

解决方法:

检查系统时间是否正确

sudo -E rosdep init,

我这边使用这个命令解决了问题(ubuntu已翻墙),如果不行,继续尝试下面的方法;

  • 查看当前系统日期和时间是否正确,然后再次尝试上面的命令;
    运行sudo apt-get update和sudo apt-get upgrade之后,再次尝试上面的命令;
  • 如果还是不行,尝试sudo apt-get install ca-certificates,再次尝试上面的命令;
    参考网站:rosdep init gives “Website may be down.” #9721 (该网站可能需要翻墙)

设置环境变量

现在ROS已经成功安装到计算机中了,默认在/opt路径下。在后续使用中,由于会频繁使用终端命令输入ROS命令,所以在使用之前还需要对环境变量进行简单设置。
Ubuntu默认使用的终端是bash,在bash中设置ROS环境变量的命令如下:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

如果使用的终端是zsh,则需要讲以上命令中的bash都修改为zsh:

echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
source ~/.zshrc

rosinstall也是ROS中的一个常用工具,可以下载和安装ROS中的功能包程序。这个工具暂时不是必须的,但是为了后续开发,还是建议通过以下命令安装:

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

至此,VNC-ROS镜像构筑完成

Ros操作

# 安装 & 编译仿真文件
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src/
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws && catkin_make

#启动ros
$ roscore
#启动gzebo仿真地图
$ export TURTLEBOT3_MODEL=waffle
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
#启动slam地图扫描
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

多机执行

sudo apt-get install ros-kinetic-multirobot-map-merge

在这里插入图片描述

roslaunch turtlebot3_gazebo multi_turtlebot3.launch

$ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_0/base_footprint set_odom_frame:=tb3_0/odom set_map_frame:=tb3_0/map
$ ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_1/base_footprint set_odom_frame:=tb3_1/odom set_map_frame:=tb3_1/map
$ ROS_NAMESPACE=tb3_2 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_2/base_footprint set_odom_frame:=tb3_2/odom set_map_frame:=tb3_2/map

$ roslaunch turtlebot3_gazebo multi_map_merge.launch

$ rosrun rviz rviz -d `rospack find turtlebot3_gazebo`/rviz/multi_turtlebot3_slam.rviz

$ ROS_NAMESPACE=tb3_0 rosrun turtlebot3_teleop turtlebot3_teleop_key
$ ROS_NAMESPACE=tb3_1 rosrun turtlebot3_teleop turtlebot3_teleop_key
$ ROS_NAMESPACE=tb3_2 rosrun turtlebot3_teleop turtlebot3_teleop_key


在这里插入图片描述

$ rosrun map_server map_saver -f ~/map

不同电脑在同一roscore下运行多机器人节点

#获取两台电脑的节点

192.168.1.151 (machine A)
192.168.1.154 (machine B)

#打开host文件

sudo gedit /etc/hosts

#添加如下指令(host 节点的添加十分重要,因为ROS对机器的调用 hosts > DNS 优先级,所以 hosts配置好才能连通话题)

A端

127.0.0.1       localhost
127.0.1.1         [ hostname_A ]

[IP_A]            [ hostname_A ]
[IP_B]            [ hostname_B ]

B端

127.0.0.1       localhost
127.0.1.1         [ hostname_B ]

[IP_B]            [ hostname_B ]
[IP_A]            [ hostname_A ]

修改 .bashrc 文件

A&B端 末尾加入

sudo gedit ~/.bashrc
export ROS_MASTER_URI=http://IP:11311
ROS_IP=http://IP

4. 运行小乌龟程序

电脑A端:

#首先启动 ROS:
$ roscore
#然后 Ctrl + T 打开新的控制台,运行:
$ rosrun turtlesim turtlesim_node

电脑B端:

$ rosrun turtlesim turtle_teleop_key

现在,你就可以用电脑 B 控制电脑 A 中的小乌龟尽情遨游啦! (≧▽≦)/啦啦啦

Reference

https://blog.csdn.net/Lynn_mg/article/details/101874775

https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/#gazebo-simulation

https://blog.csdn.net/weixin_34891380/article/details/119111082

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VNC-Ros-kinetic 镜像构筑 的相关文章

  • ros 中ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdist

    ros 中ERROR cannot download default sources list from https raw githubusercontent com ros rosdistro master rosdep sources
  • GG-CNN代码学习

    文章目录 1 源码网址 https github com dougsm ggcnn 2 数据集格式转化 下载后的康奈尔数据集 解压完之后里面的格式 里面的 tiff图像通过 txt文件转化得到 python m utils dataset
  • 如何在 CentOS/RHEL 和 Fedora 上设置 VNC 服务器(Linux 远程桌面访问)

    VNC 虚拟网络计算 服务器支持 Linux 系统的远程桌面访问 类似于MSTSC在窗户中 一般来说Linux管理员不喜欢使用Windows访问 但有时我们需要访问Linux的远程桌面 在这种情况下 我们需要在 Linux 系统上安装 vn
  • ROS rosdep update 出错方法 不需要翻墙切换之类的解决方法 ‘https://raw.githubusercontent.com/ros/rosdistro/master/inde

    系统 ubuntu18 rosdep update参考的这篇文章 https blog csdn net weixin 43311920 article details 114796748 utm source app app versio
  • 在Ubuntu 14.04.2 LTS上安装Qt

    Qt是一个跨平台的应用程序框架 广泛用于开发具有GUI界面的应用软件以及命令行工具 几乎所有操作系统都可以使用Qt 如Windows Mac OS X Android等 用于开发Qt应用程序的主要编程语言是C 但是可以使用诸如Python
  • ROS 第四天 ROS中的关键组件

    1 Launch文件 通过XML文件实现多节点的配置和启动 可自动启动ROS Master
  • 【ROS】usb_cam相机标定

    1 唠叨两句 当我们要用相机做测量用途时 就需要做相机标定了 不然得到的计算结果会有很大误差 标定的内容包括三部分 内参 外参还有畸变参数 所以标定的过程就是要求得上面这些参数 以前弄这个事估计挺麻烦 需要做实验和计算才能得到 现在通过ro
  • roslaunch error: ERROR: cannot launch node of type

    今天在因为github上有个之前的包更新了 重新git clone后出现了一个问题 ERROR cannot launch node of type crazyflie demo controller py can t locate nod
  • 在 CLion 中设置 ROS 包

    我正在使用 CLion C IDE 来编辑 ROS 包 我可以通过打开CMakeLists txt文件 但是 我收到一个错误 FATAL ERROR find package catkin 失败 在工作区和 CMAKE PREFIX PAT
  • ROS AsyncSpinner 的多线程行为

    我试图了解 ROS 中的 AsyncSpinner 是如何工作的 因为我可能有一些误解 你可以找到类似的问题here As seen here它的定义提到 异步旋转器 产生几个线程 可配置 将并行执行回调 同时不会阻塞执行该操作的线程 叫它
  • Kinect / Primesense (Xtion) ROS Ubuntu 通过虚拟机 (VMware)

    由于我花了相当长的时间才弄清楚如何让 Xtion Primesense 在 VMware 上工作 所以我想在这里与大家分享 使用 Kinect 时 即使 VMware 已成功连接该设备 我也无法让 ROS 查看该设备 roslaunch o
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • catkin_make后找不到ROS包

    我根据 ROS 的 Wiki 页面创建了一个 ROS 工作区 我还使用创建了一个包catkin create pkg在我刚刚创建的工作区下 然后 按照 ROS Wiki 中的步骤使用以下命令构建包catkin make 构建包后 我插入命令
  • 我可以从我的网页启动适用于 Google Chrome 网络应用程序的 VNC 查看器吗?

    我正在构建一个 Web 服务 为远程计算机提供 VNC 连接 目前我正在使用一个名为 novnc 的项目将 VNC 嵌入到我的网页的元素中 然而 它非常慢 尤其是网络浏览器 eclipse等 然而 当我尝试 novnc 发布的 VNC Vi
  • 将单个应用程序显示导出到 VNC

    我正在寻找一个脚本 解决方案来将单个 Linux 应用程序显示导出到 VNC 例如 客户端浏览网页 它需要身份验证 基本用户名密码 通过身份验证后 他会看到一个带有不同按钮的页面 每个按钮都与一个应用程序相关 例如 单击 firefox 按
  • Jconsole无法连接

    我正在使用 VNC 连接到服务器 我能够通过 VNC 进入服务器并打开 Jconsole 但无论我包含 PID 还是尝试使用 GUI 进行连接 都无法让它连接到我的进程 奇怪的是所有进程都显示在 GUI 中 见下文 当我尝试连接时我得到这个
  • ROS 从 python 节点发布数组

    我是 ros python 的新手 我正在尝试从 python ros 节点发布一个一维数组 我使用 Int32MultiArray 但我无法理解多数组中布局的概念 谁能给我解释一下吗 或者还有其他方式发布数组吗 Thanks usr bi
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息
  • Linux:通过网络进行屏幕桌面视频捕获和 VNC 帧速率

    抱歉 文字墙很长 TL DR VNC 连接的帧速率是多少 以帧 秒为单位 或者更确切地说 由谁决定 客户端还是服务器 对于桌面屏幕捕获的任何其他建议 但 正确的时间编码 具有不抖动的帧速率 具有稳定的周期 并有可能将其作为未压缩 或无损 图
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS

随机推荐