ROS学习笔记

1.ROS文件系统

1.1 Catkin编译系统

1.1.1 Catkin工作原理

Catkin编译的工作流程:

  1. 首先在工作空间catkin_wa/src/下递归的查找其中每一个ROS的package.
  2. package中会有package.xml和CMakeLists.txt文件,Catkin(CMake)编译系统根据CMakeLists.txt文件生成Makefile(位于catkin_wa/build
  3. 然后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.txtpackage.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.txtpackage.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.txtpackage.xml,并且将依赖项填进了这两个文件中。

Last modification:September 7th, 2020 at 05:04 pm
如果觉得我的文章对你有用,请随意赞赏