>
Home

登龙(DLonng)

选择大于努力

ROS 初级 - 文件系统工具


版权声明:本文为 DLonng 原创文章,可以随意转载,但必须在明确位置注明出处!

1、准备

这篇文章介绍 ROS 文件系统相关工具的使用,需要提前安装个 pkg:

sudo apt-get install ros-kinetic-ros-tutorials

2、ROS 文件系统基本概念

  • Package:ros pkg 是 ros 中代码的基本组织结构,每个包中都包含库文件,可执行文件,脚本和其他文件。
  • Manifests(package.xml):这个文件定义了 ros 包的基本属性,包括 pkg 的依赖关系,维护者,版本,license 等信息。

3、文件系统工具

ros 提供了 roscd,rosls 等命令来代替 shell 中的 cd,ls 等,可以非常方便我们在 ros 环境中使用,下面分别来学习常用的基础 ros 工具。

3.1 rospack

rospack 可以得到一个包的信息,比如用 find 来得到一个包的路径:

rospack find [pkg name]

例如:

rospack find roscpp

返回这个包的路径:

/opt/ros/kinetic/share/roscpp

3.2 roscd

使用 roscd 可以直接进入一个 pkg 中,不用像使用 cd 那样用绝对路径:

roscd [pkgname[/subdir]]

比如进入 roscpp 包的路径:

roscd roscpp

用 linux 命令打印当前的路径看看:

pwd

输出:

/opt/ros/kinetic/base/install/share/roscpp

这里要注意一点:roscd 只会在 ROS_PACKAGE_PATH 环境变量指定的路径中查找 ros 包,并进入这个包中,所以在使用 roscd 来进入一个 pkg 前,一定要保证 pkg 包的路径在 ROS_PACKAGE_PATH 中。

使用下面的命令来查看你当前的 pkg path:

echo $ROS_PACKAGE_PATH

另外,roscd 也支持进入一个 pkg 的子目录:

roscd roscpp/cmake

你可以再使用 pwd 来输出当前路径。

3.3 rosls

使用 rosls 来直接列出一个 ros pkg 的目录,也不用使用绝对路径,只需要一个 pkg name 即可:

rosls [pkgname[/subdir]]

例如:

rosls roscpp_tutorials

输出该 pkg 的目录:

cmake launch package.xml  srv

3.4 Tab 补全

ROS 的命令也都支持 Tab 补全,如果对 shell 比较熟悉的同学应该都知道,不用完全手动输入一个 pkg 的全名,输入一些关键字符,然后按 Tab 键即可出现候选项了:

roscd tur <<< Push Tab key
roscd turtle

本文原创首发于同名微信公号「登龙」,关注我就是你今年做的最成功的一件事

DLonng at 11/18/19