创建ROS消息和服务后,package.xml和CMakeLists.txt对应要修改的地方
- package.xml
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
作用:确保msg/srv文件被转换为其他语言的源代码(如C++)。在构建时需要“message_generation”,运行时需要“message_runtime”
示例:
<?xml version="1.0"?>
<package>
<name>add_two_ints</name>
<version>0.0.0</version>
<description>The add_two_ints package</description>
<maintainer email="pi@todo.todo">pi</maintainer>
<license>TODO</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>message_generation</build_depend>
<run_depend>roscpp</run_depend>
<run_depend>std_msgs</run_depend>
<run_depend>message_runtime</run_depend>
</package>
- CMakeLists.txt
find_package()——添加对message_generation的依赖(”Despite its name, message_generation works for both msg and srv.”)
add_message_files()——添加msg文件
add_service_files()——添加srv文件
generate_message()——所依赖的含有.msg文件的package(一定要在catkin_package()之前)
catkin_package()——设置运行依赖
add_dependencies()——确保自定义消息的头文件在使用之前已经被生成(catkin并行编译所有的package)
示例:
cmake_minimum_required(VERSION 2.8.3)
project(add_two_ints)
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
message_generation
)
add_message_files(
FILES
Num.msg
)
add_service_files(
FILES
AddTwoInts.srv
)
generate_messages(
DEPENDENCIES
std_msgs
)
catkin_package(
CATKIN_DEPENDS roscpp std_msgs message_runtime
)
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(add_two_ints_server src/add_two_ints_server.cpp)
target_link_libraries(add_two_ints_server ${catkin_LIBRARIES})
add_dependencies(add_two_ints_server add_two_ints_gencpp)
add_executable(add_two_ints_client src/add_two_ints_client.cpp)
target_link_libraries(add_two_ints_client ${catkin_LIBRARIES})
add_dependencies(add_two_ints_client add_two_ints_gencpp)
- rosmsg/rossrv 查看消息/服务