外观
踩坑Robotics Stack Exchange2016-06-01
MATLAB避障算法用atan导致角度象限错误
本文由 AI 根据公开内容整理,可能有误,请以原文为准:Mobile robot algorithm implementation error(Robotics Stack Exchange #9770)
状态:已解决
问题
在MATLAB中复现移动机器人避障论文并计划上真机,算法涉及圆形障碍物、锥形视野和滑模控制具体报错。回答指出可能因atan计算角度丢失象限信息,导致角度错误。
环境
Linux / ROS 机器人软件与控制通用开发环境
解决办法
- 检查代码中未解释变量和硬编码值,如
tk、kt,避免把应由程序选择的值固定为2。 - 在
ApplyRule10函数的辅助角计算处,将atan(vr_t(2)/vr_t(1))、atan(aux_1(2)/aux_1(1))、atan(aux_2(2)/aux_2(1))改为对应的atan2(y,x)形式。 - 原因是
atan(y/x)会把(-y)/x和y/(-x)都算成同一符号,丢失象限信息;atan2可正确处理y和x的符号。
原问题作者:Wobbler28;采纳答案作者:Chuck。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。
来源
本页事实对应的公开页面,以原文为准。