ROS std_msgs消息包
基本概述
std_msgs
是 ROS(Robot Operating System)的一个核心消息包,包含了一系列基本的消息类型,这些类型用于节点之间的标准通信。std_msgs
中的消息类型设计得非常简单,以便用作更复杂消息的构建块或用于简单的数据传输。以下是一些 std_msgs
中定义的消息类型和它们的用途:
基本数据类型
- Bool: 表示布尔值,即
True
或False
。 - Byte: 表示一个字节,用于传输原始数据。
- Char: 表示一个字符。
- String: 表示一个字符串。
- Int8, Int16, Int32, Int64: 表示有符号整数。
- UInt8, UInt16, UInt32, UInt64: 表示无符号整数。
- Float32, Float64: 表示浮点数,分别为单精度和双精度。
复合数据类型
- MultiArrayDimension: 描述多维数组的维度。
- MultiArrayLayout: 用于描述多维数组中数据的布局。
- Empty: 空消息,通常用作不携带数据的信号。
数组类型
- Int8MultiArray, Int16MultiArray, Int32MultiArray, Int64MultiArray: 有符号整数的数组。
- UInt8MultiArray, UInt16MultiArray, UInt32MultiArray, UInt64MultiArray: 无符号整数的数组。
- Float32MultiArray, Float64MultiArray: 浮点数的数组。
其他类型
- ColorRGBA: 用于表示颜色的消息,包含红、绿、蓝和透明度值。
- Time: 表示时间点的消息。
- Duration: 表示时间间隔的消息。
- Header: 包含时间戳和坐标帧信息的标准消息头,通常用于复合消息的一部分。
示例使用
以下是如何在 ROS C++ 节点中发布和订阅 std_msgs/String
类型的消息的例子:
#include <ros/ros.h>
#include <std_msgs/String.h>
// 回调函数处理接收到的字符串消息
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "listener");
ros::NodeHandle n;
// 订阅 chatter 话题
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
// 发布 chatter 话题
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
std_msgs::String msg;
msg.data = "hello world";
chatter_pub.publish(msg);
ros::spin();
return 0;
}
在这个例子中,我们创建了一个订阅者来接收 std_msgs/String
类型的消息,并创建了一个发布者来发送 std_msgs/String
消息。这显示了 std_msgs
包在 ROS 中用于基本通信的典型用法。
这张图展示的是ROS(Robot Operating System)中的std_msgs
包,它是common_msgs
的一部分。std_msgs
包含了一系列标准的消息类型,这些类型用于基本通信,并在ROS的众多包中广泛使用。以下是std_msgs
包含的消息类型的详细解释和分类:
基础类型
- Bool:表示布尔值,通常用于状态标志。
- Byte:表示一个字节的数据。
- Char:表示一个字符。
- String:表示文本字符串。
- Int8, Int16, Int32, Int64:表示不同大小的有符号整数。
- UInt8, UInt16, UInt32, UInt64:表示不同大小的无符号整数。
- Float32, Float64:表示单精度和双精度浮点数。
- Empty:表示一个空消息,通常用于作为一个简单的信号或触发器。
复合类型
- ByteMultiArray:表示一个字节的多维数组。
- Int8MultiArray, Int16MultiArray, Int32MultiArray, Int64MultiArray:表示不同大小的有符号整数的多维数组。
- UInt8MultiArray, UInt16MultiArray, UInt32MultiArray, UInt64MultiArray:表示不同大小的无符号整数的多维数组。
- Float32MultiArray, Float64MultiArray:表示单精度和双精度浮点数的多维数组。
颜色类型
- ColorRGBA:表示红、绿、蓝和透明度通道的颜色信息。
时间类型
- Duration:表示时间间隔。
- Time:表示特定时间点。
高级类型
- Header:常用作消息的一部分,包含时间戳和坐标帧ID,用于跟踪消息的来源和时间。
- MultiArrayDimension:描述多维数组的每个维度。
- MultiArrayLayout:描述多维数组中数据的布局。
一部分,包含时间戳和坐标帧ID,用于跟踪消息的来源和时间。
- MultiArrayDimension:描述多维数组的每个维度。
- MultiArrayLayout:描述多维数组中数据的布局。
std_msgs
的消息类型通常用作更复杂消息的构建块,或者用于节点之间简单的信息传递。例如,String
类型可用于传递文本信息,而Header
类型通常用于传递时间戳和坐标帧信息,以便跟踪不同传感器数据的来源和同步。