在模拟机器人的局部坐标系中获取一个点

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_xt_y 构成了帧B 到帧A 的平移变换。

但是,这里有一些复杂情况使我无法获得想要的结果:

由于机器人可以旋转(其默认姿势是朝向北的方向——并且旋转为 0 弧度),我不知道如何定义 t_xt_y 在上面的代码。因为如果机器人的航向方向(即 x 轴)平行于框架 A 的 y 轴,则平移向量将不同于机器人航向方向平行于坐标系的情况。帧 A 的 x 轴。

您会注意到从帧 A 到帧 B 的转换并不简单。我使用这个约定只是因为我正在实现这个模拟器,它使用这个约定作为它的图像帧。

任何帮助将不胜感激。提前致谢。

【问题讨论】:

【参考方案1】:

关注right hand rule 分配坐标系。在您的任一帧 A 或帧 B 的图片轴必须更改。

【讨论】:

问题是,我如何确定 t_x, t_y 以改变坐标系?尤其是当我旋转的时候?我已经在使用同构坐标(从我发布的伪代码中可以清楚地看出)。 要确定机器人的位姿(t_x, t_y, theta)吗?你是如何移动机器人的?

以上是关于在模拟机器人的局部坐标系中获取一个点的主要内容,如果未能解决你的问题,请参考以下文章

目标定位基于matlab扩展卡尔曼滤波器多机器人定位含Matlab源码 2327期

工业机器人工具坐标系(TCF)标定的六点法原理

手机小游戏辅助程序的实现

关于等高线绘制和全平面坐标节点生成

相机socket机器人移动实例

机器人奇异点