登录论坛

查看完整版本 : Matlab矩阵平移和旋转多次


poster
2019-12-10, 20:41
我有一张森林中的单个树的地图,它们存储为矩阵中的x,y点。我称它为fixedPositions。它是笛卡尔坐标系,并且(0,0)是原点。

给定速度和航向,即.5 m / s和60度(相当于手表的2点钟),我如何旋转x,y点,以便新原点的中心为(.5cos(60 ),. 5sin(60))和60度现在位于屏幕顶部吗?

然后,如果我要给您另一个方向和速度,即0度和2m / s,它应该从最后一点开始计算,而不是原始的fixedPositions原点。

我浪费了我的一天试图解决这个问题。我希望我学习矩阵代数,但我茫然。

我尝试做cos(30),甚至那些计算都不正确,一个小时后我意识到这是弧度。



回答:

我将尝试以下操作:在您的对象中,您已经有一个属性heading 。现在,您添加另一个属性currentPosition (可能将它们重命名为heading_robot和currentPos_robot )。 heading以及currentPosition应该始终相对于原始坐标系

然后添加一个新方法updatePosition ,该方法将(newHeading, distance)作为输入。此方法将同时更新heading和currentPosition ,方法是先将newHeading中的角度添加到newHeading中的角度, heading通过添加[distance*cos(heading),distance*sin(heading)]更新currentPosition (检查是否有罪兆) / cos here!)到currentPosition的旧值。

最后,让景观的视图(即apparentPositions ),运行bsxfun(@minus,fixedPositions,currentPosition)到原点移动到机器人在这一刻,然后乘用二维旋转矩阵使用角度存储在heading 。



更多&回答... (https://stackoverflow.com/questions/2769494)