详细介绍ROS中geometry_msgs/Polygon
详细介绍ROS中geometry_msgs/Polygon
geometry_msgs/Polygon是ROS (Robot Operating System) 中用于表示多边形的消息类型。Polygon消息中的点定义了一个二维多边形的轮廓,所有的点必须处于同一平面。
下面是Polygon消息类型的详细定义:1
2
3# This represents a polygon in 2D space
Point32[] points
这个消息类型包含一个Point32类型的数组,每一个Point32类型的消息代表一个在二维空间中的点。这些点按照他们在数组中的顺序连接,形成多边形的轮廓。
下面是如何在C++中使用geometry_msgs/Polygon的一个简单例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41#include <ros/ros.h>
#include <geometry_msgs/Polygon.h>
int main(int argc, char **argv)
{
ros::init(argc, argv, "polygon_publisher");
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<geometry_msgs::Polygon>("polygon_topic", 1);
ros::Rate rate(10);
while (ros::ok())
{
geometry_msgs::Polygon polygon;
geometry_msgs::Point32 point;
point.x = 1.0;
point.y = 2.0;
point.z = 0.0;
polygon.points.push_back(point);
point.x = 2.0;
point.y = 3.0;
point.z = 0.0;
polygon.points.push_back(point);
point.x = 3.0;
point.y = 1.0;
point.z = 0.0;
polygon.points.push_back(point);
pub.publish(polygon);
ros::spinOnce();
rate.sleep();
}
return 0;
}
这个程序首先初始化ROS,然后创建一个发布Polygon消息的发布者。在主循环中,我们创建一个Polygon消息,并添加三个点,形成一个三角形。然后我们发布这个消息,并让ROS处理任何待处理的回调,然后等待一段时间,以保持我们的发布速率。这个程序会一直运行,直到收到中断。