ROS中创建工作区和包(ROS入门学习笔记二)

1.创建ROS工作区

$ mkdir -p ~/catkin_ws/src #创建了catkin_ws目录,并且在该目录下创建了src目录

$ cd ~/catkin_ws/
$ catkin_make

执行catkin_make命令后,会在src文件夹中创建一个CMakeLists.txt链接文件,并且此时在catkin_ws目录下会创建build和devel两名文件夹。

devel文件夹中可以看到几个setup.*sh文件,获取这些文件中的任何一个都会将此工作区覆盖在您的环境之上。

在执行其他操作前,需要先执行命令source devel/setup.bash来配置环境,此时,为了确认你的工作区确实已经被setup脚本所重置,执行下面命令来查看:

$ echo $ROS_PACKAGE_PATH /home/youruser/catkin_ws/src:/opt/ros/kinetic/share

如果该命令执行后显示和上边的相同,则说明你的环境已经设置好了。

build文件夹中存放编译相关文件。

2.catkin workspace中包长什么样子?

catkin包由下面三部分组成:

1)package.xml

2)CMakeLists.txt

3)用户创建的包中的文件夹

最简单的包的结构大概如下:

my_package/
  CMakeLists.txt
  package.xml

在catkin workspace中,一个正常的workspace结构如下:

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

3.创建catkin包:

在1中已经创建了一个catkin workspace:catkin_ws,此时使用catkin_create_pkg脚本创建一个名称为beginner_tutorials的新包,这个包依赖于std_msgs、roscpp和rospy:

$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

此时,就会在catkin_ws/src下边多出一个名称为beginner_tutorials的包文件夹,这个文件夹中包括了CMakeLists.txt和package.xml两个文件,并且会生成src和include两个子目录,src中当然使用来存放此包的源代码,include中用于存放头文件。

catkin_create_pkg命令格式如下:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

4.编译catkin workspace和设置配置文件到ROS环境中

在catkin_ws中编译包:

$ cd ~/catkin_ws 
$ catkin_make

把工作区添加到ROS环境中,需要指定setup文件:$ . ~/catkin_ws/devel/setup.bash

 

5.查看包的依赖

1)一阶相关依赖包

比如查看beginner_tutorials一阶相关依赖:

$ rospack depends1 beginner_tutorials
roscpp
rospy
std_msgs

这个结果和我们前边使用catkin_create_pkg命令时指定的依赖时相同的。在beginner_tutorials目录下查看package.xml可以看到这几个依赖。

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

2)非直接依赖的包

查看非直接依赖的命令是rospack depends pkg_name,一个包有许多非直接依赖的包,roospack会递归地将所有嵌套的依赖包都找到。

例如查看beginner_tutorials的非直接依赖包命令:

$ rospack depends beginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
catkin
genmsg
genpy
message_runtime
gencpp
geneus
gennodejs
genlisp
message_generation
rosbuild
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
ros_environment
rospack
roslib
rospy

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值