如果Point和Vector3几何消息完全相同,它们之间有什么区别?

时间:2017-06-22 15:03:04

标签: ros

我对ROS很新,但我正在操纵由geometry_msgs/Pointgeometry_msgs/Vector3消息组成的自定义消息。当我打印出消息时,我注意到PointVector3都有相同的3个属性(xyz)让我好奇,因为它似乎多余......对吗?

在进一步挖掘源代码后,结果是PointVector3完全相同。它们都由float xfloat yfloat z组成。

但在阅读docs后,似乎这两条消息之间存在差异。文档提到如果用户想要应用翻译,则应该使用Point,而Vector3应该仅用于表示方向(并且我猜的是幅度?)。

由于两条消息的定义完全相同,我估计是否可以将翻译应用于Point我还可以将翻译应用于Vector3。我在PointVector3之间没有看到他们名字之间的区别吗?

1 个答案:

答案 0 :(得分:2)

即使PointVector3具有相同的内容,tf2库也会检查邮件的类型并以不同的方式对其进行操作,具体取决于它是PointVector3

最终,这是开发人员决定强调Point(一个无法旋转的空间点)和一个Vector3(一个没有确定的方向)之间的概念区别在太空中的位置,但可以旋转)。

开发人员不必进行这种区分,实际上许多物理库使用单个Vector3数据类型来处理方向,点,速度等。

与颜色(红色,绿色,蓝色)和日期(年,月,日)以及可以表示为Vector3的许多其他事物一样,最终归结为需要将人工区别划分为使代码更易于用户和其他程序员理解。