ROS学習ノート3(ROS Packageを作成)

11514 ワード

文書ディレクトリ
  • 1 catkin Packageは何からなっていますか?
  • 2 catkinワークスペースのpackages
  • 3 catkin package
  • を作成
  • 4 setupファイル
  • をコンパイルしてリフレッシュする
  • 5 package依存
  • 5.1第一依存項
  • 5.2間接依存
  • 6カスタムパッケージ
  • 6.1カスタムpackages.xml
  • 6.2カスタムCMakeLists.txt

  • 1 catkin Packageは何で構成されていますか?
    次の3つの条件を満たすと、1つのpackageはcatkin packageとみなされます.
  • は、catkin規格に適合するpackage.xmlファイルを含む.
  • このファイルには、パッケージの主な情報が含まれています.

  • はcatkinを使用するCMakeLists.txtファイルを含む.
  • metapackageである場合、関連するCMakeListsを参照する必要がある.txtファイル.

  • 各packageには独自の独立したフォルダがあります.
  • これは、ネストされたpackagesがなく、複数のpackagesが同じディレクトリを共有していないことを意味します.


  • 最も簡単なpackageには、次のような構造があるはずです.
    my_package/
      CMakeLists.txt
      package.xml
    

    2 catkinワークスペースでのpackages
    標準的なワークスペースは次のようになります.
    workspace_folder/        --     
      src/                   --        
        CMakeLists.txt       -- catkin    CMake  
        package_1/
          CMakeLists.txt     -- package_1 CMakeLists.txt
          package.xml        -- package_1     manifest
        ...
        package_n/
          CMakeLists.txt     -- package_n CMakeLists.txt
          package.xml        -- package_n     manifest
    

    3 catkin packageを作成するcatkin_creat_pkgコマンドを使用してcatkin packageを作成します.
    #           
    $ cd ~/catkin_ws/src
    
    catkin_creat_pkgコマンドを使用して、std_msgsroscppおよびrospyに依存するbeginner_tutorials packageを作成します.
    $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
    
    catkin_create_pkgコマンドの標準フォーマットは次のとおりです.
    # catkin_create_pkg  [depend1] [depend2] [depend3]
    
    treeコマンドを使用して、次のディレクトリ構造を表示します.
    └── beginner_tutorials
        ├── CMakeLists.txt
        ├── include
        │   └── beginner_tutorials
        ├── package.xml
        └── src
    

    4 setupファイルをコンパイルしてリフレッシュするcatkin_wsディレクトリに切り替えてコンパイル:
    $ cd ~/catkin_ws
    $ catkin_make
    
    lsを使用して現在のフォルダを表示すると、2つ以上のフォルダが見つかりました.
    build  devel  src
    

    最後にros環境にこのワークスペースを追加します.
    $ source ~/catkin_ws/devel/setup.bash
    

    5 package依存
    5.1第一依存項目catkin_creat_pkgコマンドを使用すると、第1の依存関係が発生しました.
    $ rospack depends1 beginner_tutorials 
    

    3つの依存関係があります.
    roscpp
    rospy
    std_msgs
    

    これらの依存はpackage.xmlファイルに保存されます.
    $ roscd beginner_tutorials
    $ cat package.xml
    

    検出:
    <package format="2">
    ...
      <buildtool_depend>catkinbuildtool_depend>
      <build_depend>roscppbuild_depend>
      <build_depend>rospybuild_depend>
      <build_depend>std_msgsbuild_depend>
    ...
    package>
    

    5.2間接依存
    依存パケット自体も他のパケットに依存するものがあります.例えばrospyには多くの依存があります.
    $ rospack depends1 rospy
    

    検出:
    genpy
    roscpp
    rosgraph
    rosgraph_msgs
    roslib
    std_msgs
    

    rospackは、すべてのネスト依存項目をリストできます.
    lk@Mibook:~$ rospack depends beginner_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
    

    6カスタムパッケージ
    6.1カスタムpackages.xml
    不要なコンテンツを削除するには、次の手順に従います.
       1 
       2 <package format="2">
       3   <name>beginner_tutorialsname>
       4   <version>0.1.0version>
       5   <description>The beginner_tutorials packagedescription>
       6 
       7   <maintainer email="[email protected]">Your Namemaintainer>
       8   <license>BSDlicense>
       9   <url type="website">http://wiki.ros.org/beginner_tutorialsurl>
      10   <author email="[email protected]">Jane Doeauthor>
      11 
      12   <buildtool_depend>catkinbuildtool_depend>
      13 
      14   <build_depend>roscppbuild_depend>
      15   <build_depend>rospybuild_depend>
      16   <build_depend>std_msgsbuild_depend>
      17 
      18   <exec_depend>roscppexec_depend>
      19   <exec_depend>rospyexec_depend>
      20   <exec_depend>std_msgsexec_depend>
      21 
      22 package>
    

    6.2カスタムCMakeLists.txt
    最初にcatkin_creat_pkgを使用したCMakeList.txtは、後のrosコードによってコンパイルされて上書きされます.
    参照先:http://wiki.ros.org/ROS/Tutorials/CreatingPackage