日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建ROS程序包

發(fā)布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建ROS程序包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一個catkin程序包由什么組成?

一個程序包要想稱為catkin程序包必須符合以下要求:

該程序包必須包含catkin compliant package.xml文件這個package.xml文件提供有關(guān)程序包的元信息。 程序包必須包含一個catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必須包含一個對CMakeList.txt文件的引用。 每個目錄下只能有一個程序包。這意味著在同一個目錄下不能有嵌套的或者多個程序包存在。

最簡單的程序包也許看起來就像這樣:

my_package/CMakeLists.txtpackage.xml

在catkin工作空間中的程序包

開發(fā)catkin程序包的一個推薦方法是使用catkin工作空間,但是你也可以單獨(dú)開發(fā)(standalone)catkin 軟件包。一個簡單的工作空間也許看起來像這樣:

workspace_folder/ -- WORKSPACEsrc/ -- SOURCE SPACECMakeLists.txt -- 'Toplevel' CMake file, provided by catkinpackage_1/CMakeLists.txt -- CMakeLists.txt file for package_1package.xml -- Package manifest for package_1...package_n/CMakeLists.txt -- CMakeLists.txt file for package_npackage.xml -- Package manifest for package_n

在繼續(xù)本教程之前請先按照創(chuàng)建catkin工作空間教程創(chuàng)建一個空白的catkin工作空間。

創(chuàng)建一個catkin程序包
本部分教程將演示如何使用catkin_create_pkg命令來創(chuàng)建一個新的catkin程序包以及創(chuàng)建之后都能做些什么。

首先切換到之前通過創(chuàng)建catkin工作空間教程創(chuàng)建的catkin工作空間中的src目錄下:

cd ~/catkin_ws/src

現(xiàn)在使用catkin_create_pkg命令來創(chuàng)建一個名為’beginner_tutorials’的新程序包,這個程序包依賴于std_msgs、roscpp和rospy:

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

這將會創(chuàng)建一個名為beginner_tutorials的文件夾,這個文件夾里面包含一個package.xml文件和一個CMakeLists.txt文件,這兩個文件都已經(jīng)自動包含了部分你在執(zhí)行catkin_create_pkg命令時提供的信息。
catkin_create_pkg命令會要求你輸入package_name,如果有需要你還可以在后面添加一些需要依賴的其它程序包:

# 這是一個示例,請勿嘗試運(yùn)行 catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

catkin_create_pkg命令也有更多的高級功能,這些功能在catkin/commands/catkin_create_pkg中有描述

程序包依賴關(guān)系

1、一級依賴
之前在使用catkin_create_pkg命令時提供了幾個程序包作為依賴包,現(xiàn)在我們可以使用rospack命令工具來查看一級依賴包。

rospack depends1 beginner_tutorialsstd_msgs rospy roscpp

就像你看到的,rospack列出了在運(yùn)行catkin_create_pkg命令時作為參數(shù)的依賴包,這些依賴包隨后保存在package.xml文件中。

roscd beginner_tutorials cat package.xml執(zhí)行命令后可以看到: <package> ...<buildtool_depend>catkin</buildtool_depend><build_depend>roscpp</build_depend><build_depend>rospy</build_depend><build_depend>std_msgs</build_depend> ... </package>

2、間接依賴

在很多情況中,一個依賴包還會有它自己的依賴包,比如,rospy還有其它依賴包。

rospack depends1 rospygenpy rosgraph rosgraph_msgs roslib std_msgs

一個程序包還可以有好幾個間接的依賴包,幸運(yùn)的是使用rospack可以遞歸檢測出所有的依賴包

rospack depends beginner_tutorialscpp_common rostime roscpp_traits roscpp_serialization genmsg genpy message_runtime rosconsole std_msgs rosgraph_msgs xmlrpcpp roscpp rosgraph catkin rospack roslib rospy

自定義你的程序包
本部分教程將剖析catkin_create_pkg命令生成的每個文件并詳細(xì)描述這些文件的組成部分以及如何自定義這些文件。

1、自定義 package.xml
自動生成的package.xml文件應(yīng)該在你的新程序包中。現(xiàn)在讓我們一起來看看新生成的package.xml文件以及每一個需要你注意的標(biāo)簽元素。
1.1、描述標(biāo)簽

首先更新描述標(biāo)簽:

5 <description>The beginner_tutorials package</description>

將描述信息修改為任何你喜歡的內(nèi)容,但是按照約定第一句話應(yīng)該簡短一些,因?yàn)樗采w了程序包的范圍。如果用一句話難以描述完全那就需要換行了。
1.2、維護(hù)者標(biāo)簽

接下來是維護(hù)者標(biāo)簽:

7 <!-- One maintainer tag required, multiple allowed, one person per tag --> 8 <!-- Example: -->9 <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->10 <maintainer email="user@todo.todo">user</maintainer>

