ROS学习笔记二——创建和构建一个包

接着上一个笔记,根据http://wiki.ros.org/ROS/Tutorials,创建一个ROS的包。

创建一个包

一个catkin的包主要有以下几部分组成:
(1)必须包括一个package.xml文件,
(2)必须包括一个CMakeLists.txt文件,
(3)在每一个文件夹下只能有一个包,且包不允许嵌套。

workspace_folder/        -- WORKSPACE
  src/                   -- SOURCE SPACE
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
    ...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

创建工作空间:

参考 : http://wiki.ros.org/catkin/Tutorials/create_a_workspace

  • 首先需要修改环境变量
source /opt/ros/<你的ros版本>/setup.bash  
  • 创建工作空间文件夹
mkdir -p ~/catkin_ws/src 
cd ~/catkin_ws/src  
  • 通过上面两条命令,就可以创建一个工作空间,并转到已创建好的工作空间之下,尽管这个空间是空的,我们仍然可以构建(build)它:
$ cd ~/catkin_ws/
$ catkin_make
  • 当时用catkin工作空间时,catkin_make是一个非常方便的命令行工具。如果您看一下当前的工作目录,您会发现里面多了两个文件夹“build”和“devel”。在devel文件夹下,您可以看到很多setup.*sh文件。输入如下命令配置您的工作空间:
source devel/setup.bash 
  • 可以通过下面的命令来确定你已经成功创建工作空间
$ echo $ROS_PACKAGE_PATH
/home/youruser/catkin_ws/src:/opt/ros/kinetic/share:/opt/ros/kinetic/stacks

创建包

参考:http://wiki.ros.org/ROS/Tutorials/CreatingPackage

  • 首先进入到目录~/catkin_ws/src下,
cd ~/catkin_ws/src
  • 接着创建一个名字为beginner_tutorials的包,它依赖以下三个包:std_msgs,rospy以及roscpp,
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp  

依赖关系查看

  • 在创建的beginner_tutorials文件夹下可以看到package.xml和CMakeLists.txt。catkin_create_pkg要求您给出包的名字,及选择性的给出所创建的包依赖于哪一个包。可以通过下面命令查看依赖关系:
$ rospack depends1 beginner_tutorials 

依赖你关系会保存在package.xml文件中,可以查看:

$ roscd beginner_tutorials
$ cat package.xml
  • 还可以查看间接依赖的包:
rospack depends beginner_tutorials

配置package.xml文件

接下来配置您的package.xml包,我们将会一个标签一个标签的分析这个xml文件。
- 首先是description标签:在这个标签中的内容可以改变为任何的内容,不过一般是对这个包的一个简述

<description>The beginner_tutorials package</description>  
  • 接下来是maintainer标签:因为可以根据这个标签知道它的维护者,另外标签的email属性也是必须的,可有多个maintainer标签。
<!-- One maintainer tag required, multiple allowed, one person per tag -->   
<!-- Example:  -->  
<!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->  
<maintainer email="user@todo.todo">user</maintainer>  
  • 接下来是license标签,在后面的使用中,一般我们将license修改为BSD。
<!-- One license tag required, multiple allowed, one license per tag -->  
<!-- Commonly used license strings: -->  
<!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->  
<license>TODO</license>  
  • 接下来是依赖性的标签:
<!-- The *_depend tags are used to specify dependencies -->  
<!-- Dependencies can be catkin packages or system dependencies -->  
<!-- Examples: -->  
<!-- Use build_depend for packages you need at compile time: -->  
<!--   <build_depend>genmsg</build_depend> -->  
<!-- Use buildtool_depend for build tool packages: -->  
<!--   <buildtool_depend>catkin</buildtool_depend> -->  
<!-- Use run_depend for packages you need at runtime: -->  
<!--   <run_depend>python-yaml</run_depend> -->  
<!-- Use test_depend for packages you need only for testing: -->  
<!--   <test_depend>gtest</test_depend> -->  
<buildtool_depend>catkin</buildtool_depend>  
<build_depend>roscpp</build_depend>  
<build_depend>rospy</build_depend>  
<build_depend>std_msgs</build_depend>  
  • 我们向里面添加了run_depend:这样在运行时才能找到依赖关系
<run_depend>roscpp</run_depend>  
<run_depend>rospy</run_depend>  
<run_depend>std_msgs</run_depend>  

在工作空间中构建和使用catkin包

http://wiki.ros.org/ROS/Tutorials/BuildingPackages
- 首先也是要修改环境变量,如果上一步做了并没有关闭终端,可以省去。

$ source /opt/ros/%YOUR_ROS_DISTRO%/setup.bash
$ source /opt/ros/kinetic/setup.bash             (For Kinetic for instance) 
  • 首先打开beginner_tutorials包下面的src文件夹,在里面添加或者编辑源文件。然后回到包beginner_tutorials的根目录下,更新一下CMakeLists.txt文件,最后回到工作空间的根目录下,使用catkin_make命令进行构建。
cd ~/catkin_ws  
catkin_make install  

上面的两条命令可以用下面一条指令来代替:

cd ~/catkin_ws/build && make install 

所以构建一个包的流程就像这样:

$ cd ~/catkin_ws/src/beginner_tutorials/src  

# Add/Edit source files  

$ cd ~/catkin_ws/src/beginner_tutorials  

# Update CMakeFiles.txt to reflect any changes to your sources  

$ cd ~/catkin_ws  

$ catkin_make   

后面会用到,到时候理解会更深刻。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值