工程结构:我理解为一个项目的文件系统的结构。比如在C++中有放源文件的,有放头文件的,在ros的一个工程中,自然也有相应的文件结构。
catkin 是ROS定制的编译构建系统(Cmake的扩展),catkin是用来编译ros程序的。
catkin工作空间,可以对功能包的文件夹进行管理和组织。
指令catkin_make:1.建立工作空间 2.编译
建立目录的时候一定要包含有src这个文件夹
(注意:在建立好工作空间之后需要 cd ~/catkin_ws回到工作空间。如果不回到工作空间直接catkin_make会报错
。另外,最后一句把我们的工作空间的路径刷新到环境变量里面去,这样系统才知道我们生成的ROS可执行文件的位置。)
src才是我们写代码的地方。其他两个catkin系统会帮我们搞定
所以先只关注src
rosbuild也是一个编译系统,比较老,不管。
而package是catkin编译的最基本的单元。一般结构如下:
package:
ros软件的基本组织形式,catkin编译的基本单元,一个package中可以包含多个可执行文件(节点)
package 的空架子结构:
这两个文件代表着编译规则和包的自我描述(具体写法我不会,但是.xml中一般只需要修改编译和运行时候的依赖项)
代码文件一般有两种:一种脚本文件(.py ,.sh),一种是c++的文件
package的经典结构
package下的scripts和include,src放置源代码
msg和srv中放通信格式,(message和service)
launch文件和配置文件:由于包中可以放多个可执行文件,这时候可以把这些文件组织到launch文件中,它的作用就是一次性执行多个可执行文件。
常用指令:
Metapackage:(虚包)自身没有什么内容,但是它依赖了非常多别的软件包,通过这种方式把其他的软件包组合起来