這是package.xml中要求填寫的一個重要標(biāo)簽,因?yàn)樗軌蜃屍渌寺?lián)系到程序包的相關(guān)人員。至少需要填寫一個維護(hù)者名稱,但如果有需要的話你可以添加多個。除了在標(biāo)簽里面填寫維護(hù)者的名稱外,還應(yīng)該在標(biāo)簽的email屬性中填寫郵箱地址:

7 <maintainer email="you@yourdomain.tld">Your Name</maintainer>

1.3、許可標(biāo)簽

再接下來是許可標(biāo)簽,同樣的也需要:

12 <!-- One license tag required, multiple allowed, one license per tag -->13 <!-- Commonly used license strings: -->14 <!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->15 <license>TODO</license>

你應(yīng)該選擇一種許可協(xié)議并將它填寫到這里。一些常見的開源許可協(xié)議有BSD、MIT、Boost Software License、GPLv2、GPLv3、LGPLv2.1和LGPLv3。你可以在Open Source Initiative中閱讀其中的若干個許可協(xié)議的相關(guān)信息。對于本教程我們將使用BSD協(xié)議,因?yàn)镽OS核心組件的剩余部分已經(jīng)使用了該協(xié)議:

8 <license>BSD</license>

1.4、依賴項(xiàng)標(biāo)簽
接下來的標(biāo)簽用來描述程序包的各種依賴項(xiàng),這些依賴項(xiàng)分為build_depend、buildtool_depend、run_depend、test_depend。關(guān)于這些標(biāo)簽的更詳細(xì)介紹請參考Catkin Dependencies相關(guān)的文檔。在之前的操作中,因?yàn)槲覀儗?std_msgs、 roscpp、 和 rospy作為catkin_create_pkg命令的參數(shù),所以生成的依賴項(xiàng)看起來如下:

27 <!-- The *_depend tags are used to specify dependencies -->28 <!-- Dependencies can be catkin packages or system dependencies -->29 <!-- Examples: -->30 <!-- Use build_depend for packages you need at compile time: -->31 <!-- <build_depend>genmsg</build_depend> -->32 <!-- Use buildtool_depend for build tool packages: -->33 <!-- <buildtool_depend>catkin</buildtool_depend> -->34 <!-- Use exec_depend for packages you need at runtime: -->35 <!-- <exec_depend>python-yaml</exec_depend> -->36 <!-- Use test_depend for packages you need only for testing: -->37 <!-- <test_depend>gtest</test_depend> -->38 <buildtool_depend>catkin</buildtool_depend>39 <build_depend>roscpp</build_depend>40 <build_depend>rospy</build_depend>41 <build_depend>std_msgs</build_depend>

除了catkin中默認(rèn)提供的buildtool_depend,所有我們列出的依賴包都已經(jīng)被添加到build_depend標(biāo)簽中。在本例中,因?yàn)樵诰幾g和運(yùn)行時我們需要用到所有指定的依賴包,因此還需要將每一個依賴包分別添加到run_depend標(biāo)簽中:

12 <buildtool_depend>catkin</buildtool_depend>13 14 <build_depend>roscpp</build_depend>15 <build_depend>rospy</build_depend>16 <build_depend>std_msgs</build_depend>17 18 <exec_depend>roscpp</exec_depend>19 <exec_depend>rospy</exec_depend>20 <exec_depend>std_msgs</exec_depend>

1.5、最后完成的 package.xml
現(xiàn)在看下面最后去掉了注釋和未使用標(biāo)簽后的package.xml文件就顯得更加簡潔了:

1 <?xml version="1.0"?>2 <package format="2">3 <name>beginner_tutorials</name>4 <version>0.1.0</version>5 <description>The beginner_tutorials package</description>6 7 <maintainer email="you@yourdomain.tld">Your Name</maintainer>8 <license>BSD</license>9 <url type="website">http://wiki.ros.org/beginner_tutorials</url>10 <author email="you@yourdomain.tld">Jane Doe</author>11 12 <buildtool_depend>catkin</buildtool_depend>13 14 <build_depend>roscpp</build_depend>15 <build_depend>rospy</build_depend>16 <build_depend>std_msgs</build_depend>17 18 <exec_depend>roscpp</exec_depend>19 <exec_depend>rospy</exec_depend>20 <exec_depend>std_msgs</exec_depend>21 22 </package>

自定義 CMakeLists.txt

到此,這個包含程序包元信息的package.xml文件已經(jīng)按照需要完成了裁剪整理,現(xiàn)在你可以繼續(xù)下面的教程了。catkin_create_pkg命令生成的CMakeLists.txt文件將在后續(xù)關(guān)于編譯ROS程序代碼的教程中講述。

現(xiàn)在你已經(jīng)創(chuàng)建了一個新的ROS程序包,接下來我們開始編譯這個程序包

總結(jié)

以上是生活随笔為你收集整理的创建ROS程序包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。