ROS杂记(一) —— 新建ROS包

创建ROS的工作空间

下面我们开始创建一个catkin 工作空间:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

首次运行catkin_make命令,将会在src文件夹下创建一个CMakeLists.txt文件,且在根目录下创建了两个子文件夹build和devel

在这里插入图片描述
catkin_make命令在catkin 工作空间中是一个非常方便的工具。如果你查看一下当前目录应该能看到’build’和’devel’这两个文件夹。在’devel’文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层,

创建ROS包

catkin程序包要求

一个程序包要想称为catkin程序包必须符合以下要求:

1.> 该程序包必须包含catkin compliant package.xml文件,这个package.xml文件提供有关程序包的元信息。

2.> 程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。

3.> 每个ROS包目录下只能有一个程序包,这意味着在同一个目录下不能有嵌套的或者多个程序包存在。(但同一个工作空间下可以有多个ROS包)如下所示:
在这里插入图片描述

创建一个catkin程序包

  1. 首先切换到之前通过创建catkin工作空间教程创建的catkin工作空间中的src目录下:即我们刚刚创建的包里的src文件夹。
  2. 创建:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

例如:catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

如果我们在创建时指定了依赖包,那么在package.xml文件中会自动生成这些依赖,如果没有指定,后续手动自己添加也可以。

$ roscd beginner_tutorials
$ cat package.xml
<package>
...
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
...
</package>

在很多情况中,一个依赖包还会有它自己的依赖包,比如,rospy还有其它依赖包。一个程序包还可以有好几个间接的依赖包,幸运的是使用rospack可以递归检测出所有的依赖包。

编译ROS包

  1. 一旦安装了所需的系统依赖项,我们就可以开始编译刚才创建的程序包了,如果你是通过apt或者其它软件包管理工具来安装ROS的,那么系统已经默认安装好所有依赖项。
    记得事先 source 你的环境配置(setup)文件,在Ubuntu中的操作指令如下:
$ source /opt/ros/kinetic/setup.sh 
  1. 使用 catkin_make
    catkin_make 是一个命令行工具,它简化了catkin的标准工作流程。你可以认为catkin_make是在CMake标准工作流程中依次调用了cmake 和 make。
# 在catkin工作空间下
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

开始编译:
之前已经创建好了一个catkin 工作空间 和一个名为beginner_tutorials的catkin 程序包。现在切换到catkin workspace 并查看src文件夹:

$ cd ~/catkin_ws/
$ ls src
beginner_tutorials/  CMakeLists.txt
$ catkin_make

catkin_make首先输出它所使用到的每个空间所在的路径,需要注意的是由于这些空间存在默认配置的原因,有几个文件夹已经在catkin工作空间自动生成了.
build 目录是build space的默认所在位置,同时cmake 和 make也是在这里被调用来配置并编译你的程序包。
devel 目录是devel space的默认所在位置, 同时也是在你安装程序包之前存放可执行文件和库文件的地方。

添加cpp文件

在本包的src文件夹下新建cpp文件。编写代码后,需要更改CmakeLists.txt文件中下面两句

add_executable(${PROJECT_NAME}_node src/文件名)
target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值