Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有一张森林中的单个树的地图,它们存储为矩阵中的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 。 更多&回答... |
![]() |
![]() |