[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基础] --- 创建工作空间的主要内容,如果未能解决你的问题,请参考以下文章