ros自带package在哪里_roschina/教程/创建Package

本文是ROS初学者教程,介绍了如何使用roscreate-pkg创建新package,如beginner_tutorials,并通过rospack管理依赖。创建package后,需要编辑manifest.xml和mainpage.dox,然后使用rospack profile确保ROS能找到新package。此外,还展示了如何查看package的直接和间接依赖关系。
摘要由CSDN通过智能技术生成

Note: This tutorial assumes that you have completed the previous tutorials: navigating the ROS filesystem.

Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Creating a ROS Package

Description: This tutorial covers using roscreate-pkg to create a new package, and rospack to list package dependencies.

Tutorial Level: BEGINNER

Next Tutorial: Building a ROS package

本文介绍如何使用roscreate-pkg 创建一个新的package, 并使用 rospack 列出package中文件的依赖关系

如何使用roscreate

在我们创建一个package之前,先看下如何使用 roscreate-pkg 命令行工具,该命令用于创建一个新的ROS package。 所有的 ROS packages 包含很多相似的文件 : manifests, CMakeLists.txt, mainpage.dox 和 Makefiles。roscreate-pkg免除手工创建package的繁琐的步骤及由于键盘输入可能带来的错误。

在当前目录创建一个新的package的命令如下

$ roscreate-pkg [package_name]

可以同时指明该package所依赖的其它package:

$ roscreate-pkg [package_name] [depend1] [depend2] [depend3]

创建新的ROS Package

现在我们在home目录下或者自定义的目录下创建名为 beginner_tutorials 的package,并使它依赖 std_msgs, roscpp, 和 rospy,这三个package都是ROS的公共通用的package。

切换到目录 ~/ros_workspace 并创建package:

$ cd ~/ros_workspace

$ roscreate-pkg beginner_tutorials std_msgs rospy roscpp

然后在控制台会看到如下相似的返回结果:Creating package directory ~/ros_workspace/beginner_tutorials

Creating include directory ~/ros_workspace/beginner_tutorials/include/beginner_tutorials

Creating cpp source directory ~/ros/ros_tutorials/beginner_tutorials/src

Creating python source directory ~/ros_workspace/beginner_tutorials/src/beginner_tutorials

Creating package file ~/ros_workspace/beginner_tutorials/Makefile

Creating package file ~/ros_workspace/beginner_tutorials/manifest.xml

Creating package file ~/ros_workspace/beginner_tutorials/CMakeLists.txt

Creating package file ~/ros_workspace/beginner_tutorials/mainpage.dox

Please edit beginner_tutorials/manifest.xml and mainpage.dox to finish creating your package

我们可以查看文件 beginner_tutorials/manifest.xml。 manifests 文件起到很重要的作用,在ROS中它定义package如何创建、运行和归档。下面我们验证并确认ROS能查找到我们这个新的package。当目录路径和ROS_PACKAGE_PATH环境变量变化时,通常使用命令 rospack profile 来使得这个新的目录能够在ROS中被查找到:

$ rospack profile

$ rospack find beginner_tutorialsYOUR_PACKAGE_PATH/beginner_tutorials

如果没有列出package的路径说明ROS不能找到这个新的package,需要查看环境变量 ROS_PACKAGE_PATH是否存在问题。仔细查阅ROS安装指南可以找出问题所在。如果已经创建或者添加已经存在的package路径,则需要修改环境变量ROS_PACKAGE_PATH包含进相应的路径。 在ros_workspace 目录中再次执行source setup.sh命令。

例如.$ roscd beginner_tutorials

$ pwdYOUR_PACKAGE_PATH/beginner_tutorials

Package互相依赖的优先顺序

使用命令roscreate-pkg 创建package时可以作为参数指明所依赖的其它package,这个依赖的先后顺序可以通过命令 rospack 来查看。

$ rospack depends1 beginner_tutorialsstd_msgs

rospy

roscpp

如同你看到的返回结果, rospack 命令列出了所有依赖的package,这些package就是运行命令roscreate-pkg 时所带的参数。 一个package的所有依赖项保存在文件 manifest 中。 下面的命令查看 manifest 文件.

$ roscd beginner_tutorials

$ cat manifest.xml

...

package 间接依赖关系

大多数情况下,一个package作为其它package的依赖项,同时也有自己的依赖项(package)。例如, rospy 也有它自己的依赖项(package).$ rospack depends1 rospyroslib

roslang

一个 package 可以由间接的依赖项。命令 rospack 可以查看这些依赖项.$ rospack depends beginner_tutorialsrospack

roslib

std_msgs

rosgraph_msgs

rosbuild

roslang

rospy

cpp_common

roscpp_traits

rostime

roscpp_serialization

xmlrpcpp

rosconsole

roscpp

ROS 库文件

也许你会问前面例子中的 rospy 和 roscpp 依赖哪些package呢? rospy 和 roscpp 是ROS的一组库文件 Client Libraries. 这些库文件允许不同的编程语言来调用以便能够在ROS框架中数据交换. rospy 是Python用的库文件. roscpp 是针对C++用的库文件.

Review

Lets just list some of the commands we've used so far:roscreate-pkg = ros+create-pkg : generates all the files needed to create a ROS package

rospack = ros+pack(age) : provides information related to ROS packages

rosstack = ros+stack : provides information related to ROS stacks

Now that you've made a new ROS package, let's build our ROS package.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值