[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文件。

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



相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
3月前
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
385 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
|
3月前
|
存储 缓存
02 ROS创建工作空间和功能包
如何在ROS中创建工作空间和功能包,包括初始化工作空间、编译、设置环境变量以及使用`catkin_create_pkg`创建新功能包的步骤。
55 1
|
3月前
|
存储 缓存 机器人
ROS2教程 01 创建工作空间
本文是关于如何在ROS2(机器人操作系统2)中创建和管理工作空间的教程,介绍了工作空间的概念、ROS1与ROS2工作空间的区别、创建工作空间的步骤,包括建立工作空间文件夹、更新包依赖、编译工作空间以及设置环境变量以便于调用新生成的文件和脚本。
148 0
ROS创建工作空间添加包并编译
ROS创建工作空间添加包并编译
214 0
|
机器学习/深度学习 前端开发 机器人
ubuntu16.04下ROS操作系统学习笔记(三 / 一)ROS基础-工作空间
ubuntu16.04下ROS操作系统学习笔记(三 / 一)ROS基础-工作空间
225 0
|
C++ Python
ROS快速入门第一讲——ROS的工作空间创建
ROS快速入门第一讲——ROS的工作空间创建
239 0
ROS快速入门第一讲——ROS的工作空间创建
|
Ubuntu Shell
ROS学习-创建一个工作空间
ROS学习-创建一个工作空间
96 0
|
存储
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
335 0
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
ros移植别人的工作空间出现问题及解决方法汇总
ros移植别人的工作空间出现问题及解决方法汇总
1149 0
ros移植别人的工作空间出现问题及解决方法汇总

推荐镜像

更多