首先注意一点,在ROS 2 dashing发行版里面,只有C++的功能包可以自定义消息类型;也就是说,在创建包的时候,只有选择 ament_cmake方式创建的包才可以自定义消息,但是python类型的功能包可以导入由C++类型包创建的自定义消息。
创建自定义消息功能包
- 进入工作空间
cd ~/ros_ws/src
- 创建功能包
ros2 pkg create --build-type ament_cmake test_msgs
由于这个功能包只是生成自定义消息类型,所以我一般都是不在这里添加任何算法,所以这个包里面也没有可执行文件,因此不需要指定节点名字。
创建msg文件
cd test_msgs
mkdir msg
gedit TestMsg.msg
TestMsg.msg文件内容如下:
float32[] x
float32[] y
注意事项:
- TestMsg.msg:文件名一定要以大写开头;
- 文件中的变量一定全部都要小写,不能有大写出现;同时也不要出现特殊符号
- 在C++调用该头文件时候,会以下划线区分大写,例如上面的文件编译得到后,在c++调用时如下:
#include “test_msgs/msg/test_msg.hpp”
- vector的定义是在数据类型后面