机器人学DH参数及利用matlab符号运算推导
引言
重新復習了一下機器人學DH參數,并且利用matlab符號運算進行了推導,驗證了公式。
- 引言
- 1.DH參數原理
- 2.Matlab符號運算驗證
1.DH參數原理
圖中的坐標系定義:
- 坐標系i{i}i的zzz軸ziz_izi?和關節軸線iii共線,指向任意規定。
- 坐標系i{i}i的xxx軸xix_ixi?和aia_iai?重合,由關節iii指向關節i+1i+1i+1,當ai=0a_i=0ai?=0,取xi=±zi+1×zix_i=±z_{i+1}\times z_ixi?=±zi+1?×zi?。
- 坐標系i{i}i的yyy軸yiy_iyi?按右手法則規定。
- 坐標系i{i}i的原點oio_ioi?取在xix_ixi?和ziz_izi?的交點上;當ziz_izi?和zi+z_{i+}zi+?相交時,原點取再兩軸交點上,當ziz_izi?和zi+z_{i+}zi+?平行時,原點取在使di+1=0d_{i+1}=0di+1?=0的地方。
利用連桿坐標系定義相應的連桿參數:
- aia_iai?=從ziz_izi?到zi+1z_{i+1}zi+1?沿xix_ixi?測量的距離(公垂線長度)
- αi\alpha_iαi?=從ziz_izi?到zi+1z_{i+1}zi+1?沿xix_ixi?旋轉的角度
- did_idi?=從xi?1x_{i-1}xi?1?到xix_{i}xi?沿ziz_izi?測量的距離
- θi\theta_iθi?=從xi?1x_{i-1}xi?1?到xix_{i}xi?沿ziz_izi?旋轉的角度
坐標系{i}\{i\}{i}相對坐標系{i?1}\{i-1\}{i?1}的變換矩陣i?1Ti{}^{i-1}T_{i}i?1Ti?可以看作四個子變換矩陣的乘積:
Rotx(αi?1)=[10000cosαi?1?sinαi?100sinαi?1cosαi?100001]R o t_{x}\left(\alpha_{i-1}\right)=\begin{bmatrix}1 &0&0&0\\ 0&cos\alpha_{i-1}&{-sin\alpha_{i-1}}&0\\0&{sin\alpha_{i-1}}&{cos\alpha_{i-1}}&{0}\\ {0}&{0}&{0}&{1}\end{bmatrix}Rotx?(αi?1?)=?????1000?0cosαi?1?sinαi?1?0?0?sinαi?1?cosαi?1?0?0001??????
Transx(ai?1)=[100ai?1010000100001]T r a n s_{x}\left(a_{i-1}\right)=\begin{bmatrix}1 &0&0&a_{i-1}\\ 0&1&0&0\\0&0&1&{0}\\ {0}&{0}&{0}&{1}\end{bmatrix}Transx?(ai?1?)=?????1000?0100?0010?ai?1?001??????
Rotz(θi)=[cosθi?sinθi00sinθicosθi0000100001]R o t_{z}\left(\theta_{i}\right)=\begin{bmatrix}{cos\theta_{i}}&{-sin\theta_{i}}&0&0\\ {sin\theta_{i}}&{cos\theta_{i}}&0&0\\0&0&1&0\\ {0}&{0}&{0}&{1}\end{bmatrix}Rotz?(θi?)=?????cosθi?sinθi?00??sinθi?cosθi?00?0010?0001??????
Transz(di)=[10000100001di0001]T r a n s_{z}\left(d_{i}\right)=\begin{bmatrix}1 &0&0&0\\ 0&1&0&0\\0&0&1&d_i\\ {0}&{0}&{0}&{1}\end{bmatrix}Transz?(di?)=?????1000?0100?0010?00di?1??????
這些變換都是相對運動坐標系描述的,滿足從左到右的原則,可以得到最終變換公式如下:
ii?1T=Rotx(αi)Transx(ai)Rotz(θi)Transz(di)_{i}^{i-1}T=R o t_{x}\left(\alpha_{i}\right)T r a n s_{x}\left(a_{i}\right)R o t_{z}\left(\theta_{i}\right)T r a n s_{z}\left(d_{i}\right)ii?1?T=Rotx?(αi?)Transx?(ai?)Rotz?(θi?)Transz?(di?)
通常規定ai≥0a_i\ge0ai?≥0,因為它代表連桿長度,而αi,di,θi\alpha_i, d_i, \theta_iαi?,di?,θi?可正可負。
ii?1T=[cosθi?sinθi0ai?1sinθicosαi?1cosθicosαi?1?sinαi?1?disinαi?1sinθisinαi?1cosθisinαi?1cosαi?1dicosαi?10001]_{i}^{i-1}T=\begin{bmatrix}{cos\theta_{i}}&{-sin\theta_{i}}&0&{a _{i-1}}\\ {sin\theta_{i}cos\alpha_{i-1}}&{cos\theta_{i}cos\alpha_{i-1}}&{-sin\alpha_{i-1}}&{-d_isin\alpha_{i-1}}\\{sin\theta_{i}sin\alpha_{i-1}}&{cos\theta_{i}sin\alpha_{i-1}}&{cos\alpha_{i-1}}&{d_icos\alpha_{i-1}}\\ {0}&{0}&{0}&{1}\end{bmatrix}ii?1?T=?????cosθi?sinθi?cosαi?1?sinθi?sinαi?1?0??sinθi?cosθi?cosαi?1?cosθi?sinαi?1?0?0?sinαi?1?cosαi?1?0?ai?1??di?sinαi?1?di?cosαi?1?1??????
2.Matlab符號運算驗證
利用Matlab的符號運算進行公式推導進行一下公式的驗證
syms theta d alpha a M=DH_Trans(theta,d,alpha,a) function M=DH_Trans(theta,d,alpha,a)R_z_theta=[cos(theta),-sin(theta),0,0;...sin(theta),cos(theta),0,0;...0,0,1,0;...0,0,0,1];T_z_d=[1,0,0,0;...0,1,0,0;...0,0,1,d;...0,0,0,1];R_x_alpha=[1,0,0,0;...0,cos(alpha),-sin(alpha),0;...0,sin(alpha),cos(alpha),0;...0,0,0,1];T_x_a=[1,0,0,a;...0,1,0,0;...0,0,1,0;...0,0,0,1];M=R_x_alpha*T_x_a*R_z_theta*T_z_d; end結果是一致的
總結
以上是生活随笔為你收集整理的机器人学DH参数及利用matlab符号运算推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10 台式机机箱前置耳机插孔没声音
- 下一篇: matlab生成的图显示数据类型,mat