msg消息及自定义msg消息
1.1 基本概念
- msg消息 是ROS topic通讯节点间传递的内容。
- msg消息描述的是业务间传递数据,也可以理解为业务间数据的抽象化。
1.2 常见Msg消息
1.2.1 std消息
- std消息属于基本数据类型消息,和python类似,描述的是数字,字符串,布尔类型等
std_msgs/Bool | std_msgs/Byte | std_msgs/ByteMultiArray |
std_msgs/Char | std_msgs/ColorRGBA | std_msgs/Duration |
std_msgs/Empty | std_msgs/Float32 | std_msgs/Float32MultiArray |
std_msgs/Float64 | std_msgs/Float64MultiArray | std_msgs/Header |
std_msgs/Int16 | std_msgs/Int16MultiArray | std_msgs/Int32 |
std_msgs/Int32MultiArray | std_msgs/Int64 | std_msgs/Int64MultiArray |
std_msgs/Int8 | std_msgs/Int8MultiArray | std_msgs/MultiArrayDimension |
std_msgs/MultiArrayLayout | std_msgs/String | std_msgs/Time |
std_msgs/UInt16 | std_msgs/UInt16MultiArray | std_msgs/UInt32 |
std_msgs/UInt32MultiArray | std_msgs/UInt64 | std_msgs/UInt64MultiArray |
std_msgs/UInt8 | std_msgs/UInt8MultiArray |
1.2.2 geometry消息
- 空间数据描述
geometry_msgs/Accel | geometry_msgs/AccelStamped |
geometry_msgs/AccelWithCovariance | geometry_msgs/AccelWithCovarianceStamped |
geometry_msgs/Inertia | geometry_msgs/InertiaStamped |
geometry_msgs/Point | geometry_msgs/Point32 |
geometry_msgs/PointStamped | geometry_msgs/Polygon |
geometry_msgs/PolygonStamped | geometry_msgs/Pose |
geometry_msgs/Pose2D | geometry_msgs/PoseArray |
geometry_msgs/PoseStamped | geometry_msgs/PoseWithCovariance |
geometry_msgs/PoseWithCovarianceStamped | geometry_msgs/Quaternion |
geometry_msgs/QuaternionStamped | geometry_msgs/Transform |
geometry_msgs/TransformStamped | geometry_msgs/Twist |
geometry_msgs/TwistStamped | geometry_msgs/TwistWithCovariance |
geometry_msgs/TwistWithCovarianceStamped | geometry_msgs/Vector3 |
geometry_msgs/Vector3Stamped | geometry_msgs/Wrench |
geometry_msgs/WrenchStamped |
1.2.3 sensor消息
- 传感器消息
sensor_msgs/BatteryState | sensor_msgs/CameraInfo | sensor_msgs/ChannelFloat32 |
sensor_msgs/CompressedImage | sensor_msgs/FluidPressure | sensor_msgs/Illuminance |
sensor_msgs/Image | sensor_msgs/Imu | sensor_msgs/JointState |
sensor_msgs/Joy | sensor_msgs/JoyFeedback | sensor_msgs/JoyFeedbackArray |
sensor_msgs/LaserEcho | sensor_msgs/LaserScan | sensor_msgs/MagneticField |
sensor_msgs/MultiDOFJointState | sensor_msgs/MultiEchoLaserScan | sensor_msgs/NavSatFix |
sensor_msgs/NavSatStatus | sensor_msgs/PointCloud | sensor_msgs/PointCloud2 |
sensor_msgs/PointField | sensor_msgs/Range | sensor_msgs/RegionOfInterest |
sensor_msgs/RelativeHumidity | sensor_msgs/Temperature | sensor_msgs/TimeReference |
1.3 自定义消息
1.3.1 创建package
- 这里注意自定义的消息其实和我们创建package包是一样的,同样是使用catkin_create_pkg进行创建
catkin_create_pkg xxx_msgs
- 并在package包下新建msg文件夹
1.3.2 创建.msg文件
- 在msg文件夹下创建.msg文件,.msg文件就是自定义的消息文件,用来描述消息格式
string name1
int64 name2
- 新建 hello2.msg,内容如下:
string name3
hello1 name4
std_msgs/String name5
hello1[] name4
- 其中 hello1.msg 和 hello2.msg 在同一个包下,可以直接 hello1 name4 ;
- 而引用标准库,格式如下 包/类型 名 如 std_msgs/String name5 ;
加中括号 [] 表示数组,含有多个数据;
1.3.3 配置package.xml(对应上面CMakeLists.txt文件中的内容)
- 在package.xml种添加如下配置:
< build_depend>message_generation</ build_depend>
< exec_depend>message_runtime</ exec_depend>
1.3.4 配置CMakeLists.txt
find_package配置
- 在find_package添加message_generation,结果如下:
find_package(catkin REQUIRED COMPONENTS
roscpp
rosmsg
rospy
message_generation
)
add_message_file配置
- 添加add_message_file,结果如下:
add_message_files(
FILES
hello1.msg
hello2.msg
)
这里的 hello.msg 要和你创建的msg文件名称一致,且必须时在msg目录下,否则编译会出现问题
generation_msg配置
- 添加generation_msg,结果如下:
generate_messages(
DEPENDENCIES
std_msgs
)
这个配置的作用是添加生成消息的依赖,默认的时候要添加 std_msgs,根据需求添加 geometry_msgs 等其他包
catkin_package配置
- 修改catkin_package,结果如下:
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES demo_msg
CATKIN_DEPENDS roscpp rosmsg rospy message_runtime
# DEPENDS system_lib
)
为catkin编译提供了依赖message_runtime
1.3.5 编译项目
cd 工作空间
catkin_make
1.3.6 校验
rosmsg show hello_msgs/hello
或者来到 devel 的 lib/python2.7/dist-package 目录下,查看是否生成和package名称相同的目录,以及目录内是否生成对应的py文件。