前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS学习记录④:msg消息和srv消息

ROS学习记录④:msg消息和srv消息

作者头像
小黑鸭
发布2020-11-24 10:55:32
1.9K0
发布2020-11-24 10:55:32
举报

msg消息和srv消息

  • 八、msg消息
    • 8.1 基本概念
    • 8.2 常见Msg消息
      • 8.2.1 std消息
      • 8.2.2 geometry消息
      • 8.2.3 sensor消息
    • 8.3 ROS消息类型对照表
    • 8.4 自定义消息
      • 8.4.1 创建 package
      • 8.4.2 创建`.msg`文件
      • 8.4.3 配置package.xml
      • 8.4.4 配置CMakeLists.txt
      • 8.4.5 编译项目
    • 8.5 校验
  • 九 srv消息

八、msg消息

8.1 基本概念

msg消息 是ROS topic通讯节点间传递的内容。

msg消息描述的是业务间传递数据,也可以理解为业务间数据的抽象化。

8.2 常见Msg消息

8.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

8.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

8.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

8.3 ROS消息类型对照表

msg类型

C++对应类型

Python对应类型

bool

uint8_t

bool

int8

int8_t

int

int16

int16_t

int

int32

int32_t

int

int64

int64_t

int,long

uint8

uint8_t

int

uint16

uint16_t

int

uint32

uint32_t

int

uint64

uint64_t

int,long

float32

float

float

float64

float

float

string

std:string

str,bytes

time

ros:Time

rospy.Time

duration

ros::Duration

rospy.Duration

8.4 自定义消息

8.4.1 创建 package

包名取名一般为:业务名_msgs

在package包下新建msg文件夹

8.4.2 创建.msg文件

在msg文件夹下创建 .msg 文件,.msg 文件就是自定义消息文件,用来描述消息格式的。

如新建 hello1.msg ,内容如下:

代码语言:javascript
复制
string name1
int64 name2

新建 hello2.msg,内容如下:

代码语言:javascript
复制
string name3
hello1 name4
std_msgs/String name5
hello1[] name4

其中 hello1.msghello2.msg 在同一个包下,可以直接 hello1 name4 ;而引用标准库,格式如下 包/类型 名std_msgs/String name5 ;加中括号 [] 表示数组,含有多个数据

8.4.3 配置package.xml

在package.xml种添加如下配置:

代码语言:javascript
复制
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

8.4.4 配置CMakeLists.txt

find_package配置

在find_package添加message_generation,结果如下:

代码语言:javascript
复制
find_package(catkin REQUIRED COMPONENTS
	roscpp
	rosmsg
	rospy
	message_generation
)

根据需求添加其他包,如 geometry_msgs

add_message_file配置

添加add_message_file,结果如下:

代码语言:javascript
复制
add_message_files(
	FILES
	hello1.msg
	hello2.msg
)

这里的 hello.msg 要和你创建的msg文件名称一致,且必须时在msg目录下,否则编译会出现问题

generation_msg配置

添加generation_msg,结果如下:

代码语言:javascript
复制
generate_messages(
	DEPENDENCIES
	std_msgs
)

这个配置的作用是添加生成消息的依赖,默认的时候要添加 std_msgs,根据需求添加 geometry_msgs 等其他包

catkin_package配置

修改catkin_package,结果如下:

代码语言:javascript
复制
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo_msg
   CATKIN_DEPENDS roscpp rosmsg rospy message_runtime
#  DEPENDS system_lib
)

为catkin编译提供了依赖message_runtime

8.4.5 编译项目

代码语言:javascript
复制
cd 工作空间
catkin_make

踩坑

如果编译报错,删除 develbuild 再重新编译

代码语言:javascript
复制
sudo rm -rf build/
sudo rm -rf devel/
catkin_make

8.5 校验

代码语言:javascript
复制
rosmsg show hello_msgs/hello

或者来到 devellib/python2.7/dist-package 目录下,查看是否生成和package名称相同的目录,以及目录内是否生成对应的py文件。

九 srv消息

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • msg消息和srv消息
  • 八、msg消息
    • 8.1 基本概念
      • 8.2 常见Msg消息
        • 8.2.1 std消息
        • 8.2.2 geometry消息
        • 8.2.3 sensor消息
      • 8.3 ROS消息类型对照表
        • 8.4 自定义消息
          • 8.4.1 创建 package
          • 8.4.2 创建.msg文件
          • 8.4.3 配置package.xml
          • 8.4.4 配置CMakeLists.txt
          • 8.4.5 编译项目
        • 8.5 校验
        • 九 srv消息
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档