当前位置: 首页 > 工具软件 > msg.js > 使用案例 >

msg消息及自定义msg消息

王泓
2023-12-01

msg消息及自定义msg消息

1.1 基本概念

  • msg消息 是ROS topic通讯节点间传递的内容。
  • msg消息描述的是业务间传递数据,也可以理解为业务间数据的抽象化。

1.2 常见Msg消息

1.2.1 std消息
  • std消息属于基本数据类型消息,和python类似,描述的是数字,字符串,布尔类型等
std_msgs/Boolstd_msgs/Bytestd_msgs/ByteMultiArray
std_msgs/Charstd_msgs/ColorRGBAstd_msgs/Duration
std_msgs/Emptystd_msgs/Float32std_msgs/Float32MultiArray
std_msgs/Float64std_msgs/Float64MultiArraystd_msgs/Header
std_msgs/Int16std_msgs/Int16MultiArraystd_msgs/Int32
std_msgs/Int32MultiArraystd_msgs/Int64std_msgs/Int64MultiArray
std_msgs/Int8std_msgs/Int8MultiArraystd_msgs/MultiArrayDimension
std_msgs/MultiArrayLayoutstd_msgs/Stringstd_msgs/Time
std_msgs/UInt16std_msgs/UInt16MultiArraystd_msgs/UInt32
std_msgs/UInt32MultiArraystd_msgs/UInt64std_msgs/UInt64MultiArray
std_msgs/UInt8std_msgs/UInt8MultiArray
1.2.2 geometry消息
  • 空间数据描述
geometry_msgs/Accelgeometry_msgs/AccelStamped
geometry_msgs/AccelWithCovariancegeometry_msgs/AccelWithCovarianceStamped
geometry_msgs/Inertiageometry_msgs/InertiaStamped
geometry_msgs/Pointgeometry_msgs/Point32
geometry_msgs/PointStampedgeometry_msgs/Polygon
geometry_msgs/PolygonStampedgeometry_msgs/Pose
geometry_msgs/Pose2Dgeometry_msgs/PoseArray
geometry_msgs/PoseStampedgeometry_msgs/PoseWithCovariance
geometry_msgs/PoseWithCovarianceStampedgeometry_msgs/Quaternion
geometry_msgs/QuaternionStampedgeometry_msgs/Transform
geometry_msgs/TransformStampedgeometry_msgs/Twist
geometry_msgs/TwistStampedgeometry_msgs/TwistWithCovariance
geometry_msgs/TwistWithCovarianceStampedgeometry_msgs/Vector3
geometry_msgs/Vector3Stampedgeometry_msgs/Wrench
geometry_msgs/WrenchStamped
1.2.3 sensor消息
  • 传感器消息
sensor_msgs/BatteryStatesensor_msgs/CameraInfosensor_msgs/ChannelFloat32
sensor_msgs/CompressedImagesensor_msgs/FluidPressuresensor_msgs/Illuminance
sensor_msgs/Imagesensor_msgs/Imusensor_msgs/JointState
sensor_msgs/Joysensor_msgs/JoyFeedbacksensor_msgs/JoyFeedbackArray
sensor_msgs/LaserEchosensor_msgs/LaserScansensor_msgs/MagneticField
sensor_msgs/MultiDOFJointStatesensor_msgs/MultiEchoLaserScansensor_msgs/NavSatFix
sensor_msgs/NavSatStatussensor_msgs/PointCloudsensor_msgs/PointCloud2
sensor_msgs/PointFieldsensor_msgs/Rangesensor_msgs/RegionOfInterest
sensor_msgs/RelativeHumiditysensor_msgs/Temperaturesensor_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文件。

 类似资料: