简单的linux命令
因为我们使用ros2是在终端运行,因此学会使用Linux命令是必不可少的。可以在虚拟机里按下Ctrl+alt+t 打开一个终端,就可以输入命令来对终端进行操作了
输入 pwd 按下回车,此时就会输出一条路径,这条路径就是当前终端所有的操作都是在这个路径位置进行的。
输入ls,就会显示当前文件夹下又有哪些文件,后面可以跟上一个 “-A” 即可文件夹中显示隐藏文件。

输入mkdir 文件夹名 可以在当前位置创建一个命名文件夹,也可以是这样:madir -p text/6/666 在指定路径下创建文件夹。
输入cd 文件夹名/ (也可以不加斜杠)即可进入当前位置下的该名称文件夹,比如刚刚新命名的文件夹创建以后,就可以这样使用,在输入文件名时如果忘记了文件的完整名字,都可以使用TAB键进行补全;
另外 cd ~ 可以回到初始位置,cd.. 可以回退到上一级目录。
输入touch 文件名.文件类型 该命令可以新建一个指定名称和类型的文件,这时打开这个位置的文件夹,你会发现这个666.txt文件确实创建成功了。

要是想要删除这个文件,可以输入 rm 文件名 来删除文件。
但是如果你想删掉的是文件夹这样直接写(rm 666/)当然是不行的,还需要加上参数-R (大小写均可) 如:rm -r 666 这样就可以把文件夹删掉。
rm 的作用是删掉文件,-r 的含义是“递归式的”,所以二者组合会递归式的删除掉该文件夹的文件夹里的全部内容,最后删除这个目录本身。
注:要是删除文件时依旧加上了“-r”参数,是不会报错的,也会直接删掉文件。
在平常下载一些包时,还会用到 sudo apt install 包名 “sudo”表示提升当前用户权限,和“以管理员身份运行”差不多意思,“apt” 是用于软件包管理的工具,“install”是apt的子命令,完成从下载源的下载和安装。也是可以使用TAB键自动补全的。
具体的Linux命令基本就介绍这些。
详细完整的Linux命令可以去看:
非常好用。
ros2中的命令行
之所以要了解Linux的命令行,核心原因是ROS2 的开发、运行和调试全程依赖 Linux 环境,这些基础命令是操作 ROS2 的 “必经之路”,就像学开车前要先认识方向盘、刹车一样,是最基础的操作能力。
ros2的命令机制与Linux相同,所有的命令都是集成在叫“ros2”的总命令下的,之后跟的第一个参数表示不同的操作目的如“ros2 node”表示对节点进行操作,而“ros2 topic”表示对话题进行的操作,具体还可以附加一系列的参数内容,接下来我们先用小海龟的仿真来了解一下ros2的具体功能。
小海龟仿真
打开终端,输入以下命令:
ros2 run turtlesim turtlesim_node
ros2 run <包名> <节点名>
run是在ros2包中的“运行包内命令”的子命令,turtlesim 是功能包,turtlesim_node 就是你要运行的节点,turtlesim_node是一个不错的核心概念试验场。
按下回车后,就会弹出一个小海龟的仿真窗口:

打开第二个终端输入:
ros2 run turtlesim turtle_teleop_key
turtle_teleop_key此功能节点可以读取到用户的键盘输入,使我们可以通过键盘上的↑→←↓来控制小海龟。
键盘都按坏了海龟依旧不为所动?
!!!注意,要想使用turtle_teleop_key功能节点,必须保持鼠标光标在他的终端窗口上,否则是无法识别到键盘的输入的。

即:此时应点击黑色窗口,确保光标在其上,才可以正常使用。
节点
node节点
打开终端输入 ros2 node 来查看节点的相关的信息,如果不知道node后加那些参数,可以直接回车:

会自动提供后面可以跟的参数
两个参数,info和list
list,终端直接输入ros2 node list 回车,会把正在运行的节点名称显示,如果没有运行的节点则什么也不会返回
info,输入ros2 node info 可以来查看某个终端的信息:

从上到下依次是:
正在订阅的数据、正在发布的数据、正在提供的服务,以及动作,这些暂时知道便可。
topic节点
我们如何才能看到海龟仿真器的一些基本数据呢?这些数据大部分都是以话题的形式发布的,打开终端输入:ros2 topic 回车,就可以看到支持的参数了,

commands这行,
例如 bw是带宽,echo是查看某个话题的数据等等。
如果此时我想知道现在有哪些话题正在发布和订阅,就可以在终端输入:
ros2 topic list ,就会列出系统中所有正在被创建或者使用的话题名。

可以看到此时屏幕上显示了一些话题名,先做一个简单的介绍,后面要使用到再细致研究。
其实很多的话题名字都可以根据他的后缀可以猜到,比如 /turtle1/pose 因为 pose 的存在,我们可以联系到“姿态姿势”,正确,/turtle1/pose 所代表的就是小乌龟的试试位置和方向信息。
/turtle1/color_sensor 背景颜色 其实就是小乌龟虚拟颜色传感器话题,发布脚底位置的 RGB 颜色值
/rosout,是ROS 2 系统日志话题
/turtle1/cmd_vel,是控制小乌龟移动(发布速度指令)
/parameter_events,是发布参数变更事件,这个就像一个公示牌,订阅了话题的可以同步看到哪个参数改变了。
生成一个新的海龟
一个海龟显得有点单调?
可以输入以下命令:
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2,y: 2,theta: 0.2,name: ''}"
一定注意空格!大括号里的是单引号,里面可以写新乌龟的名字,空的话按默认名来。
输入 ros2 topic list 回车
我们发现在原有的话题上多了turtle2

这就是新产生的乌龟了。
要想控制新的乌龟,就得输入:
ros2 run turtlesim turtle_teleop_key --ros-args --remap /turtle1/cmd_vel:=/turtle2/cmd_vel
在原有ros2 run turtlesim turtle_teleop_key 的基础上进行了参数设置,--ros-args 是ros2参数设置的前缀,--remap /turtle1/cmd_vel:=/turtle2/cmd_vel 是把原本要发布到/turtle1/cmd_vel命令映射到了/turtle2/cmd_vel,从而实现了对第二个小海龟的控制。

小工具
ros2里还有一些小工具,可以把当前的运行的数据开保存下来,便于脱机之后的数据复现,
可以用 ros2 bag 来做录制。

,回车,比如record就是用来录制ros一些数据,play是复现一些数据
试试吧,输入 ros2 bag record /turtle1/cmd_vel ,就是录下海龟1的控制的速度指令,回车之后,此时就会开始录制海龟1的运动底层数据Ctrl+c 停止后,录下来的文件会保存在当前终端地址的目录下。

就是这个rosbag文件夹里

复制当前文件夹路径以后,我们可以在终端里用 ros2 bag play “路径” 的形式再来复现出这份数据,此时不动键盘,小海龟也会动。
感谢观看,如有不对,欢迎大家斧正。
2万+

被折叠的 条评论
为什么被折叠?



