描述:这篇文章主要介绍ROS文件系统的概念,包括roscd,rosls和rospack等命令工具的用法;
1.1 ROS文件系统中的相关概念
功能包(Packages):功能包是ROS中比较基础的软件组织方式,每个功能包可包含依赖库,可执行文件,脚本文件及其它的相关文件;
Manifest(package.xml):Manifest是功能包的描述文件,它主要定义功能包与其他功能包之间的依赖关系,并提供关于功能包的版本信息,维护者信息和许可信息等。
1.2 文件系统工具集
由于ROS代码分布在许多功能包中,如果采用ls和cd等命令将会非常繁琐,因此ROS提供一些自定义的工具集辅助操作;
1.2.1 rospack使用介绍
rospack用于获取功能包的相关信息,在这篇文章中,我们只涉及其中的find参数,它返回功能包的路径信息;
用法:
# rospack find [package_name]
示例:
执行结果如下:
YOUR_INSTALL_PATH/share/roscpp
如果你的ROS是从apt安装到Ubuntu系统中的,将会显示如下结果:
/opt/ros/groovy/share/roscpp
1.2.2 roscd使用介绍
roscd 是rosbash套件中的一部分,利用它可以改变路径到指定的功能包或功能包集中;
用法:
# roscd [locationname[/subdir]]
示例:
为了验证是否改变到roscpp功能包的路径下,可采用Uinx的命令pwd打印出当前的路径信息;
得到如下执行结果:
YOUR_INSTALL_PATH/share/roscpp
这个路径和上一个示例中rospack find roscpp查找出的路径是一致的;
注意,roscd和其他ROS命令工具一样,只会查找ROS_PACKAGE_PATH变量中包含的packages,通过下面的命令可以查看ROS_PACKAGE_PATH包含的信息:
ROS_PACKAGE_PATH变量包含一系列被冒号“:”隔开的路径,通常情况下,ROS_PACKAGE_PATH变量值如下所示:
/opt/ros/groovy/base/install/share:/opt/ros/groovy/base/install/stacks
与其他环境变量的用法一致,可以添加路径到ROS_PACKAGE_PATH中,路径间必须用冒号隔开;
子目录
roscd也可以改变到一个功能包或者功能包集的子目录中;
试用如下命令:
执行结果如下所示:
YOUR_INSTALL_PATH/share/roscpp/cmake
1.2.3 roscd log
roscd log 将会把你引导到ROS日志所在的目录下;需要注意的是,如果你没有运行任何ROS程序,它将显示日志目录不存在的错误信息;
如果你已经运行过ROS程序,可以尝试如下命令:
1.2.4 rosls使用介绍
rosls是rosbash套件的一部分,它可以通过功能包的名称列出其下面包含的文件,而不必使用绝对路径;
用法:
# rosls [locationname[/subdir]]
示例:
执行结果如下:
cmake package.xml srv
1.2.5 使用Tab键
有时拼写出整个功能包的名称会比较繁琐,在上一个示例中, roscpp_tutorials是一个相当长的名称,幸运的是大部分ROS的命令工具支持TAB键操作;
按照如下所示操作:
# roscd roscpp_tut<<< 此处按下TAB键 >>>
按下TAB键后,命令行会自动填充完余下的字符,如下所示:
$ roscd roscpp_tutorials/
1.2.6 ROS命令工具的风格
经过上面的一些示例可以总结出关于ROS命令的命名风格:
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
在ROS系统中,大部分的命令工具均采用这样的命名方式;
注:欢迎你转载本篇文章,时飞提醒你转载时请注明出处!