接上一篇文章: ROS学习(one)
manifest: 就理解为一个文档的描述符,记录这关于该文件的各种信息。
Filesystem 工具
使用ls 或者 cd 比较繁琐乏味, 所以ros提供了更加方便的命令行工具
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
rospack:允许你得到关于包的信息,
find 命令
rospack find package_name # 将会返回包的路径
roscd:可以让你直接跳转到相应文件的目录下面 跳转 ros + cd
roscd 只能跳转到在 ROS_PACKAGE_PATH 下存在的路径 (echo $ROS_PACKAGE_PATH 查看ROS_PACKAGE_PATH下所含有的包)
roscd roscpp # 直接跳转到 roscpp 路径下
roscd roscpp/cmake # 跳转到roscpp/cmake路径下面
roscd log # 跳转到log文件夹下面, f you have not run any ROS programs yet, this will yield an error saying that it does not yet exist.
rosls: 列出后面文件夹下面的子文件 , 没有 rosll 命令
Creating a catkin Package
使用 roscreate_pkg 和 catkin 创建一个ros package, 并且通过rospack来列出包的依赖
一个最简单的 catkin Package 必须包含下面的文件: package.xml & CMakeLists.txt
使用 catkin_create_pkg脚本来创建一个新的catkin包
# 创建一个新的包 begginner_tutorials , 依赖于 std_msgs rospy 和 roscpp
# catkin_create_pkg package_name depend1 depend2 ...
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
Building a catkin workspace and sourcing the setup file
building a catkin workspace : 在工作空间目录下, 使用catkin_make
catkin_make 之后会在 devel 目录下创建一个和 /opt/ros/$ROSDISTRO_NAME 相似的结构 的目录
你需要去source 生成的 setup 文件( source catkin_ws/devel/setup.bash ),增加该工作空间,到你的ros环境中
fengxuewei@fengxuewei:~/C++_myself$ source catkin_ws/devel/setup.bash
fengxuewei@fengxuewei:~/C++_myself$ echo $ROS_PACKAGE_PATH
/home/fengxuewei/C++_myself/catkin_ws/src:
/home/fengxuewei/mavlink_ws/src:
/home/fengxuewei/catkin_ws/src/mavlink:
/home/fengxuewei/catkin_ws/src/mavros/libmavconn:
/home/fengxuewei/catkin_ws/src/mavros/mavros_msgs:
/home/fengxuewei/catkin_ws/src/mavros/mavros:
/home/fengxuewei/catkin_ws/src/mavros/mavros_extras:
/home/fengxuewei/catkin_ws/src/mavros/test_mavros:
/opt/ros/melodic/share
包的依赖
First-order dependencies
rospack depends1 catkin_package_name # 输出关于该包的依赖包, 这些内容在该包文件夹的 package.xml文件中
rospack depends1 catkin_package_name # 输出所有间接依赖
<?xml version="1.0"?>
<package format="2">
<!-- package.xml -->
<name>beginner_tutorials</name>
<version>0.0.0</version>
<description>The beginner_tutorials package</description>
<!-- One maintainer tag required, multiple allowed, one person per tag -->
<!-- Example: -->
<!-- <maintainer email="[email protected]">Jane Doe</maintainer> -->
<maintainer email="[email protected]">fengxuewei</maintainer>
<!-- One license tag required, multiple allowed, one license per tag -->
<!-- Commonly used license strings: -->
<!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
<license>TODO</license>
<!-- Url tags are optional, but multiple are allowed, one per tag -->
<!-- Optional attribute type can be: website, bugtracker, or repository -->
<!-- Example: -->
<!-- <url type="website">http://wiki.ros.org/beginner_tutorials</url> -->
<!-- Author tags are optional, multiple are allowed, one per tag -->
<!-- Authors do not have to be maintainers, but could be -->
<!-- Example: -->
<!-- <author email="[email protected]">Jane Doe</author> -->
<!-- The *depend tags are used to specify dependencies -->
<!-- Dependencies can be catkin packages or system dependencies -->
<!-- Examples: -->
<!-- Use depend as a shortcut for packages that are both build and exec dependencies -->
<!-- <depend>roscpp</depend> -->
<!-- Note that this is equivalent to the following: -->
<!-- <build_depend>roscpp</build_depend> -->
<!-- <exec_depend>roscpp</exec_depend> -->
<!-- Use build_depend for packages you need at compile time: -->
<!-- <build_depend>message_generation</build_depend> -->
<!-- Use build_export_depend for packages you need in order to build against this package: -->
<!-- <build_export_depend>message_generation</build_export_depend> -->
<!-- Use buildtool_depend for build tool packages: -->
<!-- <buildtool_depend>catkin</buildtool_depend> -->
<!-- Use exec_depend for packages you need at runtime: -->
<!-- <exec_depend>message_runtime</exec_depend> -->
<!-- Use test_depend for packages you need only for testing: -->
<!-- <test_depend>gtest</test_depend> -->
<!-- Use doc_depend for packages you need only for building documentation: -->
<!-- <doc_depend>doxygen</doc_depend> -->
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<!-- The export tag contains other, unspecified, tags -->
<export>
<!-- Other tools can request additional information be placed here -->
</export>
</package>