前言
近期在做关于3R码垛机械臂的运动学解算时,在计算过程中用到了四象限反正切函数(也就是atan2),发现他与atan的使用上是有不同的,所以本文就重点记录两者的区别与使用。
前序内容
- 机构自由度的计算
- 齐次变换与齐次变换矩阵的计算
- 机器人正运动学——学习笔记
- 机器人正运动学实例——PUMA560机械臂(附Matlab机器人工具箱建模代码)
- 机器人逆运动学——以六自由度机器人为例(详解、易懂,附全部Matlab代码)
一. 区别
首先先说区别是什么:
① atan2有两个输入值,而atan只需要一个输入值即可;
② atan2可判断角度象限:因为atan2有两个输入值,所以通过判断这两个变量符号,即可判断出角度所在象限;atan无法判断象限。
③ 输出范围不同:atan2能判断象限,其输出取值范围为(-,
];而atan输出取值范围为(-
/2,
/2)
二. 具体说明
1. atan2(y,x)
四象限反正切函数(即atan2函数)的输入值为x和y,其输出其实就是原点(0,0)到点(x,y)的方位角,就是这两点连线与X轴的夹角。【其取值范围为(-,
]】
注意:函数atan2(y,x)中参数的顺序是倒置的,atan2(y,x)计算的值相当于点(x,y)的角度值。

比如上图的点(-2,-2),与原点连接后与X轴的夹角是-135°;而(-2,2)对应的解是135°,这样就能更直观理解了。
再进一步我们可以用matlab来输出这个结果,看看到底输出是不是这样的:


2. atan(c)
反正切函数atan是一种反三角函数,也写作,这里c=y/x,但这并不是两个参数,而是代表了y/x这一个数值,这里也能解释为什么atan不能分辨象限:因为
,因此输入的都是同一个数值。
比如(-3,-3)和(3,3)这两个,利用matlab计算如下:


输入时是一个参数,但是也可以这样理解:让(x,y)与原点连线,然后这条线的延长线与X轴的夹角就是对应的角度(在一、四象限内):

以上就是两个函数的使用区别了。
本文用于共同学习,如有不对还请批评指正~
7450

被折叠的 条评论
为什么被折叠?



