1 Ros项目Package的结构
1.1 Package必须包含.xml文件
1.2 Package必须包含一个CMakeLists.txt文件
1.3 Package必须自己拥有一个文件夹,这意味着其不能使用层级文件夹结构或者多Package公用一个目录
所以最简单的Package结构应该如下:
my_package/
CMakeLists.txt
package.xml
2 Ros 工作空间中的Package
workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
package_1/
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n
3 创建CatkinPackage
首先,应该先在先换工作目录至当前工作空间:
cd ~/catkin_ws/src
然后,使用catkin_create_pkg脚本来创建一个新的以“beginner tutorials“命名的,基于std_msgs, roscpp, and rospy的Package:
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
如图所示
![](https://img.haomeiwen.com/i9776445/ca34cfed7e392345.png)
catkin_create_pkg命令的形式如下:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
4编译一个Catkin Workspace
cd ~/catkin_ws
$ catkin_make
为了将workspace加入到Ros的环境中,需要执行产生的Setup文件
. ~/catkin_ws/devel/setup.bash
5Package依赖
5.1 直接依赖
$ rospack depends1 beginner_tutorials
结果如下:
![](https://img.haomeiwen.com/i9776445/fe7db7c2188416a5.png)
显示出了当前Workspace的依赖文件。
其依赖关系保存在package.xml文件中:
![](https://img.haomeiwen.com/i9776445/5ec099e66b72cd37.png)
通过命令
roscd beginner_tutorials
$ cat package.xml
可以看到其中的包含关系。
5.2 间接依赖
很多时候,一个依赖也会有自己的依赖,如之前提到的rospy:
rospack depends1 rospy
其依赖有:
genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs
rospack可以决定所有回溯的依赖:
![](https://img.haomeiwen.com/i9776445/83718d8710926b8a.png)
网友评论