ROS小车——创建ROS功能包(6)【ROS保姆注释教学】


前言

本系列博客参照《ROS机器人编程原理与应用》一书,搭载平台为冰达ROS小车,注释详细,持续更新,点个关注吧!


1.创建一个 bingda_practice包

先切换到工作空间目录下,cd catkin_ws/src,必须在src目录下。
通过ROS的工具catkin_create_pkg bingda_practice创建一个 bingda_practice包。
在这里插入图片描述

2.package.xml文件注释

打开vs,查看package.xml,package.xml是使用XML格式的ASCII文本,可以任何编译器打开。
package.xml的意思是:构建系统将根据其拥有的package.xml文件来重新组织ROS程序包,一个兼容的package.xml文件具有一个特定的结构,可以命名程序包,并列出依赖项。

以下代码中的两个<>中间的<什么什么什么>都是注释!

在这里插入图片描述

package.xml代码注释如下:

<?xml version="1.0"?>
<package format="2">
  <name>bingda_parctices</name>//包的名称
  <version>0.0.0</version>//版本号,比如修改为1.0
  <description>The bingda_parctices package</description>//功能包功能的描述

  <!-- 需要一个维护人员标签,允许多个,每个标签一人 -->
  <!-- Example:  -->
  <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  <maintainer email="bingda@todo.todo">bingda</maintainer>//功能包开源后可以在这里留下联系方式


  <!-- 需要一个许可证标签,允许多个,每个标签一个许可 -->
  <!-- 常用许可证字符串: -->
  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  <license>TODO</license>//开源后可以选择开源的协议,例如BSD, MIT, Boost Software License等


  <!-- Url标记是可选的,但允许有多个,每个标记一个 -->
  <!-- 可选属性类型可以是: website, bugtracker, or repository -->
  <!-- Example: -->
  <!-- <url type="website">http://wiki.ros.org/bingda_parctices</url> -->


  <!-- 作者标签是可选的,允许多个,每个标签一个 -->
  <!-- 作者不必是维护者,但可以是 -->
  <!-- Example: -->
  <!-- <author email="jane.doe@example.com">Jane Doe</author> -->
  
  <!--  *depend 标记用于指定依赖项 -->
  <!-- 依赖项可以是catkin包或系统依赖项 -->
  <!-- Examples: -->
  <!-- 将depend用作同时依赖于生成和执行的包的快捷方式 -->
  <!--   <depend>roscpp</depend> -->
  <!--   请注意,这相当于以下内容: -->
  <!--   <build_depend>roscpp</build_depend> -->
  <!--   <exec_depend>roscpp</exec_depend> -->
  <!-- 对编译时需要的包使用build_depend: -->
  <!--   <build_depend>message_generation</build_depend> -->
  <!-- 对需要的包使用build_export_depend,以便根据此包进行构建: -->
  <!--   <build_export_depend>message_generation</build_export_depend> -->
  <!-- 将buildtool_depend用于生成工具包: -->
  <!--   <buildtool_depend>catkin</buildtool_depend> -->
  <!-- 对运行时需要的包使用exec_depend: -->
  <!--   <exec_depend>message_runtime</exec_depend> -->
  <!-- 对仅用于测试的包使用test_depend: -->
  <!--   <test_depend>gtest</test_depend> -->
  <!-- 将doc_depend用于仅用于生成文档的包: -->
  <!--   <doc_depend>doxygen</doc_depend> -->
  <buildtool_depend>catkin</buildtool_depend>//编译工具所需要的依赖


  <!-- 导出标记包含其他未指定的标记 -->
  <export>
    <!-- 其他工具可以请求更多信息,请放在此处 -->

  </export>
</package>

3.CMakeLists.txt文件注释

再看CMakeLists.txt文件,
以下代码的
##什么什么
的 什么什么 都是注释
CMakeLists.txt代码注如下:

cmake_minimum_required(VERSION 3.0.2)
project(bingda_parctices)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## 查找catkin宏和库
## 如果使用了类似find_package(catkin REQUIRED COMPONENTS xyz)的组件列表,也可以找到其他catkin包
find_package(catkin REQUIRED)

## 通过CMake的约定可以找到系统依赖关系
# find_package(Boost REQUIRED COMPONENTS system)


## 如果软件包有setup.py,请对此进行注释。此宏确保安装其中声明的模块和全局脚本请参见http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()

################################################
## 声明ROS消息、服务和操作 ##
################################################

