一、ROS创建工作空间

一、ROS创建工作空间

    • 1.什么是工作空间
    • 2.创建工作空间
    • 3.编译工作空间
    • 4.创建功能包
    • 5.编译功能包(重新编译工作空间)
    • 6.设置环境变量
    • 7.运行节点

1.什么是工作空间

工作空间(workspace)是用来存放ROS开发相关文件的一个文件夹

一个工作空间里面又分为四个主要文件夹

  • src:代码空间(Source Space),用来放置所有功能包
  • bulid:编译空间(Build Space),存放编译过程中产生的缓存信息和中间文件(这个文件夹基本不用关心)
  • devel:开发空间(Development Space),放置编译生成的一些可执行文件(库、脚本等)
  • Install:安装空间(Install Space),编译成功后可以使用make install命令将可执行文件安装到该空间中,运行该空间中的环境变量脚本,即可在终端中运行这些可执行文件(安装空间不是必需的)

一、ROS创建工作空间_第1张图片

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.创建工作空间

首先新建一个文件夹test_workspace作为工作空间,这个工作空间的名字可以自定义

mkdir test_workspace

进入刚刚创建好的工作空间,再新建一个文件夹src用于存放功能包源码(代码空间)

cd  test_workspace
mkdir src

在代码空间src中执行catkin_init_worksapce进行工作空间初始化
会在代码空间src下创建一个名为CMakeLists.txt的文件

cd src
catkin_init_workspace

3.编译工作空间

回到工作空间的根目录,对刚刚创建好的工作空间进行编译
能看到在工作空间的根目录下创建了bulid(编译空间)和devel(开发空间)
但是并没有开发空间Install

cd ..
catkin_make

单独创建Install(开发空间)

catkin_make install

4.创建功能包

进入代码空间src,并创建功能包,定义包名为“test_pkg”并添加相关的依赖

cd src
catkin_create_pkg test_pkg std_msgs rospy roscpp

上述命令,会在工作空间下生成一个功能包“test_pkg”,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。

5.编译功能包(重新编译工作空间)

由于创建了一个新的功能包,可以重新对工作空间进行编译,即使功能包中并没有实际内容
不过如果功能包里写了代码,就要先配置CMakeLists.txt,然后再编译
同理,必须编译工作空间必须回到工作空间的根目录下

cd ..
catkin_make

6.设置环境变量

设置环境变量:在工作空间的根目录下,source一下开发空间devel下的的setup.bash脚本文件
只有设置了环境变量之后,才能让系统找到工作空间和工作空间中对应的一些功能包

source devel/setup.bash

检查环境变量

echo $ROS_PACKAGE_PATH

但是要注意,source devel/setup.bash只在当前终端生效
如果打开一个新终端,不重新设置环境变量,系统就找不到对应的功能包了
要想永久生效,可以把工作空间的环境变量写入 .bashrc文件

gedit  ~/.bashrc

在 .bashrc文件文件的最后,写入
source /home/yao/My_Ros_WorkSpace/test_workspace/devel/setup.bash(每个人路径不同)
ROS工作空间目录中不允许有中文,比如"桌面"这种,如果有中文的话,后面用launch文件启动多个节点可能有问题
重启终端生效
这样每次编译(catkin_make)之后就不需要再写source devel/setup.bash了

7.运行节点

在运行节点之前,首先需要打开ROS Master
新建一个终端

roscore

再新建一个终端
进入工作空间的根目录
每次新建一个终端,都要重新设置一下环境变量
启动节点

cd   <工作空间>
source devel/setup.bash
rosrun   <功能包名>   <可执行文件名>

你可能感兴趣的:(c++)