目录
- 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 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
即可操控乌龟运动
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
的session
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从入门到精通》
- 《机器人原理与技术》
- 《机器学习强基计划》
- 《计算机视觉教程》
- …