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 镜像构筑 的相关文章

  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • 线速度和角速度

    转自 https baike baidu com item E7 BA BF E9 80 9F E5 BA A6 1532652 fr aladdin https baike baidu com item E8 A7 92 E9 80 9F
  • GG-CNN代码学习

    文章目录 1 源码网址 https github com dougsm ggcnn 2 数据集格式转化 下载后的康奈尔数据集 解压完之后里面的格式 里面的 tiff图像通过 txt文件转化得到 python m utils dataset
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • Ubuntu下vscode配置ROS环境

    摘要 最近准备放弃用clion开发ROS使用更主流的vscode 整理一下在ubuntu18 04下的VSCode安装和ROS环境配置流程 安装 方法一 软件商店安装 个人还是推荐使用ubuntu软件下载vscode 简单不容易出错 方法二
  • 解决ros安装 使用roscore命令测试问题

    本人安装教程完成ROS的安装后 在进行测试如图1命令 出现 解决办法输入完命令1后要输入命令2才行 即可测试成功 测试成功的界面如下
  • 树莓派配置wifi做热点方法

    http wiki jikexueyuan com project raspberry pi wifi html
  • 《学习篇》学会这18个常用ROS命令集合就能入门ROS了

    常用ROS命令概述 ROS常用命令可以按照其使用场景分为ROSshell命令 ROS执行命令 ROS信息命令 ROS catkin命令与ROS功能包命令 虽然很难从一开始就很熟练地使用所有的命令 但是随着使用的次数增多 你会发现常用的几个R
  • 如何将从 rospy.Subscriber 数据获得的数据输入到变量中?

    我写了一个示例订阅者 我想将从 rospy Subscriber 获得的数据提供给另一个变量 以便稍后在程序中使用它进行处理 目前 我可以看到订阅者正在运行 因为当我使用 rospy loginfo 函数时 我可以看到打印的订阅值 虽然我不
  • 在 Docker 容器中使用 VNCserver + GUI 应用程序 + Virtual Display

    我想在 docker 容器内运行 firefox 或任何图形应用程序 我的要求 当我启动容器时 我应该创建一个虚拟显示 启动 VNC 服务器 然后启动 GUI 应用程序 这意味着容器成功启动后 我可以通过 VNC 客户端连接到容器内运行的
  • ROS AsyncSpinner 的多线程行为

    我试图了解 ROS 中的 AsyncSpinner 是如何工作的 因为我可能有一些误解 你可以找到类似的问题here As seen here它的定义提到 异步旋转器 产生几个线程 可配置 将并行执行回调 同时不会阻塞执行该操作的线程 叫它
  • 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
  • 我可以从我的网页启动适用于 Google Chrome 网络应用程序的 VNC 查看器吗?

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

    这个问题最清楚了如何在Docker中启动完整的桌面环境 KDE XFCE Gnome无所谓 remote容器 我在互联网上挖掘there https stackoverflow com questions 16296753 can you
  • 我无法通过 VNC 查看 WPF Windows 应用程序的上下文菜单

    我可以打开上下文菜单 但无法通过 VNC 查看打开的菜单列表 我知道我可以通过直接检查vnc服务器机器来打开上下文菜单 我在不同的 vnc 服务器 客户端计算机 尽管它们都是 Windows Vista 和不同的 wpf 应用程序上进行了测
  • Jconsole无法连接

    我正在使用 VNC 连接到服务器 我能够通过 VNC 进入服务器并打开 Jconsole 但无论我包含 PID 还是尝试使用 GUI 进行连接 都无法让它连接到我的进程 奇怪的是所有进程都显示在 GUI 中 见下文 当我尝试连接时我得到这个
  • 在 ROS - Python 中使用来自多个主题的数据

    我能够显示来自两个主题的数据 但无法在 ROS 中实时使用和计算这两个主题的数据 用 Python 代码编写 您有想法存储这些数据并实时计算吗 谢谢 usr bin env python import rospy import string
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息
  • 如何使用一个凉亭同时创建两个地图?

    如下图所示 现在我的gazebo正在运行2个slam gmapping包 首先是 turtlebot slam gmapping 发布到 map 主题 第二个是 slam gmapping 发布到与第一个相同的 map 主题 我想创建一个新

随机推荐