ROS文件系统介绍

预备工作

本教程中我们将会用到ros-tutorials程序包,请先安装:

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

快速了解文件系统概念

Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。

Manifest (package.xml): 清单,是对于’软件包’相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。

文件系统工具

程序代码是分布在众多ROS软件包当中,当使用命令行工具(比如 ls 和 cd )来浏览时会非常繁琐,因此 ROS 提供了专门的命令工具来简化这些操作。

使用 rospack

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

用法:

rospack find [包名称]

示例:

rospack find roscpp

应输出:

YOUR_INSTALL_PATH/share/roscpp/*  如果你是在Ubuntu Linux操作系统上
通过apt来安装ROS,你应该会准确地看到:
/opt/ros/groovy/share/roscpp  */

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

用法:

roscd [本地包名称[/子目录]]

示例:

roscd roscpp

为了验证我们已经切换到了 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/kinetic/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 [本地包名称[/子目录]]

示例:

rosls roscpp_tutorials应输出:
cmake  package.xml  srv

Tab 自动补全

当要输入一个完整的软件包名称时会变得比较繁琐。在之前的例子中 roscpp tutorials 是个相当长的名称,幸运的是,一些 ROS 工具支持 TAB 补全 的功能。

输入:

roscd roscpp_tut<<< 现在请按TAB键 >>>当按TAB键后,命令行中应该会自动补充剩余部分: 
roscd roscpp_tutorials/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接软件开发项目,你需要知道这些!

作为一个程序员&#xff0c;跟客户交流是最困难的事情了&#xff0c;所以在上路之前&#xff0c;复习一下这两年遇到的奇怪的客户言论&#xff0c;以便以后更好地跟客户交流。1、不就是做个网站&#xff08;或者别的&#xff09;么&#xff1f;为什么这么贵&#xff1f;一定耐心…

整理的一些比较基础的面试知识点

1、面向对象的三大特性或其具体体现在哪 2、页面间传值方式 3、session cookie原理及区别 4、hasstable&#xff0c;dictionary&#xff0c;List &#xff0c;collection 5、类和抽象类&#xff0c;类和接口&#xff0c;接口和抽象类区别及适合场景 6、Get和Post比较优缺点或区…

五种类型的程序员,你属于哪一种?

在我的编程生涯中,我碰到过很多奇奇怪怪的对手和同盟。我把这些编码战士们分成五类&#xff0c;有些人是你队伍中的好伙伴&#xff0c;有些人则是捣蛋者&#xff0c;让你的每一个计划都完不成。不管怎么说&#xff0c;他们在软件开发的诸神殿上都占有一席之地。如果你的团队中没…

创建ROS程序包

一个catkin程序包由什么组成? 一个程序包要想称为catkin程序包必须符合以下要求&#xff1a; 该程序包必须包含catkin compliant package.xml文件这个package.xml文件提供有关程序包的元信息。 程序包必须包含一个catkin 版本的CMakeLists.txt文件&#xff0c;而Catkin meta…

一些有用的js插件

getfuelux.com 一系列插件合集 Ion.RangeSlider 超级牛的范围选择控件 Ion.CheckRadio Ion.Tabs Ion.Calendar Ion.ImageSlider Ion.Zoom www.ngwidgets.com Advanced UI Widgets for AngularJS http://www.jq22.com/ jQuery 插件库 http://jvectormap.com/ 地图插件 X-…

C# FTP操作类库

