1.ROS工程的结构:
工作空间下包含该机器人工程的所有内容以及功能。
build: 存放工程编译的中间文件;
devel: 存放工程编译生成的可执行代码,编译生成的库文件以及自动生成的头文件等。
src: 存放该工程的功能包;
package: 功能包是ROS工程中的基本单元,一般一个单一机器人功能建立一个功能包。
功能包清单(package.xml):每个功能包都包含一个名为Package.xml的功能包清单,用于记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等。
CMakeLists.txt:功能包的编译规则,每个功能包都必须包含一个CMakeLists.txt文件。
src:存储功能包源代码;
include:存储功能包头文件;
2.Package结构:
(1) CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分;
(2) package.xml: 描述package的包名、版本号、作者、依赖等信息,是package不可少的成分;
(3) src/: 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py);
(4) include/: 存放C++源码对应的头文件;
(5) scripts/: 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py);
(6) msg/: 存放自定义格式的消息(.msg);
(7) srv/: 存放自定义格式的服务(.srv);
(8) models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等);
(9) urdf/: 存放机器人的模型描述(.urdf或.xacro);
(10) launch/: 存放launch文件(.launch或.xml);
只有 CMakeLists.txt 和 package.xml 是必须的,