ROS基础,创建工作空间,创建功能包

1.工作空间

工作空间(work space)是ROS系统中存放工程开发相关的文件夹,其目录结构如下:

src:代码空间(Source Space),用于存放开发代码

build:编译空间(Build Space)

devel:开发空间(Development Space),存放编译后生成的二进制代码(C++)

install:安装空间(Install Space)

一个最小的项目结构如图所示

1.1 如何创建并编译一个工作空间

创建工作空间

在根目录下创建一个叫catkin_ws的工作空间,并进入到src目录下进行初始化

$ source /opt/ros/kinetic/setup.bash
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

编译工作空间

catkin_make相当于cmake编译器,ROS对其进行改造(加入CMakeLists.txt进行功能包索引)。一般在修改了src下的程序代码或配置文件后需要进行编译。

$ cd ~/catkin_ws

$ catkin_make 

设置环境变量 

在这里记住一点,但凡编译过工作空间,一定要重新source环境变量,否则代码不会更新。

这里使用的是setup.bash,还有两个文件为setup.sh和setup.zsh,要source哪个文件取决于你的默认解释程序(echo $SHELL)

$ souce ~/catkiin_ws/devel/setup.bash

 

补充:工作空间的覆盖

ROS系统中工作空间存在Overlaying机制,即工作空间覆盖机制,符合以下规则:

1)工作空间的路径记录在ROS_PACKAGE_PATH环境变量中

2)新设置的路径(source后)会放在ROS_PACKAGE_PATH变量的最前端

3)运行程序时,ROS会优先在靠近前端的工作空间中查找指定的功能包

4)只有当前端工作空间不存在该功能包时才向后查找

如图所示

可以观察到source当前工作空间后,将当前工作空间的绝对路径放到了系统工作空间之前

 

2.创建功能包

ROS里的功能包用于区分某个文件夹下代码的功能,如机器人有移动,导航,视觉等功能,我们为整个机器人创建工作空间,也可称为一个项目,接来要开发它的各个功能,于是我们使用功能包来分隔一类别代码。下面是创建功能包的方式:

下面命令创建了一个叫做test1个功能包,导入了rospy roscpp依赖包,ROS支持python和c++开发,所以导入这两个依赖包让功能包可以通过这两种语言开发。

创建完功能包后需要catkin_make进行编译,编译后需要source当前工作空间,这样就完成了功能包的创建

$ cd ~/catkin_ws/src
$ catkin_create_pkg test1 rospy roscpp
$ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash

注意:同一个工作空间不能存在相同名称的功能包,不同工作空间可以存在相同名称的功能包 

 

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读