转自
消息和消息类型
是 64位浮点型 数据。一般来说,一个复合域是由简单的一个或者多个子域组合而成,其中的每一个子域可能是另一个复合域或者独立的域,而且它们一般也都由基本数据类型组成。同样的思想也出现在 C++以及其他面向对象的编程语言中,即对象的数据成员可能是其他对象。
此外,上述复合域本身也可以作为消息类型。例如,一个具有消息类型 geometry_msgs/Vecotr3 的话题是完全符合语法的假如利用命令 rosmsg show geometry_msgs/Vecotr3 则类型的详情是:
sensor_msgs/PointCloud
则类型的详情是:
这个消息包含3 d点的集合,加上可选的额外的每一点信息,在给定的帧头每个Point32应解释为一个3 d点。也许表示激光雷达数据的类型rosmsg show sensor_msgs/LaserScan会更好理解,但是这里不再熬述。
理解消息类型的命名:
和ROS里其他的程序一样,每条消息类型都属于一个特定的包。消息类型名总会包含一个斜杠"/",斜杠前面的名字是包含它的包,
例如 geometry_msgs/Twist
功能包名:geometry_msgs 类型名称:Twist 消息类型:geometry_msgs/Twist
这种命名方式的好处是把包的名字包含在消息类型名里能避免命名冲突。
举个例子比如:geometry_msgs/Pose 和 turtlesim/Pose 是有区别的消息类型,它们包含了不同的(但概念上是类似的)数据。这也有助于猜测它的含义。例如,消息类型 ModelState 单独出现可能会让人产生迷惑,但是以 gazebo/ModelState 的形式出现后,就会指明这个消息类型是 Gazebo 仿真器中的一部分,而且很有可能包含了这个仿真器中某个模型的状态信息。
Point 点
float64 x ,float64 y,float64 z
Point32 float32 x,float32 y,float32 z 一般使用Point,大规模点云使用Point32
(1)std_msgs/Header header 包含坐标系和时间戳信息
(2)geometry_msgs/Point point 点
Polygon多边形
geometry_msgs/Point32[] points
(1)std_msgs/Header header
(2)geometry_msgs/Polygon polygon
(1)geometry_msgs/Point position 位置
(2)geometry_msgs/Quaternion orientation 姿态,即方向
Pose2D 2d平面的位姿float64 x,float64 y,float64 theta
PoseArray 位姿序列(1)std_msgs/Header header(2)geometry_msgs/Pose[] poses
PoseStamped 位姿(1)std_msgs/Header header (2)geometry_msgs/Pose pose
PoseWithCovariance (1)geometry_msgs/Pose pose 即(x, y, z, X 旋转, Y旋转, Z旋转)(2)float64[36] covariance协方差
PoseWithCovarianceStamped(1)std_msgs/Header header (2)geometry_msgs/PoseWithCovariance pose
Quaternion 四元数旋转float64 x,float64 y,float64 z,float64 w
(1)geometry_msgs/Vector3 translation 平移向量
(2)geometry_msgs/Quaternionrotation 旋转向量
(1)geometry_msgs/Vector3 linear 线速度
(2)geometry_msgs/Vector3 angular角速度
Vector3 向量float64 x,float64 y,float64 z
(1)geometry_msgs/Vector3 force 力
(2)geometry_msgs/Vector3 torque 扭矩