Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:41   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab矩阵平移和旋转多次

我有一张森林中的单个树的地图,它们存储为矩阵中的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 。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 05:16


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.