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

本文涉及的产品
资源编排,不限时长
简介: [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文件。

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



相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
10月前
ROS创建工作空间添加包并编译
ROS创建工作空间添加包并编译
112 0
|
11月前
|
机器学习/深度学习 前端开发 机器人
ubuntu16.04下ROS操作系统学习笔记(三 / 一)ROS基础-工作空间
ubuntu16.04下ROS操作系统学习笔记(三 / 一)ROS基础-工作空间
179 0
|
C++ Python
ROS快速入门第一讲——ROS的工作空间创建
ROS快速入门第一讲——ROS的工作空间创建
211 0
ROS快速入门第一讲——ROS的工作空间创建
|
Ubuntu Shell
ROS学习-创建一个工作空间
ROS学习-创建一个工作空间
75 0
|
存储
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
293 0
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
ros移植别人的工作空间出现问题及解决方法汇总
ros移植别人的工作空间出现问题及解决方法汇总
1038 0
ros移植别人的工作空间出现问题及解决方法汇总
|
2月前
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
69 1
|
12天前
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
22 2

推荐镜像

更多