繁体   English   中英

Webots中从亲戚处获取激光雷达点云全局坐标的问题

[英]Question about getting global coordinates of lidar point cloud from relative in Webots

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

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

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

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

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

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 的真实机器人坐标。最后您将获得所需点的全局坐标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM