ROS从入门到精通4-2:Docker安装ROS、可视化仿真与终端复用

目录

  • 0 专栏介绍
  • 1 Docker安装ROS
  • 2 Docker可视化仿真
    • 2.1 显示配置
    • 2.2 启动容器
  • 3 终端复用工具
    • 3.1 `session`操作
    • 3.2 `window`操作
    • 3.3 `pane`操作
    • 3.4 其他操作

0 专栏介绍

本专栏旨在通过对ROS的系统学习,掌握ROS底层基本分布式原理,并具有机器人建模和应用ROS进行实际项目的开发和调试的工程能力。

🚀详情:《ROS从入门到精通》


1 Docker安装ROS

拉取ROS的官方镜像并查看

docker pull osrf/ros:noetic-desktop-full
docker images

在这里插入图片描述
根据镜像创建容器

docker run -it osrf/ros:noetic-desktop-full bash

在容器内运行

roscore

即可启动ROS节点管理器

在这里插入图片描述

2 Docker可视化仿真

2.1 显示配置

运行

xhost +

使其他主机能够访问本机的X Server,若显示

access control disabled, clients can connect from any host

表示成功。当用户从host A登录到host B时,作为应用程序,host A是客户侧;作为图形界面而言,由于在host A上显示,需要使用host AX Server,此时host A是服务侧,因此需要在host A上开启其他host的访问权限。接着,Docker通过映射将对X Server的请求透传到主机端DISPALYDISPLAY对应主机端的显示接口,完成显示。关于xhost有如下的常用命令

  • xhost +:使所有用户都能访问X Server
  • xhost + ip:使ip上的用户能够访问X Server
  • xhost + nis:user@domain:使domain上的nis用户能够访问X Server
  • xhost + inet:user@domain:使domain上的inet用户能够访问X Server

2.2 启动容器

启动带GUI环境变量的Docker容器,配置了从容器到主机的显示映射

docker run -it \--env="DISPLAY" \--env="QT_X11_NO_MITSHM=1" \--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \osrf/ros:noetic-desktop-full \/bin/bash

~/.bashrc中配置ROS的环境变量

source /opt/ros/noetic/setup.bash

接着通过

docker exec -it <container_name> /bin/bash

再启动两个连接该容器的终端,启动乌龟仿真器

  • 终端1
    rosrun turtlesim turtlesim_node
    
  • 终端2
    rosrun turtlesim turtle_teleop_key
    

即可操控乌龟运动

在这里插入图片描述
RvizGazebo也是同样的显示方法

在这里插入图片描述

3 终端复用工具

在运行容器时,可能需要再启动多个终端进入容器操作,这在远程连接等工作环境下并不方便,因此Docker需要配合终端复用工具Tmux使用

在这里插入图片描述

Tmux具有以下优势:

  • 会话持久性Tmux允许创建一个持久性会话,即使在断开连接后也可以重新连接到该会话。这对于长时间运行的任务或需要与容器进行交互的任务非常有用。

  • 分屏和窗格管理Tmux允许将终端窗口分割为多个窗格,每个窗格可以显示不同的命令行界面,而无需打开多个终端。

  • 快捷键和自定义配置Tmux提供了丰富的快捷键和配置选项,也可以自定义会话的行为和外观,以提高工作效率。

Tmux的基本概念如下所示:

  • session:会话(任务)
  • window:窗口
  • pane:窗格

一个Tmux会话可以包含多个窗口window。每个窗口可以分割为多个窗格pane,每个窗格可以显示不同的终端界面。因此,session包含多个 window,而每个 window可以包含多个pane。通过合理组织和使用sessionwindowpane,可以更有效地管理和控制不同任务和终端会话,提高工作效率和多任务处理能力

可以通过

sudo apt install tmux

安装Tmux

3.1 session操作

  • 启动

    新建session,自动生成一个id0session

    tmux
    

    若希望显式地说明session的名字,可以使用以下指令,这个名字可以用于解绑后快速的重新进入该session

    tmux new -s your-session-name
    
  • 分离
    使用快捷键ctrl+b d,会将当前session与终端分离,session转到后台执行:

  • 杀死

    tmux kill-session -t your-session-name
    
  • 解绑
    假设现在正处于session1,使用ctrl+b d分离操作就是将session1进行解绑

  • 绑定

    tmux attach -t your-session-name
    
  • 切换

    tmux switch -t your-session-name
    
  • 重命名

    tmux rename-session -t old-session new-session
    

