ROS学习记录④:msg消息和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对应类型
booluint8_tbool
int8int8_tint
int16int16_tint
int32int32_tint
int64int64_tint,long
uint8uint8_tint
uint16uint16_tint
uint32uint32_tint
uint64uint64_tint,long
float32floatfloat
float64floatfloat
stringstd:stringstr,bytes
timeros:Timerospy.Time
durationros::Durationrospy.Duration

8.4 自定义消息

8.4.1 创建 package

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

在package包下新建msg文件夹

8.4.2 创建.msg文件

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

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

string name1
int64 name2

新建 hello2.msg,内容如下:

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种添加如下配置:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

8.4.4 配置CMakeLists.txt

find_package配置

在find_package添加message_generation,结果如下:

find_package(catkin REQUIRED COMPONENTS
	roscpp
	rosmsg
	rospy
	message_generation
)

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

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

8.4.5 编译项目

cd 工作空间
catkin_make

踩坑

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

sudo rm -rf build/
sudo rm -rf devel/
catkin_make

8.5 校验

rosmsg show hello_msgs/hello

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

九 srv消息

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arcann

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值