描述:這篇文章介紹如何用roscreate-pkg或catkin創(chuàng)建一個(gè)新的功能包,并用rospack列出功能包的依賴(lài)關(guān)系。
1、catkin功能包的組成
要組成一個(gè)catkin功能包,必須滿(mǎn)足如下相關(guān)條件:
• 功能包必須包含一個(gè)catkin兼容的注釋文件package.xml。
o package.xml文件提供有關(guān)功能包的元信息;
• 功能包必須包含采用catkin的CmakeLists.txt文件
o 例外情況是metapackages不必包含CmakeLists.txt
• 在一個(gè)文件夾中不允許出現(xiàn)多個(gè)功能包
o 這意味著多個(gè)功能包不能共享一個(gè)路徑,也不允許功能包之間相互嵌套包;
最簡(jiǎn)單的功能包組成如下所示:
• my_package/
• CMakeLists.txt
• package.xml
2、catkin Workspace里的功能包
推薦在catkin workspace下生成并編譯catkin 功能包,當(dāng)然,catkin功能包也可單獨(dú)編譯。catkin 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
在創(chuàng)建catkin功能包之前,我們先創(chuàng)建一個(gè)空的catkin workspace,命名為catkin_ws,接下來(lái)的練習(xí)都在這個(gè)catkin_ws下進(jìn)行;
3、創(chuàng)建catkin功能包
接下來(lái)將會(huì)闡述如何利用catkin_create_pkg命令工具生成一個(gè)新的catkin功能包,并介紹catkin功能包的用途;
首先,改變路徑到catkin workspace的src目錄內(nèi);
# You should have created this in the Creating a Workspace Tutorial
$cd~/catkin_ws/src
現(xiàn)在使用catkin_create_pkg命令創(chuàng)建名字為beginner_tutorials的功能包,并設(shè)置這個(gè)新功能包依賴(lài)于std_msg,roscpp和rospy;
?1 $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
這將會(huì)創(chuàng)建一個(gè)beginner_tutorials的文件夾,這個(gè)文件夾內(nèi)會(huì)自動(dòng)生成package.xml文件和CmakeLists.txt文件,這個(gè)兩個(gè)文件會(huì)依據(jù)你對(duì)catin_create_pkg命令的設(shè)置參數(shù)填寫(xiě)一些信息;
Catkin_create_pkg后面的參數(shù)需包含功能包的名字及所創(chuàng)建功能包的一些依賴(lài)選項(xiàng):
# This is an example, do not try to run this
# catkin_create_pkg
4、功能包依賴(lài)關(guān)系
4.1 直接(一級(jí))依賴(lài)關(guān)系
在使用catkin_create_pkg時(shí),一些依賴(lài)的功能包需要提供出來(lái),這些直接(一級(jí))依賴(lài)關(guān)系可以通過(guò)命令工具rospack查看;
?1 $ rospack depends1 beginner_tutorials
• std_msgs
• rospy
• roscpp
就像看到的一樣,rospack列出了用catkin_create_pkg創(chuàng)建時(shí)設(shè)置的依賴(lài)功能包。這些依賴(lài)功能包信息被保存在package.xml文件內(nèi);
$ roscd beginner_tutorials
$catpackage.xml
•
• ...
•
•
•
•
• ...
•
4.2 間接依賴(lài)關(guān)系
在很多情況下,依賴(lài)功能包本身也需要自己的依賴(lài)功能包,例如,rospy就會(huì)需要一些依賴(lài)功能包;
$ rospack depends1 rospy
• genpy
• rosgraph
• rosgraph_msgs
• roslib
• std_msgs
一個(gè)功能包會(huì)需要很多間接的依賴(lài)功能包,幸運(yùn)的是,rospack可以次序檢測(cè)到所有嵌套的依賴(lài)功能包;
$ rospack depends beginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
genmsg
genpy
message_runtime
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
catkin
rospack
roslib
rospy
5、 設(shè)置生成的功能包
這一部分將會(huì)逐行查看catkin_create_pkg自動(dòng)生成的各個(gè)文件,并根據(jù)需要修正它們;
5.1 設(shè)置文件package.xml
在你新創(chuàng)建的功能包內(nèi)會(huì)產(chǎn)生一個(gè)package.xml文件,現(xiàn)在我們查看一下文件package.xml,看哪些元素是我們尤其要關(guān)注的;
5.1.1 描述標(biāo)簽
首先需要更新的是描述標(biāo)簽:
根據(jù)你的需要,改變這些描述信息,順便提示一下,最好采用一句話(huà)描述這個(gè)功能包的用途信息;
5.1.2 維護(hù)者標(biāo)簽
接下來(lái)我們可以看到維護(hù)者標(biāo)簽:
這在package.xml文件里是一個(gè)非常重要的標(biāo)簽,它可以讓其它人知道維護(hù)這個(gè)功能包的聯(lián)系人信息。至少提供一個(gè)維護(hù)者信息,當(dāng)然,如果需要,你可以添加任何一個(gè)維護(hù)者的信息。維護(hù)者的標(biāo)簽處于body的位置,屬性里面的email信息也需要填寫(xiě)完整:
5.1.3 許可標(biāo)簽
接下來(lái)是許可標(biāo)簽,這個(gè)標(biāo)簽也是必要的:
可以選擇一種license填寫(xiě)到里面。常用的license信息為BSD,MIT,Boost Software License,GPLv2,GPLv3,LGPLv2.1和LGPLv3等,針對(duì)這篇文章,我們使用BSD許可。
5.1.4 依賴(lài)功能包標(biāo)簽
接下一組標(biāo)簽是描述這個(gè)功能包的依賴(lài)關(guān)系的。這些依賴(lài)關(guān)系被 build_depend,buildtool_depend,run_depend,test_depend等分隔開(kāi),有關(guān)這些標(biāo)簽的更詳細(xì)的描述可以查看catkin dependencies。因?yàn)槲覀冊(cè)O(shè)置了catkin_create_pkg命令的std_msg,roscpp,rospy參數(shù),因此可以看到下面的依賴(lài)項(xiàng):
在catkin功能包里,除了默認(rèn)的buildtool_dependon,所有列出的依賴(lài)包被作為build_depend添加進(jìn)來(lái)。我們希望在編譯和運(yùn)行時(shí)均指定相關(guān)的依賴(lài)包,因此我們?yōu)槊恳粋(gè)依賴(lài)包添加一下run_depend標(biāo)簽:
5.1.5 最終的package.xml
去除注解及沒(méi)有用到的標(biāo)簽,最終的package.xml文件如下所示,看起來(lái)更簡(jiǎn)潔,
6、設(shè)置生成的CMakeLists.txt文件
既然包含元信息的package.xml已經(jīng)根據(jù)需要做了修改,你已經(jīng)做好了練習(xí)的準(zhǔn)備了吧。Catkin_create_pkg產(chǎn)生的文件CMakeLists.txt將在以后編譯功能包時(shí)進(jìn)行修正完善;
2015職稱(chēng)計(jì)算機(jī)考試書(shū)PowerPoint2007中 .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書(shū)籍 | |
2015年全國(guó)職稱(chēng)計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 |