ROS学习(三)ROS文件系统导览


前言

  这篇文章将学习ROS文件系统的概念,包括如何使用roscd、rosls和rospack命令行工具,是Tutorials中的第一章节第一小节第二点Navigating the ROS Filesystem(ROS文件系统导览)


1、Prerequisites(预备工作)

在学习过程中会用到ros-tutorials工具包,这个工具包如果在安装ROS时选择的是完整桌面版是不用另外安装的。但如果之前安装的ROS不是完整桌面版,需使用下列命令安装:

sudo apt-get install ros-<distro>-ros-tutorials

这里面的<distro>需要替换为安装的ROS发行版名称,如noetic版本:

sudo apt-get install ros-noetic-ros-tutorials

2、Quick Overview of Filesystem Concepts(文件系统概念简介)

  • Packages(软件包):包是ROS代码的软件组织单元,每个软件包都可以包含程序库、可执行文件、脚本或其他构件。
  • Manifests (package.xml):清单(Manifest)是对软件包的描述。它用于定义软件包之间的依赖关系,并记录有关软件包的元信息,如版本、维护者、许可证等。

Note: rosbuild users might be wondering where stacks went. The concept of stacks was removed with catkin to simplify the growing code base and to support better distribution of packages. In catkin you can define metapackages to collect similar packages and multiple packages can reside in a single VCS repository. Those two features replace the functionality of stacks.

在catkin中移除了stack的概念,通过元功能包和VCS库来代替stack的作用,这样可以简化代码量并且对不同的ROS发行版的兼容性更好。


3、Filesystem Tools(文件系统工具)

ROS开发中会用到不同的ROS包,相关的程序代码散落在许多ROS包中。使用Linux内置命令行工具(如lscd)来进行查找和导航这些文件可能非常繁琐,因此ROS提供了专门的命令工具来简化这些操作。

3.1 Using rospack

rospack可以获取软件包的有关信息。find参数选项可以返回软件包的所在路径。
用法:

rospack find [package_name]

如:

rospack find roscpp
rospack find rospy

效果如下:
在这里插入图片描述

3.2 Using roscd

roscd可以直接切换目录(cd)到某个软件包或者软件包集当中。

用法:

roscd [locationname[/subdir]]

如:

roscd roscpp

效果如下:
在这里插入图片描述

3.2.1 Subdirectories(子目录)

roscd也可以切换到一个软件包或软件包集的子目录中。
执行:

roscd roscpp/cmake
pwd

效果如下:

在这里插入图片描述

3.2.2 roscd log

log是存储ROS日志文件的目录。需要注意的是,如果没有执行过任何ROS程序,系统会报错说该目录不存在。
执行:

roscd log

效果如下:
在这里插入图片描述
可以看到,当没有活动的roscore时,执行roscd log首先会显示No active roscore。进入到log目录中,该目录下存储着执行ros程序的日志文件。

3.3 Using rosls

rosls可以直接按软件包的名称执行 ls 命令,而不必输入绝对路径或者进到给定目录。
用法:

rosls [locationname[/subdir]]

如:

rosls roscpp_tutorials

效果如下:
在这里插入图片描述

3.4 Tab Completion(Tab补全)

Tab补全跟Ubuntu通常的补全机制是一样的。当输入字符后,按两次Tab,terminal会列出一输入字符打头的所有可用命令,如果匹配的命令只有一个时,按一次Tab就自动将该命令补齐。
输入:

roscd roscpp_tut<<<按TAB键>>>

当按TAB键后,命令行会自动补充剩余部分:

roscd roscpp_tutorials/

这是因为roscpp_tutorials是目前唯一一个名称以roscpp_tut开头的ROS软件包。

现在试着输入:

roscd tur<<<按TAB键>>>

当按TAB键后,命令会尽可能地自动补充完整:

roscd turtle

然而,在这种情况下有许多软件包都以turtle开头。当再次按TAB键后会列出所有以turtle开头的ROS软件包:

turtle_actionlib/  turtlesim/         turtle_tf/         turtle_tf2/

这时在命令行中只输入了:

roscd turtle

现在在turtle后面输入s然后按TAB键:

roscd turtles<<<按TAB键>>>

因为只有一个软件包的名称以turtles开头,所以会看到:

roscd turtlesim/

如果要查看当前安装的所有软件包的列表,也可以利用TAB补全:

rosls <<<双击TAB键>>>

Finished!😃

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值