亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁(yè) | 考試用書(shū) | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
        當(dāng)前位置:Linux認(rèn)證 > 綜合輔導(dǎo) > 文章內(nèi)容
        

      Linux教程:機(jī)器人操作系統(tǒng)ROS學(xué)習(xí)教程

      來(lái)源:robotos.net [ 2016年2月14日 ] 【

      描述:這篇文章介紹如何用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 [depend1] [depend2] [depend3]


      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


      •     
      •      ...
      •        catkin
      •        roscpp
      •        rospy
      •        std_msgs
      •      ...
      •     

      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)簽:

          The beginner_tutorials package

      根據(jù)你的需要,改變這些描述信息,順便提示一下,最好采用一句話(huà)描述這個(gè)功能包的用途信息;

      5.1.2 維護(hù)者標(biāo)簽

      接下來(lái)我們可以看到維護(hù)者標(biāo)簽:

         
         
         
          user

      這在package.xml文件里是一個(gè)非常重要的標(biāo)簽,它可以讓其它人知道維護(hù)這個(gè)功能包的聯(lián)系人信息。至少提供一個(gè)維護(hù)者信息,當(dāng)然,如果需要,你可以添加任何一個(gè)維護(hù)者的信息。維護(hù)者的標(biāo)簽處于body的位置,屬性里面的email信息也需要填寫(xiě)完整:

          Your Name

      5.1.3 許可標(biāo)簽

      接下來(lái)是許可標(biāo)簽,這個(gè)標(biāo)簽也是必要的:

         
         
         
          TODO

      可以選擇一種license填寫(xiě)到里面。常用的license信息為BSD,MIT,Boost Software License,GPLv2,GPLv3,LGPLv2.1和LGPLv3等,針對(duì)這篇文章,我們使用BSD許可。

          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
          roscpp
          rospy
          std_msgs

      在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)簽:

          catkin

          roscpp
          rospy
          std_msgs

          roscpp
          rospy
          std_msgs

      5.1.5 最終的package.xml

      去除注解及沒(méi)有用到的標(biāo)簽,最終的package.xml文件如下所示,看起來(lái)更簡(jiǎn)潔,

         
         
          beginner_tutorials
          0.1.0
          The beginner_tutorials package

          Your Name
          BSD
          //wiki.ros.org/beginner_tutorials
          Jane Doe

          catkin

          roscpp
          rospy
          std_msgs

          roscpp
          rospy
          std_msgs

       

      6、設(shè)置生成的CMakeLists.txt文件

      既然包含元信息的package.xml已經(jīng)根據(jù)需要做了修改,你已經(jīng)做好了練習(xí)的準(zhǔn)備了吧。Catkin_create_pkg產(chǎn)生的文件CMakeLists.txt將在以后編譯功能包時(shí)進(jìn)行修正完善;

      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問(wèn)考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見(jiàn)留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
      Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved