ROS學習筆記4-創建一個ROS包


本文內容來源於官方wiki,http://wiki.ros.org/ROS/Tutorials/CreatingPackage

  1. 一個catkin包包含什么
    1. 必須包含package.xml文件,該文件用來描述包相關信息。
    2. 必須有一個catkin使用的CMakeLists.txt文件。
    3. 每個包必須有自己的文件夾。
      一個簡單包結構如下:
      my_package/
        CMakeLists.txt
        package.xml
      
  2. catkin 工作空間(workspace)中的包
    建議catkin包在catkin 工作空間中工作,雖然也可以單獨構建包。
    一個典型的catkin 工作空間文件結構如下:
    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
    

    在繼續之前,先看一下如何創建一個catkin工作空間。

  3. 創建catkin工作空間。
    裝了ROS后可以使用該命令安裝catkin,
    $ source /opt/ros/kinetic/setup.bash
    

    使用如下命令創建一個catkin工作空間,名字為catkin_ws:

    $ mkdir -p ~/catkin_ws/src
    $ cd ~/catkin_ws/
    $ catkin_make
    

     使用ls命令查看,可以看出已經出現build,devel,src的子目錄。
    然后運行:

    $ source devel/setup.bash
    $ echo $ROS_PACKAGE_PATH
    

     返回如下:

    /home/spy/catkin_ws/src:/opt/ros/kinetic/share
    

    可以看出,環境變量中已經包含了該工作空間中的目錄。

  4. 創建一個catkin包
    可以使用catkin_create_pkg命令創建一個catkin包,該命令語法如下:
    # This is an example, do not try to run this
    # catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
    

    例如如下命令:

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

     創建一個名為 beginner_tutorials 的包,依賴項為 std_msgs rospy 和roscpp
    輸出如下:

    Created file begginner_tutorials/CMakeLists.txt
    Created file begginner_tutorials/package.xml
    Created folder begginner_tutorials/include/begginner_tutorials
    Created folder begginner_tutorials/src
    Successfully created files in /home/shao/catkin_ws/src/begginner_tutorials. Please adjust the values in package.xml.
    

     可以看出,該命令自動創建了一些文件。其中包括CMakeLists.txt和package.xml這些文件。

  5. 編譯catkin包
    使用如下命令
    $ cd ~/catkin_ws
    $ catkin_make
    

    則會自動將所有包都編譯,包括剛創建的beginner_tutorials包。

    catkin_make命令實際上調用了cmake命令,關於更多catkin_make的信息,請參考catkin/commands/catkin_make

  6. 包依賴
    1. 一級依賴
      在使用catkin_create_pkg命令創建包時可以指定一些依賴項,可以rospack命令查看這些依賴項:
      $ rospack depends1 begginner_tutorials 
      

      則返回:

      roscpp
      rospy
      std_msgs
      

       這些依賴信息存儲在package.xml中,可以查看package.xml。

    2. 間接依賴
      一級依賴項可能存在自己的依賴,這些稱之為間接依賴,例如,rospy包又存在自己的依賴項:
      $ rospack depends1 rospy
      genpy
      roscpp
      rosgraph
      rosgraph_msgs
      roslib
      std_msgs
      
    3. 全部依賴
      使用rospack depends命令可以查看全部依賴項
      $ rospack depends begginner_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
      
  7. 定制包信息
    可以通過定制package.xml的信息來定制包的元信息,關於更詳細信息請參考package.xml
    同時,CMakeLists.txt用於編譯包,該文件也可以定制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM