研究机器人的运动,离不开三维空间。三维空间由3个轴组成,一个空间点位置便可以由三个坐标确定,但机器人作为刚体不光有位置,还有自身的姿态。
![](https://i-blog.csdnimg.cn/blog_migrate/df314bd50c63ccef0aeda3b14f6f3027.png)
基本概念
点、向量、坐标系
为了描述三维空间中的点 ( a 1 , a 2 , a 3 ) T (a_1,a_2,a_3)^T (a1,a2,a3)T,我们在该空间中选定一组基 ( e 1 , e 2 , e 3 ) (e_1,e_2,e_3) (e1,e2,e3),然后可以找一向量 a a a满足:
a = [ e 1 , e 2 , e 3 ] [ a 1 , a 2 , a 3 ] T a=[e_1,e_2,e_3][a_1,a_2,a_3]^T a=[e1,e2,e3][a1,a2,a3]T
则点可由该向量在该基下的坐标来描述。
基又被称为坐标系,作为描述的载体存在,三维空间可以有很多坐标系,拿机器人问题来说,不同的传感器都有自身的坐标系,则同一点在不同坐标系下将有不同的描述。坐标系又可分为左手系、右手系,第三个轴方向相反,使用的时候要特别注意。
注:此处基使用行向量,坐标使用列向量。
内积、外积、反对称矩阵
a ⋅ b = a T b = ∣ a ∣ ∣ b ∣ c o s < a , b > a \cdot b=a^Tb=|a||b|cos<a,b> a⋅b=aTb=∣a∣∣b∣cos<a,b>
a × b = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] b = a ∧ b , a = [ a 1 , a 2 , a 3 ] T , ∣ a × b ∣ = ∣ a ∣ ∣ b ∣ s i n < a , b > a \times b=\begin{bmatrix} 0 & -a_3 & a_2 \\\\ a_3 & 0 & -a_1 \\\\ -a_2 & a_1 & 0 \end{bmatrix}b=a^ \wedge b,a=[a_1,a_2,a_3]^T,|a \times b|=|a||b|sin<a,b> a×b=⎣ ⎡0a3−a2−a30a1a2−a10⎦ ⎤b=a∧b,a=[a1,a2,a3]T,∣a×b∣=∣a∣∣b∣sin<a,b>
若 n × n n \times n n×n 阶矩阵 A A A 满足 A T = − A A^T=-A AT=−A ,则 A A A 为反对称矩阵。考虑矩阵的重复元素,可将反对称矩阵与向量对应起来,可表示为 a ∧ = A a^\wedge=A a∧=A, A ∨ = a A^\vee=a A∨=a 。
欧式变换
-
旋转
为了统一描述问题,通常我们需要选择一个共同的坐标系,将其它坐标系的数据变换到该坐标系。
[ e 1 ′ , e 2 ′ , e 3 ′ ] [ a 1 ′ , a 2 ′ , a 3 ′ ] T = [ e 1 , e 2 , e 3 ] [ a 1 , a 2 , a 3 ] T [e'_1,e'_2,e'_3][a'_1,a'_2,a'_3]^T=[e_1,e_2,e_3][a_1,a_2,a_3]^T [e1′,e2′,e3′][a1′,a2′,a3′]T=[e1,e2,e3][a1,a2,a3]T
左乘 [ e 1 ′ , e 2 ′ , e 3 ′ ] T [e'_1,e'_2,e'_3]^T [e1′,e2′,e3′]T,由内积性质得到单位矩阵,可得:
[ a 1 ′ , a 2 ′ , a 3 ′ ] T = R [ a 1 , a 2 , a 3 ] T [a'_1,a'_2,a'_3]^T=R[a_1,a_2,a_3]^T [a1′,a2′,a3′]T=R[a1,a2,a3]TR R R为旋转矩阵,行列式为1的正交矩阵( R R T = I , ∣ R ∣ = 1 RR^T=I,|R|=1 RRT=I,∣R∣=1),其中 R T = R − 1 R^T=R^{-1} RT=R−1,描述了相反的旋转。两个旋转矩阵相乘仍是旋转矩阵。
R z , ψ = [ c o s ψ − s i n ψ 0 s i n ψ c o s ψ 0 0 0 1 ] , R y , θ = [ c o s θ 0 s i n θ 0 1 0