创建、编译ros package

使用catkin创建新的package

CatkinROS的一个官方的编译构建系统,使用catkin可以创建和编译ros包。

一个catkin package必须包含以下几个内容:

Package.xml 提供包的属性信息;

CmakeLists.txt 包含相关性样板文件;

拥有自己独立的文件夹(工作空间)

创建一个文件夹作为工作空间:  mkdir  ~/catkin_ws

在工作空间中创建一个文件夹存放源文件: mkdir src

当工作空间中包含多个包的时候,形成的文件结构如下:

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 package语法格式:

catkin_create_pkg [depend1] [depend2] [depend3]

例如:catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

在工作空间中编译catkin package

$ cd ~/catkin_ws     

$ catkin_make

将工作空间添加至ROS环境

source devel/setup.bash  

避免每次打开terminal都要重新source,可以修改~/.bashrc文件,将上述语句添加至最后一行即可。

查看包的直接依赖关系

rospack depends1 package     将得到再创建时添加的直接依赖关系。

查看包的所有依赖关系(包括直接以来和间接依赖)

rospack depends package

 

详解package.xml 文件



beginner_tutorials
0.1.0
The beginner_tutorials package
 Your Name
 BSD
http://wiki.ros.org/beginner_tutorials
Jane Doe
 catkin  roscpp   rospy  std_msgs   roscpp
 rospy   std_msgs

详解CMakeLists.txt文件(除去注释后的内容)

cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)
 
## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs genmsg)
 
## Declare ROS messages and services
add_message_files(DIRECTORY msg FILES Num.msg)
add_service_files(DIRECTORY srv FILES AddTwoInts.srv)
 
## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)
 
## Declare a catkin package
catkin_package()

在包中添加添加新的节点

在catkin_ws/src中新建节点文件夹test_node,并在test_node下新建src文件夹存放源码文件test_node.cpp,内容暂且不管。

修改CMakeList.txt文件,末尾添加

include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(test_node src/test_node.cpp)
target_link_libraries(test_node ${catkin_LIBRARIES})

调用该节点

rosrun 【packname】 【nodename】

rosrun  beginner_tutorials test_node

你可能感兴趣的:(ROS)