我对ROS很新,但我正在操纵由geometry_msgs/Point
和geometry_msgs/Vector3
消息组成的自定义消息。当我打印出消息时,我注意到Point
和Vector3
都有相同的3个属性(x
,y
和z
)让我好奇,因为它似乎多余......对吗?
在进一步挖掘源代码后,结果是Point
和Vector3
完全相同。它们都由float x
,float y
和float z
组成。
但在阅读docs后,似乎这两条消息之间存在差异。文档提到如果用户想要应用翻译,则应该使用Point,而Vector3应该仅用于表示方向(并且我猜的是幅度?)。
由于两条消息的定义完全相同,我估计是否可以将翻译应用于Point
我还可以将翻译应用于Vector3
。我在Point
和Vector3
之间没有看到他们名字之间的区别吗?
答案 0 :(得分:2)
即使Point
和Vector3
具有相同的内容,tf2
库也会检查邮件的类型并以不同的方式对其进行操作,具体取决于它是Point
或Vector3
。
最终,这是开发人员决定强调Point
(一个无法旋转的空间点)和一个Vector3
(一个没有确定的方向)之间的概念区别在太空中的位置,但可以旋转)。
开发人员不必进行这种区分,实际上许多物理库使用单个Vector3
数据类型来处理方向,点,速度等。
与颜色(红色,绿色,蓝色)和日期(年,月,日)以及可以表示为Vector3
的许多其他事物一样,最终归结为需要将人工区别划分为使代码更易于用户和其他程序员理解。