[ROS]Catkint工作空间(一)

1.Catkin编译系统

我们知道,在Linux下编译器有gcc/g++,但是随着原文件数量的增加,直接使用gcc/g++的方式效率太低,于是出现了makefile来进行编译,然而随着工程文件的增加,makefile也不能满足编译的需求,于是出现了Cmake工具。Cmake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。对于ROS这样大体量的平台来说,就采用的是CMake,并且ROS对CMake进行了扩展,于是便有了Catkin编译系统。

2.catkin工作空间

Catkin工作空间是创建、修改、编译catkin软件包的目录。说白了就是一个仓库,里面装载着ROS的各种项目工程,便于系统组织管理调用。接下来,可以通过如下命令创建并初始化catkin工作空间

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make #初始化工作空间

注意:

  1. catkin_make命令必须在工作空间这个路径上执行
  2. 原先的初始化命令catkin_init_workspace仍然保留

 通过tree命令可以看到catkin工作空间的结构,它包括了 src 、 build 、 devel 三个路径

$ cd ~/catkin_ws
$ sudo apt install tree
$ tree

 

  • src/: ROS的catkin软件包(源代码包package,我们写的程序就放在这),其中package是catkin工作空间的基本单元
  • build/: catkin(CMake) 的缓存信息中间文件
  • devel/: 生成的目标文件(包括头文件动态链接库静态链接库可执行文件等) 、环境变量

3.package软件包

package软件包是ROS应用程序代码的组织单元,组成一个个的功能模块,位于我们刚刚创建的catkin工作空间的src文件下,如图所示。我们平常写的C++程序或者Python程序都在package中,最后我们调用catkin_make也是对package软件包进行编译。

  • package包含的文件:

注意: CMakeLists.txt package.xml 这两个文件是package中必不可少的,其余路径根据软件包是否需要来决定。

  1. CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分
  2. package.xml: 描述package的包名、版本号、作者、依赖等信息,是package不可少的成分
  3. src/: 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py)
  4. include/: 存放C++源码对应的头文件
  5. scripts/: 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py)
  6. msg/: 存放自定义格式的消息(.msg)
  7. srv/: 存放自定义格式的服务(.srv)
  8. models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等)
  9. urdf/: 存放机器人的模型描述(.urdf或.xacro)
  10. launch/: 存放launch文件(.launch或.xml)
  • package的创建

格式:catkin_create_pkg [软件包的名字] [软件包的依赖]

例如:新建一个package叫做 test_pkg ,依赖roscpp、rospy、std_msgs(常用依赖)。

catkin_create_pkg test_pkg roscpp rospy std_msgs

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火柴的初心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值