3.2 window操作

  • 新建

    tmux new-window -n your-window-name
    
  • 切换

    快捷键

    • ctrl+b c: 创建一个新窗口(状态栏会显示多个窗口的信息)
    • ctrl+b p: 切换到上一个窗口(按照状态栏的顺序)
    • ctrl+b n: 切换到下一个窗口
    • ctrl+b w: 从列表中选择窗口
  • 重命名

    tmux rename-window -t old_name new_name
    

3.3 pane操作

  • 划分

    # 划分为上下两个窗格
    tmux split-window# 划分左右两个窗格
    tmux split-window -h
    

    快捷键

    左右划分:ctrl+b %
    上下划分:ctrl+b "
    
  • 光标位置

    快捷键:ctrl+b arrow-key(方向键)

  • 窗格移动

    # 当前窗格往上移
    tmux swap-pane -U# 当前窗格往下移
    tmux swap-pane -D
    
  • 关闭窗格

    快捷键:ctrl+d

3.4 其他操作

  • 列出所有快捷键,及其对应的Tmux命令

    tmux list-keys
    
  • 列出所有Tmux命令及其参数

    tmux list-commands
    
  • 列出当前所有Tmux会话的信息

    tmux info
    
  • Tmux上下翻屏

    快捷键:ctrl+b [ ,就可以通过方向键上下移动实现上下翻页


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《机器人原理与技术》
  • 《机器学习强基计划》
  • 《计算机视觉教程》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/726566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习项目的流程:从数据到部署

目录 前言1 数据收集1.1 任务定义与数据需求明确1.2 数据采集与清洗 2 模型训练2.1 数据预处理2.2 选择适当的模型2.3 模型训练与调优2.4 模型评估 3 模型部署3.1 部署环境准备3.2 模型集成3.3 测试和优化 4 模型维护和更新4.1 模型性能监测4.2 数据漂移处理4.3 定期更新模型 结…

Unity 整体界面淡入淡出效果

在Unity中&#xff0c;如果我们要实现控制多个组件同时淡出&#xff0c;同时淡入的效果&#xff0c;可以使用DOTween插件实现。 如图&#xff0c;一个页面中带有背景&#xff0c;一张图片&#xff0c;一个文本&#xff0c;一个滑动条。 要实现以上界面的整体淡入淡出&#xff…

PolarDB for PostgreSQL-概述

阿里云数据库的概述 本篇罗列了一些知识点和结构。 日志 2. 同步复制&#xff1a;下降20% 异步复制&#xff1a;数据丢失风险&#xff0c; 部署 1.示例&#xff1a; vim polarx.toml 1.测试主库和备库数据一致性 备库是否一致性读 一个节点荡掉&#xff0c;提供服务。 GMS CN…

【DAY08 软考中级备考笔记】机组:计算机组成和数据转换

机组&#xff1a;计算机组成和数据转换 3月2日 – 天气&#xff1a;晴 1. 计算机的基本组成结构 计算机的硬件由运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入和输出设备组成其中&#xff0c;控制器和运算器成为CPU控制器又分为了内部存储器和外部存储器。内部…

应用监控 eBPF 版:实现 Golang 微服务的无侵入应用监控

作者&#xff1a;古琦 在现代软件架构中&#xff0c;微服务已成为构建可扩展和灵活应用程序的流行方式。每个微服务负责应用程序的一部分功能&#xff0c;它们共同工作以提供完整的服务。由于微服务架构的分散特性&#xff0c;监控变得至关重要&#xff0c;有效的微服务监控是…

AI预测福彩3D第4弹【2024年3月7日预测】

经过前面几次的预测&#xff0c;7码命中率已经有了明显提高&#xff0c;今天&#xff0c;继续咱们的预测。 老规矩&#xff0c;先给各位展示下百十个的神经网络蒙特卡洛统计频次图及部分号码的冷温热走势图。 最终&#xff0c;经过研判分析&#xff0c;2024年3月7日福彩3D的七…

sql 注入 之sqli-labs/less-5 双注入,也称:报错注入

该关卡返回正确或者错误页面,还有错误的代码&#xff0c;所以可以使用报错注入。报错注入的方式&#xff1a; updatexml 函数注入&#xff1a; mysql5.1.5 版本以上支持该函数&#xff0c;返回数据限制32位 模板&#xff1a;select * from user where id1 and (updatexml(&q…

一次一对一服务引起的沉思和笑话(微信号Stefan)

前情提要 客户需求&#xff1a; 分析页面代码和接口请求协议和参数需求&#xff0c;将人工下载视频怎么获得最终的视频链接&#xff0c;这一逻辑清晰的展示并讲解清除。我询问了是否需要成品爬虫&#xff0c;他说代码他自己能搞定。 我给的价格选择&#xff1a; 第一种、首…

超好用的golang工具分享

go-callvis-代码调用关系的可视化工具 go-callvis是一个代码调用关系的可视化工具&#xff0c;它可以帮助我们了解指定项目代码的结构&#xff0c;以达到更快的理解代码意图的目的。 工具使用简单&#xff0c;步骤如下&#xff1a; // 1. 安装 git clone https://github.com…

蓝桥杯练习系统(算法训练)ALGO-983 最大获利

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 Chakra是一位年轻有为的企业家&#xff0c;最近他在进军餐饮行业。他在各地开拓市场&#xff0c;共买下了N个饭店。在初期的…

python 爬虫爬取知乎LOL图片(亲测)

获取信息 访问url后按f12调试 点击network 定位图片信息&#xff1a; 可以看到&#xff0c;每个图片的名字和下载地址在标红处&#xff0c;示例如下&#xff1a; data-actualsrc“https://pic4.zhimg.com/v2-1681ff26afbd5f92aa5790b4dee6a63f_b.jpg” 现在就是requests访问…

Linux之线程概念

目录 一、细粒度划分 1、堆区细粒度划分 2、物理内存和可执行程序细粒度划分 3、虚拟地址到物理地址的转化 二、线程的概念 1、基本概念 2、线程的优点 3、线程的缺点 4、线程异常 5、线程用途 三、Linux下的进程和线程 一、细粒度划分 1、堆区细粒度划分 在语言…

MySQL 备份方案

优质博文&#xff1a;IT-BLOG-CN 一、为什么要备份 【1】容灾恢复&#xff1a;硬件故障、不经意的 Bug 导致数据损坏&#xff0c;或者服务器及其数据由于某些原因不可获取或无法使用等&#xff08;例如&#xff1a;机房大楼烧毁&#xff0c;恶意的黑客攻击或 Mysql 的 Bug 等&…

8、Linux驱动开发:驱动-读写接口实现(readwrite)

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…

Seata 2.x 系列【4】产品简介

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 3.1.0 本系列Seata 版本 2.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 发展历史3. 核心术语3.1 TC3.2 TM3.3 RM 4.…

国创证券|存钱有窍门,掌握这五个窍门利息高出不少?

大部分居民会把手中闲置的资金存入银行&#xff0c;享用安稳的收益&#xff0c;其间存在以下五个诀窍&#xff1a; 1、比照不同银行的利率 储户在去银行存钱时&#xff0c;能够比照不同银行的利率&#xff0c;尽量地挑选利率较高的银行存&#xff0c;来获取较多的收益&#x…

URL?后参数有特殊字符问题

前端对于URL的参数不做处理 不处理、用URLDecoder.decode()处理、用URLEncoder.encode()处理、用URLEncoder.encode()处理后再用URLDecoder.decode()处理 结果 前端对于URL的参数用encodeURIComponent(‘XF-OPPZZD-26*316’)处理 结果 前端不处理有&字符时 结果会把后…

BUUCTF---[极客大挑战 2019]BabySQL1

1.这道题和之前做的几道题是相似的&#xff0c;这道题考的知识点更多。难度也比之前的大一些 2.尝试万能密码 or 1#发现过滤了or,使用1和1,发现他对单引号也进行了过滤。于是我尝试进行双写绕过&#xff0c;发现可以通过了。 3.由之前的做题经验可知&#xff0c;这道题会涉及到…

每日汇评:黄金上破2161美元纪录高位,有可能进一步上涨?

周四早间&#xff0c;金价在2150美元的历史高点附近盘整&#xff0c;并成功上破2160历史高位&#xff1b; 美元在美债收益率的压力下逐步走低&#xff0c;市场期待更多鲍威尔讲话和美国就业数据&#xff1b; 日线图上的RSI指标超买状况继续令黄金买家保持谨慎&#xff1b; 金价…

如何在手机上中恢复已删除的照片

市场上有大量用于恢复手机已删除照片的应用程序。您可以尝试任何合法的应用程序来恢复意外删除的视频。其中一些应用程序包括 奇客数据恢复、Disk Drill等。 恢复已删除的 Android 照片 如果您不小心从 Android 设备中删除了任何重要视频&#xff0c;无需惊慌。您可以按照这些…