msg消息及自定义msg消息

news/2025/2/21 20:03:13

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文件。


http://www.niftyadmin.cn/n/1363256.html

相关文章

当你输入一个网址的时候,实际会发生什么?

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/作为一个软件开发者&#xff0c;你一定会对网络应用如何工作有一个完整的层次化的认知&#xff0c;同样这里也包括这些应用所用到的技术&#xff1a;像浏览器&#xff0c;HTTP&#xff0c;HTML&…

PCL代码学习01-pcd_write

PCL代码学习01-pcd_write pcd_write.cpp #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h>int main(int argc, char **argv) {pcl::PointCloud<pcl::PointXYZ> cloud;// Fill in the cloud datacloud.width 5;cloud.hei…

云计算的区别

云计算&#xff08;Cloud Computing&#xff09;&#xff0c;是一种基于互联网的计算方式&#xff0c;通过这种方式&#xff0c;共享的软硬件资源和信息可以按需求提供给计算机和其他设备。 &#xff08;引自wikipedia&#xff09; 具体实现的方式有 IaaS(Infrastructure-as-a-…

PCL代码学习02-matrix_transform

PCL代码学习02-matrix_transform #include <iostream>#include <pcl/io/pcd_io.h> #include <pcl/io/ply_io.h> #include <pcl/point_cloud.h> #include <pcl/console/parse.h> #include <pcl/common/transforms.h> // 点云坐标变换 #inc…

修改状态栏字体颜色

1.在plist文件中添加 View controller-based status bar appearance 字段 设为NO&#xff1b; [UIApplication sharedApplication].statusBarStyle UIStatusBarStyleLightContent;转载于:https://www.cnblogs.com/llhlj/p/5066555.html

PCL代码学习03-kdtree_search

PCL代码学习03-kdtree_search /** Description: https://www.cnblogs.com/li-yao7758258/p/6437440.html* Author: HCQ* Company(School): UCAS* Email: 1756260160qq.com* Date: 2020-10-08 21:46:40* LastEditTime: 2020-10-27 16:03:16* FilePath: /pcl-learning/02kdtree/…

ER模型

一、什么是ER模型 实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段&#xff0c;形成一个独立于机器。独立于DBMS的ER图模型。通常将它简称为ER图&#xff0c;对应地可把用ER图描绘的数据模型称为ER模型。二、为什么出现ER模型 假设把…

delphi WebBrowser的使用方法详解(五)-难点释疑

http://blog.csdn.net/xtfnpgy/article/details/15809635 网页代码&#xff1a;<SELECT idfy οnchangeTouchRefresh(1) namefy> <OPTION selected value15>每頁顯示15筆</OPTION> <OPTION value30>每頁顯示30筆</OPTION> <OPTION value60>…