ROS学习笔记
1.ROS文件系统
1.1 Catkin编译系统
1.1.1 Catkin工作原理
Catkin编译的工作流程:
- 首先在工作空间
catkin_wa/src/
下递归的查找其中每一个ROS的package. - package中会有package.xml和CMakeLists.txt文件,Catkin(CMake)编译系统根据CMakeLists.txt文件生成Makefile(位于
catkin_wa/build
) - 然后make刚刚生成的Makefile等文件,编译连接生成可执行文件(位于
catkin_wa/devel
)
1.2 Catkin工作空间
1.2.1初始化catkin工作空间
首先在终端输入下列指令,完成初始创建.
mkdir -p catkin_ws/src
cd catkin_ws
catkin_make
1.2.2 结构介绍
从上图可以看到catkin工作空间的结构,它包括stc, build, devel三个路径. 他们的具体作用如下:
- src/ : ROS的catkin软件包(package);
- build/ : catkin(CMake的缓存信息和中间文件);
- devel/ : 生成的目标文件(头文件,动态链接库,静态链接库,可执行文件等);
1.3 package软件包
1.3.1 package结构
├── CMakeLists.txt #package的编译规则(必须)
├── package.xml #package的描述信息(必须)
├── src/ #源代码文件
├── include/ #C++头文件
├── scripts/ #可执行脚本
├── msg/ #自定义消息
├── srv/ #自定义服务
├── models/ #3D模型文件
├── urdf/ #urdf文件
├── launch/ #launch文件
其中定义package的是CMakeLists.txt
和package.xml
,这两个文件是package中必不可少的。catkin编译系统在编译前,首先就要解析这两个文件。这两个文件就定义了一个package。
- CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分
- package.xml: 描述package的包名、版本号、作者、依赖等信息,是package不可少的成分
- src/: 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py)
- include/: 存放C++源码对应的头文件
- scripts/: 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py)
- msg/: 存放自定义格式的消息(.msg)
- srv/: 存放自定义格式的服务(.srv)
- models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等)
- urdf/: 存放机器人的模型描述(.urdf或.xacro)
- launch/: 存放launch文件(.launch或.xml)
通常ROS文件组织都是按照以上的形式,这是约定俗成的命名习惯,建议遵守。以上路径中,只有CMakeLists.txt
和package.xml
是必须的,其余路径根据软件包是否需要来决定。
1.3.2 package的创建
创建一个package需要在catkin_ws/src
下创建,需要catkin_create_pkg
命令.
例如,新建一个package为exercise_pkg
,依赖roscpp rospy std_msgs
catkin_create_pkg exercise_pkg roscpp rospy std_msgs
package目录下生成文件结构为
.
├── CMakeLists.txt
├── include
│ └── exercise_pkg
├── package.xml
└── src
catkin_create_pkg
帮你完成了软件包的初始化,填充好了CMakeLists.txt
和package.xml
,并且将依赖项填进了这两个文件中。
博主用精炼的文字和精心绘制的图片向读者展示ROS文件系统,用最合适的排版去展现最希望读者关注的部分,绘声绘色地将ROS文件系统讲的层次分明,让读者一看就懂。期待博主的更多文章!