前言
求解求解工业机械人运动学逆解有几何法,解析法,迭代法,最近恰好学了数值分析地牛顿迭代法,机器人学老师又恰好布置了一个求解逆解的题,便用上了。
牛顿迭代法(Newton’s Method)
一元函数
根据泰勒公式,我们有 f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + O ( x − x 0 ) 2 f(x)=f(x0)+f'(x0)(x-x0)+O(x-x0)^2 f(x)=f(x0)+f′(x0)(x−x0)+O(x−x0)2
忽略二次项,得到 f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) f(x)=f(x0)+f'(x0)(x-x0) f(x)=f(x0)+f′(x0)(x−x0)
从而得到求解公式: x = x 0 + x=x0+ x=x0+ f ( x ) − f ( x 0 ) f ′ ( x 0 ) \frac{f(x)-f(x0)}{f'(x0)} f′(x0)f(x)−f(x0)
从而得到迭代公式: X n = X n − 1 + X_n=X_{n-1}+ Xn=Xn−1+ f ( X n ) − f ( X n − 1 ) f ′ ( X n − 1 ) \frac{f(X_n)-f(X_{n-1)}}{f'(X_{n-1})} f′(Xn−1)f(Xn)−f(Xn−1)
eg:求解 2 = x 2 + s i n ( x ) 2=x^2+sin(x) 2=x2+sin(x)的一个解
有: f ( x ) = x 2 + s i n ( x ) − 2 f(x)=x^2+sin(x)-2 f(x)=x2+sin(x)−2
有: f ′ ( x ) = 2 x + c o s ( x ) f'(x)=2x+cos(x) f′(x)=2x+cos(x)
得到迭代公式: X n = X n − 1 − X_n=X_{n-1}- Xn=Xn−1− x n − 1 2 + s i n ( X n − 1 ) − 2 2 X n − 1 + c o s ( X n − 1 ) \frac{x_{n-1}^2+sin(X_{n-1})-2}{2X_{n-1}+cos(X_{n-1})} 2Xn−1+cos(Xn−1)xn−12+sin(Xn−1)−2
取迭代初值为5,则有迭代值表:
| Times | Error | value |
|---|---|---|
| 1 | 6.441741912821939 | 2.8566900265847246 |
| 2 | 1.2523689832054252 | 1.5015868288822545 |
| 3 | 0.08519497331557391 | 1.0939581456934517 |
| 4 | 0.000578368794295514 | 1.0617713087284162 |
| 5 | 2.7647929723428888e-08 | 1.0615497852219482 |
| 6 | 0.0 | 1.0615497746313838 |
可见迭代到第6次的时候,误差已经小于计算机的最大精度,则可以得到解 x = 1.0615497746313838 x= 1.0615497746313838 x=1.0615497746313838
所以对于一元函数的迭代法:
1.给出迭代公式: X n = X n − 1 − X_n=X_{n-1}- Xn=Xn−1− f ( X n − 1 ) f ′ ( X n − 1 ) \frac{f(X_{n-1)}}{f'(X_{n-1})} f′(Xn−1)f(Xn−1)
2.给出初值 X 0 X_0 X0
关于一元函数牛顿迭代法的收敛性等知识,参见:Web
多元向量函数
类似于一元函数,多元函数的求解的迭代公式也是:
X n = X n − 1 − f ( X n − 1 ) ∗ f ′ ( X n − 1 ) − 1 X_n=X_{n-1}-f(X_{n-1})*{f'(X_{n-1})}^{-1} Xn=Xn−1−f(Xn−1)∗f′(Xn−1)−1
只是这里面的因变量 X X X是一个m维的列向量
而对于多元向量函数的求导,可以得到一个jacobi矩阵 f ′ ( X n − 1 ) {f'(X_{n-1})} f′(Xn−1)
之后求逆得到 f ′ ( X n − 1 ) − 1 {f'(X_{n-1})}^{-1} f′(Xn−1)−1
例如:对于 F ( u , v , w ) = ( f 1 , f 2 , f 3 ) F (u,v,w) = (f_1, f_2, f_3) F(u,v,w)=(f1,f2,f3)
其导数为:
{ ∂ f 1 / ∂ u ∂ f 1 / ∂ v ∂ f 1 / ∂ w ∂ f 2 / ∂ u ∂ f 2 / ∂ v ∂ f 2 / ∂ w ∂ f 3 / ∂ u ∂ f 3 / ∂ v ∂ f 3 / ∂ w } \begin{Bmatrix}∂f_1/∂u & ∂f_1/∂v & ∂f_1/∂w\\\ ∂f_2/∂u & ∂f_2/∂v & ∂f_2/∂w \\ ∂f_3/∂u & ∂f_3/∂v & ∂f_3/∂w\end{Bmatrix} ⎩⎨⎧∂f1/∂u ∂f2/∂

本文深入探讨了牛顿迭代法在解决工业机械人运动学逆解问题中的应用,包括一元和多元函数的迭代公式,以及如何通过Python程序实现迭代求解,特别针对一个4R机械手的实例进行详细分析。
最低0.47元/天 解锁文章
3658





