在模拟机器人的局部坐标系中获取一个点
Posted
技术标签:
【中文标题】在模拟机器人的局部坐标系中获取一个点【英文标题】:Getting a point in the local frame of a simulated robot 【发布时间】:2017-09-09 23:53:31 【问题描述】:这是针对我目前正在研究的机器人模拟。 如果您查看提供的图表,您将看到两个坐标框架。 框架 A、框架 B;你会发现一个点p。
坐标系A是世界坐标系,坐标系B是我的机器人的局部坐标系(x-按照惯例,轴是机器人的前进方向)。机器人可以在世界各地旋转和行驶。
我这里的目标是找到点p,用帧A表示,然后用帧B重新表示强>。
我用来实现它的标准方程式如下:
point_in_frameB_x = point_in_frameA_x * cos(theta) - point_in_frameA_y * sin(theta) + t_x
point_in_frameB_y = point_in_frameA_x * sin(theta) + point_in_frameA_y * cos(theta) + t_y
其中t_x
和t_y
构成了帧B 到帧A 的平移变换。
但是,这里有一些复杂情况使我无法获得想要的结果:
由于机器人可以旋转(其默认姿势是朝向北的方向——并且旋转为 0 弧度),我不知道如何定义 t_x
和 t_y
在上面的代码。因为如果机器人的航向方向(即 x 轴)平行于框架 A 的 y 轴,则平移向量将不同于机器人航向方向平行于坐标系的情况。帧 A 的 x 轴。
您会注意到从帧 A 到帧 B 的转换并不简单。我使用这个约定只是因为我正在实现这个模拟器,它使用这个约定作为它的图像帧。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
【参考方案1】:关注right hand rule 分配坐标系。在您的任一帧 A 或帧 B 的图片轴必须更改。
【讨论】:
问题是,我如何确定 t_x, t_y 以改变坐标系?尤其是当我旋转的时候?我已经在使用同构坐标(从我发布的伪代码中可以清楚地看出)。 要确定机器人的位姿(t_x, t_y, theta)吗?你是如何移动机器人的?以上是关于在模拟机器人的局部坐标系中获取一个点的主要内容,如果未能解决你的问题,请参考以下文章