Creating a ROS Package


1.What makes up a catkin Package?

  • The simplest possible package might have a structure which looks like this:
    my_package/
    CMakeLists.txt
    package.xml
    

2.Packages in a catkin Workspace

  • The recommended method of working with catkin packages is using a catkin workspace, but you can also build catkin packages standalone. A trivial workspace might look like this:
    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

3.Creating a catkin Package

  1. First change to the source space directory of the catkin workspace you created in the Creating a Workspace for catkin tutorial:
    # You should have created this in the Creating a Workspace Tutorial
    $ cd ~/catkin_ws/src
    
  2. Now use the catkin_create_pkg script to create a new package called 'beginner_tutorials' which depends on std_msgs, roscpp, and rospy:
    $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
    
  3. catkin_create_pkg requires that you give it a package_name and optionally a list of dependencies on which that package depends:
    # This is an example, do not try to run this
    # catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
    

4.Building a catkin workspace and sourcing the setup file

  1. Now you need to build the packages in the catkin workspace:
    $ cd ~/catkin_ws
    $ catkin_make
    
  2. To add the workspace to your ROS environment you need to source the generated setup file:
    $ . ~/catkin_ws/devel/setup.bash
    

5.package dependencies

  1. First-order dependencies
    • When using catkin_create_pkg earlier, a few package dependencies were provided. These first-order dependencies can now be reviewed with the rospack tool.
      $ rospack depends1 beginner_tutorials
      
    • As you can see, rospack lists the same dependencies that were used as arguments when running catkin_create_pkg. These dependencies for a package are stored in the package.xml file:
      $ roscd beginner_tutorials
      $ cat package.xml
      
  2. Indirect dependencies

    • In many cases, a dependency will also have its own dependencies. For instance, rospy has other dependencies.

      $ rospack depends1 rospy
      
    • A package can have quite a few indirect dependencies. Luckily rospack can recursively determine all nested dependencies.

      $ 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
      

results matching ""

    No results matching ""