目录
- 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 A的X Server,此时host A是服务侧,因此需要在host A上开启其他host的访问权限。接着,Docker通过映射将对X Server的请求透传到主机端DISPALY,DISPLAY对应主机端的显示接口,完成显示。关于xhost有如下的常用命令
xhost +:使所有用户都能访问X Serverxhost + ip:使ip上的用户能够访问X Serverxhost + nis:user@domain:使domain上的nis用户能够访问X Serverxhost + 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
即可操控乌龟运动

Rviz和Gazebo也是同样的显示方法

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

Tmux具有以下优势:
-
会话持久性:
Tmux允许创建一个持久性会话,即使在断开连接后也可以重新连接到该会话。这对于长时间运行的任务或需要与容器进行交互的任务非常有用。 -
分屏和窗格管理:
Tmux允许将终端窗口分割为多个窗格,每个窗格可以显示不同的命令行界面,而无需打开多个终端。 -
快捷键和自定义配置:
Tmux提供了丰富的快捷键和配置选项,也可以自定义会话的行为和外观,以提高工作效率。
Tmux的基本概念如下所示:
session:会话(任务)window:窗口pane:窗格
一个Tmux会话可以包含多个窗口window。每个窗口可以分割为多个窗格pane,每个窗格可以显示不同的终端界面。因此,session包含多个 window,而每个 window可以包含多个pane。通过合理组织和使用session、window和pane,可以更有效地管理和控制不同任务和终端会话,提高工作效率和多任务处理能力
可以通过
sudo apt install tmux
安装Tmux
3.1 session操作
-
启动
新建
session,自动生成一个id为0的sessiontmux若希望显式地说明
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从入门到精通》
- 《机器人原理与技术》
- 《机器学习强基计划》
- 《计算机视觉教程》
- …