class FTP_Class{string ftpServerIP;string ftpUserID;string ftpPassword;FtpWebRequest reqFTP; #region 连接/// <summary>/// 连接FtpWebRequest/// </summary>/// <param name"path"></param>private void Connect(String path)/…

安装并配置ROS环境

参考该网址内容&#xff1a;http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment

Cropper – 简单的 jQuery 图片裁剪插件

Cropper 是一个简单的 jQuery 图像裁剪插件。它支持选项&#xff0c;方法&#xff0c;事件&#xff0c;触摸&#xff08;移动&#xff09;&#xff0c;缩放&#xff0c;旋转。输出的裁剪数据基于原始图像大小&#xff0c;这样你就可以用它们来直接裁剪图像。 如果你尝试裁剪跨域…

C# JSON格式数据用法

JSON简介JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式&#xff0c;可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单&#xff0c;易于人阅读和编写&#xff0c;同…

Ros命令及功能

运行小乌龟代码&#xff1a; roscore rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key一些命令及作用 ros 加tap //查看电脑中以ros开头的命令 rqt_graph //将系统内的主要资源以可视化的形式展现出来 rosnode list //列出系统节点 命令 --help //查看命…

数据库——环境初建改端口和密码(转)

一、修改APACHE的监听端口 2、在界面中选apache&#xff0c;弹出隐藏菜单选项&#xff0c;打开配置文件httpd.conf; 2、找到Listen 80 和 ServerName localhost:80; 3、将80改成801&#xff08;当然自己也可以设定别的不使用的端口&#xff0c;例如8000等&#xff09;; 4、保存…

文件系统认知

什么是文件系统 常规认知是&#xff1a;linux根目录那些东西 百科&#xff1a;文件系统是操作系统用于明确存储设备组织文件的方法&#xff0c;操作系统中负责管理和存储文件信息的软件机构称为文件管理系统&#xff0c;简称文件系统。 以上说的方法&#xff1a;就是文件管理…

何谓悲观锁与乐观锁

乐观锁对应于生活中乐观的人总是想着事情往好的方向发展&#xff0c;悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点&#xff0c;不能不以场景而定说一种人好于另外一种人。 悲观锁 总是假设最坏的情况&#xff0c;每次去拿数据的时候都认为别人会…

寒哥细谈之AutoLayout全解

看到群中好多朋友还停留在Frame布局的痛苦时代&#xff0c;以及有些开发者接手别人的就项目发现布局一团乱。而且没有启动图的时候并不是真正真正适配iPhone 6(S)、iPhone6(S) Plus等设备 。寒哥准备尽可能详细的讲一讲我所掌握的AutoLayout 。AutoLayout很难&#xff1f;我觉得…

最难学的5种编程语言排行

每个程序员都熟悉许多编程语言。许多编程语言都是高级的&#xff0c;它们的语法是人类可读的。然而&#xff0c;也有一些低级语言&#xff0c;对于一个人来说&#xff0c;读起来很困难&#xff0c;但是可以理解。然而&#xff0c;您是否遇到过一种既不可读又不可理解的编程语言…

[小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象

从这一篇开始&#xff0c;开始正式的介绍Selenium 以及相关的组件&#xff0c;本文的将讨论如下问题&#xff1a; Selenium基本的概念以及在企业化测试框架中的位置Selenium核心对象&#xff08;浏览器驱动&#xff09; Web DriverSelenium核心对象&#xff08;Dom元素&#xf…

Java中HashMap的entrySet()你会用了吗

Map中存放的元素均为键值对&#xff0c;故每一个键值对必然存在一个映射关系。 Map中采用Entry内部类来表示一个映射项&#xff0c;映射项包含Key和Value Map.Entry里面包含getKey()和getValue()方法 Set<Entry<T,V>> entrySet() 该方法返回值就是这个map中各个键…

JS获取请求URL相关参数

今天在找获取当前网址除去参数的js方式&#xff0c;结果自己会的竟然只有window.location.href 先看一个示例 用javascript获取url网址信息 <script type"text/javascript"> document.write("location.host"location.host"<br>"); d…

wiki语法大全

Wiki语法大全 编辑一个维客页面十分容易。只要点击页面上方的“编辑本页”或右侧的[编辑]链接即可修改该页&#xff0c;或点击“讨论本页”然后再点击“编辑页面”来讨论该页面。点击后您就会看到一个包含那个Wiki页面的可编辑的文字区域。 先将文字复制到您最喜欢的文字编辑器…

驱动认知

用户态 App&#xff1a;cp指令&#xff0c;ftp的项目等等这就是App的开发。 App开发需要C的基础和C库&#xff0c;C库讲到文件&#xff0c;进程&#xff0c;进程间通信&#xff0c;线程&#xff0c;网络&#xff0c;界面&#xff08;GTk&#xff09;。 C库&#xff08;是linux标…