详细介绍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处理任何待处理的回调,然后等待一段时间,以保持我们的发布速率。这个程序会一直运行,直到收到中断。


详细介绍ROS中geometry_msgs/Polygon
https://qiangsun89.github.io/2023/05/19/详细介绍ROS中geometry-msgs-Polygon/
作者
Qiang Sun
发布于
2023年5月19日
许可协议