当前位置:网站首页>ROS custom message and use
ROS custom message and use
2022-07-28 17:49:00 【Zhang Feifei~】
Ros How to customize message reference Previous blogs , Here we mainly introduce how to call messages under the same package or between different packages .
1、 Call the custom message package under the same package
(1) Call under the same package msg It refers to the current package ( Such as autoware_msgs) Established msg Folder , And in the current package devel The corresponding message definition header file is generated under . stay src Only the header file needs to be included when calling in the file , It can be used in the form of a class .
#include"autoware_msgs/DetectedObjectArray.h"
void chatterCallback(const autoware_msgs::DetectedObjectArray &msg){
//..........
}
2、 Call the message package in the same workspace
For example, let ob_reader Package call autoware_msgs Package messages .
(1) modify ob_reader Of package.xml file
# Add the following two lines
<build_depend>autoware_msgs</build_depend>
<exec_depend>autoware_msgs</exec_depend>
(2) modify ob_reader Of CmakeList file
find_package(catkin REQUIRED COMPONENTS
autoware_msgs
)
include_directories(include ${
catkin_INCLUDE_DIRS})
whole cmakelist The documents are as follows , Make reference
cmake_minimum_required(VERSION 3.0.2)
project(ob_reader)
## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
geometry_msgs
roscpp
rospy
sensor_msgs
std_msgs
autoware_msgs
)
include_directories(include ${
catkin_INCLUDE_DIRS})
## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)
## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()
################################################
## Declare ROS messages, services and actions ##
################################################
## To declare and build messages, services or actions from within this
## package, follow these steps:
## * Let MSG_DEP_SET be the set of packages whose message types you use in
## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
## * In the file package.xml:
## * add a build_depend tag for "message_generation"
## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
## * If MSG_DEP_SET isn't empty the following dependency has been pulled in
## but can be declared for certainty nonetheless:
## * add a exec_depend tag for "message_runtime"
## * In this file (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 ...)
## Generate messages in the 'msg' folder
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
#)
## Generate services in the 'srv' folder
# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )
## Generate actions in the 'action' folder
# add_action_files(
# FILES
# Action1.action
# Action2.action
# )
## Generate added messages and services with any dependencies listed here
# generate_messages(
# DEPENDENCIES
# geometry_msgs sensor_msgs std_msgs
# )
################################################
## Declare ROS dynamic reconfigure parameters ##
################################################
## To declare and build dynamic reconfigure parameters within this
## package, follow these steps:
## * In the file package.xml:
## * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
## * 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
## Generate dynamic reconfigure parameters in the 'cfg' folder
# generate_dynamic_reconfigure_options(
# cfg/DynReconf1.cfg
# cfg/DynReconf2.cfg
# )
###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if your package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
# catkin_package(
# # INCLUDE_DIRS include
# # LIBRARIES ob_reader
# CATKIN_DEPENDS geometry_msgs roscpp rospy sensor_msgs std_msgs message_runtime
# # DEPENDS system_lib
# )
###########
## Build ##
###########
## Specify additional locations of header files
## Your package locations should be listed before other locations
# include_directories(
# include
# ${
catkin_INCLUDE_DIRS}
# )
## Declare a C++ library
# add_library(${PROJECT_NAME}
# src/${PROJECT_NAME}/ob_reader.cpp
# )
## Add cmake target dependencies of the library
## as an example, code may need to be generated before libraries
## either from message generation or dynamic reconfigure
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executable(${PROJECT_NAME}_node src/ob_reader_node.cpp)
## Rename C++ executable without prefix
## The above recommended prefix causes long target names, the following renames the
## target back to the shorter version for ease of user use
## 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 "")
## Add cmake target dependencies of the executable
## same as for the library above
# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node
# ${
catkin_LIBRARIES}
# )
add_executable(ob_reader1 src/reader.cpp)
target_link_libraries(ob_reader1 ${
catkin_LIBRARIES})
add_dependencies(ob_reader1 ${
${
PROJECT_NAME}_EXPORTED_TARGETS} ${
catkin_EXPORTED_TARGETS})
#############
## Install ##
#############
# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# 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 ##
#############
## Add gtest based cpp test target and link libraries
# catkin_add_gtest(${PROJECT_NAME}-test test/test_ob_reader.cpp)
# if(TARGET ${PROJECT_NAME}-test)
# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
# endif()
## Add folders to be run by python nosetests
# catkin_add_nosetests(test)
边栏推荐
猜你喜欢

有奖征文 | 2022 云原生编程挑战赛征稿活动开启!
![[unity] how to play sprite Jiugongge?](/img/cf/112a048c0bb335d058806dd5604d10.png)
[unity] how to play sprite Jiugongge?

Encapsulation, inheritance, polymorphism

abstract、static、final

Collection集合

Complete MySQL interview questions (updated in succession)

Generation and use of dynamic link library (error summary)

【p5.js学习笔记】局部变量(let)与全局变量(var)声明

Three ways to dynamically call WebService.Net

都说软件测试是IT行业最差的,是这样的吗?
随机推荐
Collection collection
Alibaba P8 architect talk: seven knowledge points (including interview questions) that must be learned well to become an architect
点云处理---二叉树
DOS command Daquan basic command + network common command
零基础软件测试培训可靠吗?
C#中virtual(虚方法)的理解以及和abstract(抽象方法)的区别
小白如何零基础学习软件测试?
Openpcd安装过程记录
编译原理学习笔记3(自上而下语法分析)
R language drawing / drawing / drawing 2
[C language note sharing] character function and string function (recommended Collection)
1.2-进制转换
完全未接触过软件测试的人,培训两个月就可以上岗,真的现实吗?
MySQL and idea connection
How to install PS filter plug-in
软件测试的培训机构靠谱吗
点云处理--voxel filter
方法、函数
如何使用IDEA将项目上传到码云
软件测试真有网上说的那么好吗?