求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
ROS教程
1.初级教程
1.1 安装和配置ROS环境
1.2 ROS文件系统导览
1.3 创建ROS软件包
1.4 构建ROS软件包
1.5 理解ROS节点
1.6 理解ROS话题
1.7 理解ROS服务和参数
1.8 使用rqt_console和roslaunch
1.9 使用rosed在ROS中编辑文件
1.10 创建ROS消息和服务
1.11 编写简单的发布者和订阅者(C++)
1.12 编写简单的发布者和订阅者(Python)
1.13 检验简单的发布者和订阅者
1.14 编写简单的服务和客户端(C++)
1.15 编写简单的服务和客户端(Python)
1.16 检验简单的服务和客户端
1.17 录制和回放数据
1.18 从bag文件中读取消息
1.19 roswtf入门
1.20 探索ROS维基
1.21 接下来做什么?
2.中级教程
2.1手动创建ROS包
2.2管理系统依赖项
2.3Roslaunch在大型项目中的使用技巧
2.4ROS在多机器人上的使用
2.5自定义消息
2.6在python中使用C++类
2.7如何编写教程
ROS标准
ROS开发者指南
标准计量单位和坐标约定
 
 
ROS文件系统导览
来源: ros.org 在线教程    编辑:Alice(火龙果软件)
605 次浏览
4次  
Description: 本教程介绍ROS文件系统的概念,包括如何使用roscd、rosls和 rospack 命令行工具。

Tutorial Level: BEGINNER

Next Tutorial: 创建ROS软件包

预备工作

本教程中我们将会用到 ros-tutorials 程序包。如果你之前安装的ROS不是完整桌面版(Desktop-Full),请先:

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

将 <distro> 替换成你安装的ROS发行版简称(比如kinetic或noetic等)。

文件系统概念简介

  • 软件包(Packages): 包是ROS代码的软件组织单元,每个软件包都可以包含程序库、可执行文件、脚本或其他构件。

  • Manifests ( package.xml ): 清单(Manifest)是对软件包的描述。它用于定义软件包之间的依赖关系,并记录有关软件包的元信息,如版本、维护者、许可证等。

Show note about stacks

文件系统工具

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

使用rospack

rospack 允许你获取软件包的有关信息。在本教程中,我们只涉及到 find 参数选项,该选项可以返回软件包的所在路径。

用法:

$ rospack find [package_name]

比如:

$ rospack find roscpp

将会输出:

  • YOUR_INSTALL_PATH/share/roscpp

如果你是在Ubuntu操作系统上通过 apt 安装的ROS,你看到的应该是:

  • /opt/ros/<distro>/share/roscpp

使用roscd

roscd rosbash 命令集的一部分,它允许你直接切换目录( cd )到某个软件包或者软件包集当中。

用法:

$ roscd [locationname[/subdir]]

要想验证是否能切换到roscpp包的位置,请运行以下示例:

$ roscd roscpp

现在让我们使用Unix命令 pwd 输出工作目录:

$ pwd

你应该会看到:

  • YOUR_INSTALL_PATH/share/roscpp

你可以看到 YOUR_INSTALL_PATH/share/roscpp 和之前使用 rospack find 输出的路径是一样的。

注意,就像ROS中的其它工具一样, roscd 只能切换到那些路径已经包含在 ROS_PACKAGE_PATH 环境变量中的软件包。要查看 ROS_PACKAGE_PATH 中包含的路径,可以输入:

$ echo $ROS_PACKAGE_PATH

你的 ROS_PACKAGE_PATH 环境变量应该包含那些保存有ROS软件包的路径,并且每个路径之间用冒号(:)分隔开来。一个典型的 ROS_PACKAGE_PATH 环境变量如下:

  • /opt/ros/<distro>/base/install/share

跟其他环境变量路径类似,你可以在 ROS_PACKAGE_PATH 中添加更多的目录,每条路径使用冒号(:)分隔。

子目录

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

执行:

$ roscd roscpp/cmake $ pwd

应该会看到:

  • YOUR_INSTALL_PATH/share/roscpp/cmake

roscd log

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

如果你已经运行过ROS程序,那么可以尝试:

$ roscd log

使用 rosls

rosls rosbash 命令集的一部分,它允许你直接按软件包的名称执行 ls 命令(而不必输入绝对路径)。

用法:

$ rosls [locationname[/subdir]]

示例:

$ rosls roscpp_tutorials

应输出:

  • cmake launch package.xml srv

Tab补全

总是输入完整的软件包名称感觉比较繁琐。在之前的例子中, roscpp tutorials 是个相当长的名称。幸运的是,一些ROS工具支持 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/

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

$ roscd turtle

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

$ roscd turtles<<<按TAB键>>>

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

$ roscd turtlesim/

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

$ rosls <<<双击TAB键>>>

复习

你也许已经注意到了ROS命令工具的的命名方式:

  • rospack = ros + pack(age)
  • roscd = ros + cd
  • rosls = ros + ls

这种命名模式在许多ROS命令工具中都会用到。

到此你已经了解了ROS的文件系统结构,接下来开始 创建ROS软件包 吧。

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



605 次浏览
4次