【问题标题】:Question about getting global coordinates of lidar point cloud from relative in WebotsWebots中从亲戚处获取激光雷达点云全局坐标的问题
【发布时间】:2022-12-01 09:48:46
【问题描述】:

我需要使用 Webots 中的移动机器人使用激光雷达对周围环境进行自定义映射。我用什么:

  • 用于获取机器人位置的 GPS。
  • 获取方向机器人的指南针。
  • 用于获取周围环境信息的激光雷达。

也许熟悉 Webots 的人可以展示基本代码示例或解释其背后的数学原理,或者我在 Webots 中错过了一种方法?

我对激光雷达的相对点进行了平移和旋转,当机器人在平面上时效果很好(2D 旋转)。 但是无论我尝试了多少,当机器人稍微倾斜(3D 旋转)时,我都无法弄清楚如何从点云相对点获得准确的全局坐标。

我的猜测是它应该使用空间变换矩阵,但我不确定如何在旋转矩阵中使用 Webots Compass 值.

【问题讨论】:

  • 请提供足够的代码,以便其他人可以更好地理解或重现问题。

标签: python compass coordinate-transformation lidar webots


【解决方案1】:

StackExchange 得到一些有用的信息后。 Python 解决方案的基本示例:

from scipy.spatial.transform import Rotation as Rotation

RobotPoint = gps.getValues()
STR = Rotation.from_quat(InertialUnit.getQuaternion())
for RelativeCloudPoint in lidar.getPointCloud():
  Point2 = STR.apply(RelativeCloudPoint)
  GlobalCloudPoint = RelativeCloudPoint + RobotPoint

使用 InternalUnit 获取空间旋转矩阵的四元数。然后将其应用于相对坐标。之后添加来自 GPS 的真实机器人坐标。最后,您将获得所需点的全局坐标。

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2020-11-08
    • 2014-05-18
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多