## 要在此包中声明和构建消息、服务或操作,请执行以下步骤:
## * 让MSG_DEP_SET是您在消息/服务/操作中使用的消息类型的一组包(例如,std_msgs、actionlib_msgs…)。
## * 在文件package.xml中:
##   * 为“messagegeneration”添加一个builde_pend标记
##   * 在MSG_DEP_SET中为每个包添加build_depend和exec_depend标记
##   * 如果MSG_DEP_SET不为空,则已拉入以下依赖项,但仍可以确定地声明:
##     * add a exec_depend tag for "message_runtime"
## * 在本文档(CMakeLists.txt):
##   * add "message_generation" and every package in MSG_DEP_SET to
##     find_package(catkin REQUIRED COMPONENTS ...)
##   * add "message_runtime" and every package in MSG_DEP_SET to
##     catkin_package(CATKIN_DEPENDS ...)
##   * uncomment the add_*_files sections below as needed
##     and list every .msg/.srv/.action file to be processed
##   * uncomment the generate_messages entry below
##   * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
//上面几句不好翻译,自己悟吧

## 在“msg”文件夹中生成消息
# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )

## 在“srv”文件夹中生成服务
# add_service_files(
#   FILES
#   Service1.srv
#   Service2.srv
# )

## 在“action”文件夹中生成操作
# add_action_files(
#   FILES
#   Action1.action
#   Action2.action
# )

## 使用此处列出的任何依赖项生成添加的消息和服务
# generate_messages(
#   DEPENDENCIES
#   std_msgs  # Or other packages containing msgs
# )

################################################
## 声明ROS动态重新配置参数 ##
################################################

## 要在此包中声明和构建动态重新配置参数,请执行以下步骤:
## * 在文件package.xml中:
##   * 为“dynamicreconfigure”添加build_depend和exec_depend标记
## * In this file (CMakeLists.txt):
##   * add "dynamic_reconfigure" to
##     find_package(catkin REQUIRED COMPONENTS ...)
##   * uncomment the "generate_dynamic_reconfigure_options" section below
##     and list every .cfg file to be processed

## 在“cfg”文件夹中生成动态重新配置参数
# generate_dynamic_reconfigure_options(
#   cfg/DynReconf1.cfg
#   cfg/DynReconf2.cfg
# )

###################################
## catkin特定配置 ##
###################################
## catkin_package宏为您的包生成cmake配置文件
## 声明要传递给相关项目的内容
## INCLUDE_DIRS: 如果您的包包含头文件,请取消注释
## LIBRARIES: 在此项目中创建的依赖项目也需要的库
## CATKIN_DEPENDS:依赖于catkin_packages的项目也需要
## DEPENDS: 依赖项目也需要的此项目的系统依赖项
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES bingda_parctices
#  CATKIN_DEPENDS other_catkin_pkg
#  DEPENDS system_lib
)

###########
## Build ##
###########

## 指定头文件的其他位置
## 您的包位置应在其他位置之前列出
include_directories(
# include
# ${catkin_INCLUDE_DIRS}
)

## Declare a C++ library
# add_library(${PROJECT_NAME}
#   src/${PROJECT_NAME}/bingda_parctices.cpp
# )

## 添加库的cmake目标依赖项
## 例如,代码可能需要在库之前生成
## 从消息生成或动态重新配置
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Declare a C++ executable
## 使用catkin_make,所有包都在单个CMake上下文中构建
## 推荐的前缀确保跨包的目标名称不会发生冲突
# add_executable(${PROJECT_NAME}_node src/bingda_parctices_node.cpp)

## Rename C++ executable without prefix
## 上面推荐的前缀会导致目标名称过长,为了便于用户使用,下面将目标重命名回较短的版本
## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")

## 添加可执行文件的cmake目标依赖项
## same as for the library above
# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## 指定要链接库或可执行目标的库
# target_link_libraries(${PROJECT_NAME}_node
#   ${catkin_LIBRARIES}
# )

#############
## Install ##
#############

# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html

## 将可执行脚本(Python等)标记为安装,而不是设置.py,你可以选择目的地
# catkin_install_python(PROGRAMS
#   scripts/my_python_script
#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Mark executables for installation
## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html
# install(TARGETS ${PROJECT_NAME}_node
#   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Mark libraries for installation
## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html
# install(TARGETS ${PROJECT_NAME}
#   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
#   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
#   RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
# )

## Mark cpp header files for installation
# install(DIRECTORY include/${PROJECT_NAME}/
#   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
#   FILES_MATCHING PATTERN "*.h"
#   PATTERN ".svn" EXCLUDE
# )

## Mark other files for installation (e.g. launch and bag files, etc.)
# install(FILES
#   # myfile1
#   # myfile2
#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
# )

#############
## Testing ##
#############

## 添加基于gtest的cpp测试目标和链接库
# catkin_add_gtest(${PROJECT_NAME}-test test/test_bingda_parctices.cpp)
# if(TARGET ${PROJECT_NAME}-test)
#   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
# endif()

## 添加要由python nosetests运行的文件夹
# catkin_add_nosetests(test)

在catkin_ws终端运行catkin_make进行编译。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值