本教程介绍了ROS文件系统的概念,并介绍了roscd,rosls,rospack命令行工具的使用。至于为什么选择deepin而不是ROS通用的ubuntu,也仅仅是为了支持国产系统。鉴于本人水平有限,如哪位攻城狮网友发现本文存在的问题,烦请留言指正,谢谢!
前提
对于本教程,需要首先确定您安装了ros-tutorials包
sudo apt-get install ros-noetic-ros-tutorials
ROS文件系统概述
- Packages:包是ROS代码的软件组织单元,每个包可以包含库,可执行文件,脚本,以及其他文件。
- Manifests(package.xml):manifest是对包的描述文件,用于定义包之间的相互依赖关系,并捕获关于包的版本,维护人员,许可证等元信息。
文件系统工具
代码分散在许多ROS包中,使用诸如ls,cd等命令行工具会非常乏味,不过ROS为我们提供了对应的工具。
rospack
rospack可用于获取ros包信息。在rospack的教程中我们只讨论用于获取包路径的find选项
rospack find [package_name]
rospack find roscpp
/opt/ros/noetic/share/roscpp
roscd
roscd是rosbash的一部分。它允许您直接将目录修改为一个包或堆栈所在目录
roscd <package-or-stack>[/subdir]
gaoy@msi:~/ros_ws$ pwd
/home/gaoy/ros_ws
gaoy@msi:~/ros_ws$ roscd roscpp
gaoy@msi:/opt/ros/noetic/share/roscpp$ pwd
/opt/ros/noetic/share/roscpp
可以清楚发现roscd roscpp所切换到的目录与rospack roscpp所输出的目录一致。
注意: roscd与其他ROS工具一样,只会找到ROS_PACKAGE_PATH中列出的ROS包。
您的ROS_PACKAGE_PATH应该至少包含一个目录列表,ROS_PACKAGE_PATH中不同的路径使用 : 隔开.典型的ROS_PACKAGE_PATH可能是:
ROS_PACKAGE_PATH=/opt/ros/noetic/share
子目录
roscd也可以切换到包或堆栈的子目录
gaoy@msi:~$ pwd
/home/gaoy
gaoy@msi:~$ roscd roscpp/cmake/
gaoy@msi:/opt/ros/noetic/share/roscpp/cmake$ pwd
/opt/ros/noetic/share/roscpp/cmake
roscd log
roscd log 将把您带到ros存储日志文件的目录。如果您还没运行任何ROS程序,这可能会产生一个错误,表示对应的目录不存在
gaoy@msi:~$ pwd
/home/gaoy
gaoy@msi:~$
gaoy@msi:~$ roscd roscpp
gaoy@msi:/opt/ros/noetic/share/roscpp$
gaoy@msi:/opt/ros/noetic/share/roscpp$ pwd
/opt/ros/noetic/share/roscpp
gaoy@msi:/opt/ros/noetic/share/roscpp$ roscd log/
gaoy@msi:~/.ros/log/d60df460-279c-11ed-88ab-f8b54d546b81$ pwd
/home/gaoy/.ros/log/d60df460-279c-11ed-88ab-f8b54d546b81
rosls
rosls是rosbash的一部分,它允许您通过包名而不是绝对路径直接在包中执行ls命令
gaoy@msi:~$ rosls roscpp
cmake msg package.xml rosbuild srv
gaoy@msi:~$ roscd roscpp;ls
cmake msg package.xml rosbuild srv
tab命令补全
在您使用roscd,rosls等命令时可使用tab来补全对应的包名
ros命令工具扩展
您应该注意到了ros工具的命名模式:
- rospcak:ros + pack(age)
- roscd:ros + cd
- rosls:ros + ls
对应ros工具有:
gaoy@msi:/opt/ros/noetic/share/roscpp$ ros
rosmv
roscat
roscd
rosclean
roscp
关联GItee
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)