[ROS基础] --- 创建工作空间

Posted Overboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ROS基础] --- 创建工作空间相关的知识,希望对你有一定的参考价值。

0 引言

我们在windows下使用集成IDE创建工程的时候,是不需要自己手写cmake/makefile去管理工程的,但是在linux下新建c/cpp项目的时候,在创建文件夹的时候,就需要想好文件的层级结构,以及手动编写cmake/makefile管理工程。
在linux下怎么创建ros项目呢?
我个人理解,ros相当于一个集成的IDE,我们用对应的指令去创建项目的时候,系统会自动生成管理项目的cmake文件。

1 ROS文件系统

在介绍怎么创建ros项目之前,先要理解ROS文件系统的相关概念。
ROS文件系统级指的是在硬盘上ROS源代码的组织形式,其结构大致可以如下图所示:

WorkSpace --- 自定义的工作空间

    |--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。

    |--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。

    |--- src: 源码

        |-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成

            |-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件

            |-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)

            |-- scripts 存储python文件

            |-- src 存储C++源文件

            |-- include 头文件

            |-- msg 消息通信格式文件

            |-- srv 服务通信格式文件

            |-- action 动作格式文件

            |-- launch 可一次性运行多个节点 

            |-- config 配置信息

        |-- CMakeLists.txt: 编译的基本配置

2 ROS工作空间创建

2.1 创建工作空间

1> 创建工作空间

mkdir -p ros_ws/src
cd ros_ws/src
catkin_init_workspace		//初始化工作空间

2> 编译工作空间

cd ros_ws
catkin_make

3> 设置环境变量

source devel/setup.bash

我们只是在当前目录创建了ros_ws/src目录,编译完之后,会发现目录变成了这样

2.2 创建功能包

1> 进入刚才创建工作空间的src目录

cd ~/work/2.study/ros_ws/src
catkin_create_pkg com_topic std_msgs roscpp

2> 编译功能包

cd  ~/work/2.study/ros_ws
catkin_make
source  devel/setup.bash

NOTE: 同一工作空间下,不允许存在同名功能包
不同工作空间下,允许存在同名功能包

2.3 src目录下CMakeLists.txt和package.xml文件

1> CMakeLists.txt
文件CMakeLists.txt是CMake构建系统的输入,用于构建软件包。任何兼容CMake的软件包都包含一个或多个CMakeLists.txt文件,这些文件描述了如何构建代码以及将代码安装到何处。
2> package.xml
该文件定义有关软件包的属性,例如软件包名称,版本号,作者,维护者以及对其他catkin软件包的依赖性。请注意,该概念类似于旧版 rosbuild 构建系统中使用的manifest.xml文件。

在项目中添加了依赖库,或者新加了文件,都需要修改这两个文件才能生效

以上是关于[ROS基础] --- 创建工作空间的主要内容,如果未能解决你的问题,请参考以下文章

[ROS基础] --- 创建工作空间

[ROS基础] --- 创建工作空间

创建一个ROS工作空间(ROS Workspace)

ROS创建工作空间和功能包

wstool ros空间管理工具

ROS系统 创建工作空间与功能包