ROS 的工作空间


参考
ROS官方wiki—理解ROS节点
ROS官方wiki—理解ROS话题
ROS官方wiki—理解ROS服务及参数

前置
ROS 的逻辑视图

ROS 工作空间简介

ROS的工作空间提供预定义的管理模式。工作空间的示意图如下:
在这里插入图片描述
图中包括两个package,分另为橙色和绿色,平行四边形代表代码文件,方框代表目录。

ROS工作空间的内容分4类:
- src:打交道最多文件夹,保存所有的代码,每个子文件夹是一个pakage,后文还有详细介绍
- build:中间编译文件,除非编译时有奇怪bug,一般不用管
- devel:生成的所有exec/.py的目录,也是ROS系统引导自己编写的包的目录,后文还有详细介绍
- install:可对外发布时,程序保存的目录

src目录

src目录下每个文件夹代表一个package,每个pakage可生成多个可执行文件,每个可执行文件是一个ROS节点。
每个package包含以下内容:

  • include:存放编写的头文件,在CMakeLists.txt添加时要指定include/*.h
  • src:保存编写的源文件,在CMakeLists.txt添加时要指定include/*.cpp
  • srv(可选):服务协议文件*.src的保存位置,配合CMakeLists.txt的add_service_files()使用,直接写文件名,不要加前缀
  • msg(可选):服务协议文件*.msg的保存位置,配合CMakeLists.txt的add_message_files()使用,直接写文件名,不要加前缀

devel 目录

这个目录通常是不独立出来的,但ROS要支持c++/Python两种输出,所以独立放到一个文件夹,且默认提供了ROS系统引导的文件。具体包括:
-setup.sh/.zsh/.bash:由不同shell调用的脚本,source后就在ROS系统 中引导了当前工作空间,之后可以用rosrun/roscd/…等命令调用生成的package。
-local_setup.sh/.zsh/.bash:用于在当前目录调用setup.sh
-__setup__util.py:类似于setup.sh,不过用于引导python加载
-env.sh:当前工作空间的环境设置,不需手工调用
-include:C++头文件目录
-lib:c++编译生成、python代码及配置文件目录

  • [pkg*]:c++可执行文件的输出目录,按package文件夹分割
  • [pkgconfig]:C++的外部引导配置,被其他库依赖时使用,其下为每个package提供了*.pc配置文件
  • python3:python输出文件目录,其下提供site-package,可供python外部调用

创建工作空间

手工创建目录

source /opt/ros/noetic/setup.sh  # 此条可添加到~/.bashrc,之后不用每次调用
cd ~
mkdir catkin_ws
cd catkin_ws
mkdir src # 创建工作空间下的代码目录

创建package

以下代码执行后,会按ROS工作空间的逻辑编译代码,但此时目录为空,那么会直接创建build/devel/…等目录,并在其中添加相应的配置文件

cd src
catkin_create_pkg test std_msgs # 创建包test,依赖库为std_msgs
cd ~/catkin_ws/
catkin_make # 会正常编译,但没有编译代码,因而不会生成任何可执行程序
            # 必须在ROS工作空间的根目录调用

catkin_cmake是个复合命令,等价于

$ mkdir build
$ cd build
$ cmake ../src
$ make

补充信息

如果新添加或移除package,一定要执行

$ catkin_make --force-cmake

如果这条命令无效,就删除build目录,完全重新执行。

后续

参考
ROS 的 Topic 创建与运行示例
ROS 的服务创建与运行示例
创建第一个程序。

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值