编译
在package内建立msg文件夹,在其中加入.msg 编写,配置camakelist和xml文件。
- 其中cmakelist要做如下添加
find_package(catkin REQUIRED COMPONENTS
std_msgs
message_generation
roscpp
)
...
catkin_package(
...
CATKIN_DEPENDS roscpp std_msgs message_runtime
...
)
add_message_files(
FILES
MyMessage.msg// 这一次加入的msg
)
generate_messages(
DEPENDENCIES
std_msgs
)
多讲下复合嵌套msg的添加办法:
比如我要用一个自定义类型的数组在msg中:TrajectoryPoint[] data_array
则我使用如下结构,依次嵌套:
同时
add_message_files(
FILES
TracetoFollow.msg
PathPoint.msg
TrajectoryPoint.msg
)
- 同时2xml文件也要为msg编译作出修改,加入
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
然后就可以编译了。
如何使用message呢,见下
ros python 版
catkin_workspace/devel/lib/python3/dist-packages/
- msg成功编译后可以在工作空间devel/lib/python3/dist-packages/ 下找到相关的py文件,可以直接使用from import 引入对应类型。
ros cpp 版本
catkin_workspace/devel/include/noa_msgs
- msg成功编译后,可以在工作空间/devel/include/下找到对应的头文件,直接引用来使用
注意
- 在ros的cmakelist include_directories中要配置对应工作空间的地址
- 如果想在vscode中成功链接头文件而不报错,应在c_cpp_properties 文件的includePath 添加以上地址