自学内容网 自学内容网

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

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 [ ,就可以通过方向键上下移动实现上下翻页


🔥 更多精彩专栏


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

原文地址:https://blog.csdn.net/FRIGIDWINTER/article/details/135619747

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!