ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Can't include message of other package in Catkin

asked 2014-04-27 01:12:29 -0500

pkohout gravatar image

updated 2022-01-22 16:16:26 -0500

Evgeny gravatar image

Hi,

we are trying to port our packages to catkin, but we have problems include messages from the other package. The package map_merger need the message pointFromOther robot from adhoc_communication, but he does not find it.

CMakeList.txt from map_merger:

cmake_minimum_required(VERSION 2.8.3)
project(map_merger)

## 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
  adhoc_communication
  nav_msgs
  roscpp
  message_generation
)

## 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 and a run_depend tag for each package in MSG_DEP_SET
##   * If MSG_DEP_SET isn't empty the following dependencies might have been
##     pulled in transitively but can be declared for certainty nonetheless:
##     * add a build_depend tag for "message_generation"
##     * add a run_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(
   DIRECTORY srv
   FILES
   transformPoint.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
   adhoc_communication
   std_msgs  # Or other packages containing msgs
)

###################################
## 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 you 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 map_merger
#  CATKIN_DEPENDS adhoc_communication roscpp
   CATKIN_DEPENDS message_runtime   adhoc_communication
#  DEPENDS system_lib
)

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

## Specify additional locations of header files
## Your package locations should be listed before other locations
# include_directories(include)
include_directories(
  ${catkin_INCLUDE_DIRS}
)

## Declare a cpp library
# add_library(map_merger
#   src/${PROJECT_NAME}/map_merger.cpp
# )

## Declare a cpp executable
# add_executable(map_merger_node src/map_merger_node.cpp)
find_package(OpenCV REQUIRED)
add_executable(map_merge_node src/main.cpp src/mapmerger.cpp src/mapmerger.h src/mapstitch.h src/mapstitch.cpp src/updateentry.cpp src/updateentry.h src/updatemanager.cpp src/updatemanager.h )
target_link_libraries(map_merge_node ${OpenCV_LIBS} ${catkin_LIBRARIES} )
## Add cmake target dependencies of the executable/library
## as an example, message headers may need to be generated before nodes
# add_dependencies(map_merger_node map_merger_generate_messages_cpp)
 add_dependencies(map_merger_node adhoc_communication_generate_messages_cpp)

## Specify ...
(more)
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
3

answered 2014-04-27 03:27:08 -0500

First things first: The adhoc_communication has to be catkinized, otherwise what you want will not work (as catkin packages can only depend on catkin packages, not rosbuild ones).

Assuming the above is the case, it probably is easiest to look at a somewhat similar example and make sure both your package containing the msg definitions and the one using them are not missing any required entries in both their package.xml and CMakeLists.txt files. One example I randomly found ist kobuki_msgs and kobuki_keyop with the first package providing the msg definition and the second one using it.

edit flag offensive delete link more

Comments

Question Tools

2 followers

Stats

Asked: 2014-04-27 01:12:29 -0500

Seen: 5,946 times

Last updated: Apr 27 '14