在机器人研究中,我们希望机器人能够按照我们的预想在空间中运动,这自然就需要表达机器人部件或其机构本身的位置和姿态。为了定义和运用表达位姿的数学量,我们必须定义坐标系并给出其表达规则。
文章目录
1、概述
我们既定有这样一个体系,即存在一个世界坐标系,我们定义的位姿都是参照这个世界坐标系或者由世界坐标系定义的笛卡尔坐标系。
2、位置、姿态
如何定量描述机器人的位姿。注意这里“位姿”,包含了位置和姿态。我们一个一个来看。
2.1 位置
如果我们的机器人可以看做是在平面内运动,那么可以用两个坐标来描述它的位置: A = [ x , y ] T A=[x,y]^T A=[x,y]T
![](https://i-blog.csdnimg.cn/blog_migrate/c0ee82693c6cda4ffa16646257474603.png)
相应的,如果它在三维空间中,我们就可以用三个空间坐标来表示,如下图中,我们可以这样表达 : A P = [ x , y , z ] T :^AP=[x,y,z]^T :AP=[x,y,z]T
![](https://i-blog.csdnimg.cn/blog_migrate/1b61d272258c86228fe301ec756d3649.png)
2.2 姿态
姿态的表达比点的位置要复杂。二维情况下,其姿态可以只用一个旋转角 θ \theta θ表达。三维情况下,姿态的表达方式则有多种。常见的如欧拉角、四元数、旋转矩阵等。
有了位置和姿态,我们就可以描述一个坐标系。进一步,还能描述坐标系间的变换关系。常见的问题如:我们知道世界坐标中的某个点,但是我们需要求这个点相对于机器人的位置,这时,就需要先得到机器人坐标系相对于世界坐标系的坐标值,再根据机器人位姿转换到机器人坐标系中。
2.2.1 二维姿态
二维情况下,其姿态可以只用一个旋转角 θ \theta θ表达。首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/35ec3d615174a30604641c757c4e84cb.png)
如上图 v v v 绕 原点旋转θ °,到达 v ′ v' v′,假设 v v v的坐标是(x, y) ,那么可以推导出 v ′ v' v′点的坐标(x’, y’)(设v的长度为r,与x轴的夹角为 ϕ \phi ϕ )
那么根据几何关系我们能够得到:
x = r cos ϕ y = r sin ϕ x = r\cos\phi \\ y = r\sin\phi x=rcosϕy=rsinϕ
x ′ = r cos ( θ + ϕ ) y ′ = r sin ( θ + ϕ ) x' = r\cos(\theta+\phi) \\ y' = r\sin(\theta + \phi) x′=rcos(θ+ϕ)y′=rsin(θ+ϕ)
对下面两条进行三角函数展开我们可以得到:
x ′ = r cos θ cos ϕ − r sin θ sin ϕ y ′ = r sin θ cos ϕ + r cos θ sin ϕ x' = r\cos\theta \cos\phi - r \sin\theta \sin\phi \\ y' = r\sin\theta \cos\phi + r\cos\theta\sin\phi x′=rcosθcosϕ−rsinθsinϕ