1. 程式人生 > >【機器人學】使用代數法求解3自由度擬人機械臂的逆運動學解

【機器人學】使用代數法求解3自由度擬人機械臂的逆運動學解

        這篇部落格會討論一下使用解析法求解3自由度擬人機械臂的逆解及分析。

一、機械臂的逆解

        機械臂的逆運動學問題就是由給定的末端執行器位置和方向,確定機械臂各個關節變數的值。機械臂的求解方法可以分為兩大類:數值解和解析解(封閉解),解析解又可分為代數解和幾何解。
        數值解和解析解有各自的特點,商用的機械臂一般都會採用解析解,因為求解速度快且準確,而不會採用本質迭代的數值解法。

二、擬人機械臂+球形手腕

        如果大家注意到的話,可以發現,市面上的6軸機械臂的構型都是相似的,大都是擬人臂+球形手腕的構型,因為這樣的構型可以把球形腕的求逆解耦出來。


這裡寫圖片描述


這裡寫圖片描述


這裡寫圖片描述

三、3自由度擬人機械臂的求解

        這篇部落格的內容都出自於《機器人學:建模,規劃和控制》這本教材,有興趣的同學可以找到這本書看一下。本文只討論一下3自由度擬人機械臂的逆運動學,

以後有時間會總結一下6軸工業機械臂的求逆解問題。
        很多機器人學教材上關於機械臂的逆解都是羅列一堆公式,對其中的推導過程並沒有講述很清楚,再加上中文版本的機器人學教材錯誤百出,很多同學看得一頭霧水,對求解推導過程中使用的數學原理沒有深入體會,導致對機械臂的求逆解問題一直處於一種似懂非懂的狀態。最重要的是,我認為只有使用程式碼實現對機械臂求逆解,才算是初步達到了學習機器人學的目的。
        3軸機械臂的構型和DH引數如下圖所示,使用DH方法進行運動學建模,建立的座標系如下圖所示。


這裡寫圖片描述


這裡寫圖片描述

        建立直角座標系後,機械臂末端的位置,也就是座標系3原點的位置可表示為:
px=c1(a2c2+a3c23)py=s1(a2c2+a3c23)pz=a2s2+a3s23
        已知 px py pz 3個已知量,求解3個未知量關節角度 ϑ1 ϑ2 ϑ3 從代數的角度來看,由於限定關節角度的範圍為 [π,π] ,故會有多解,從幾何角度來看,就是如下圖所示的多解情形。

這裡寫圖片描述

      求解的過程是從關節3 關節2 關節1。 首先求解關節3的解:
      由 (1)2+(2)2+(3)2 可得 c3=px2+py2+pz2a22a322a2a3
      那麼 s3=±1c32
      故 ϑ3,I=atan2s3c3 ,使用 atan2() 函式是為了得到範圍在 [π,π] 的關節角度。根據 s3 的符號和 atan2() 的性質,可知關節3的第二個解是 ϑ3,II=atan2s3c3=atan2(s3,c3)=ϑ3,I 到此,關節3的兩個解就得出來了。
       接下來求關節2的解:
      由 (1)2+(2)2 可以消掉 s1 c1 ,再結合 (3) ,這兩個方程含 c2 s2 兩個未知數,可求得 c2=±px2+py2(a2+a3c3)+pza3s

相關推薦

機器人學使用代數求解3自由度擬人機械運動學

        這篇部落格會討論一下使用解析法求解3自由度擬人機械臂的逆解及分析。 一、機械臂的逆解         機

leetcode3 無重復字符的最長子串

sim bcb IT wid VM str longest solid eat 問題   給定一個字符串,找出不含有重復字符的最長子串的長度。 示例: 給定 "abcabcbb" ,沒有重復字符的最長子串是 "abc" ,那麽長度

原始碼牛頓求解實值函式的根

示例:[ x, ex ] = newton( ‘exp(x)+x’, ‘exp(x)+1’, 0, 0.5*10^-5, 10 ) f:輸入函式 df:輸入函式的導數 x0:函式根的初值估計 tol:誤差容忍度 namx:求解最大迭代次數 x:求解輸出的近似根 e

四款經典3.7v鋰電池充電電路圖詳

大小 來源 輸入 控制 電路原理圖 cfa and 繼續 lan 3.7v鋰電池充電電路圖(一) 1、鋰電池的充電: 根據鋰電池的結構特性,最高充電終止電壓應為4.2V,不能過充,否則會因正極的鋰離子拿走太多,而使電池報廢。其充放電要求較高,可采用專用的恒流、恒壓充電器進行

機器人學使用解析求解6軸機械運動學

        本文是承接上一篇求3軸擬人機械臂逆解內容(連結),擴充套件到求6軸機械臂的逆解,研究的仍然是目前比較流行的工業機械臂構型:擬人臂+球形腕關節(如下圖1和圖2所示),因為這種構型的機械臂具有閉合

機器人學機器人開源專案KDL原始碼學習:(5)KDL如何求解幾何雅克比矩陣

這篇文章試圖說清楚兩件事:1. 幾何雅克比矩陣的本質;2. KDL如何求解機械臂的幾何雅克比矩陣。 一、幾何雅克比矩陣的本質 機械臂的關節空間的速度可以對映到執行器末端在操作空間的速度,這種對映可以通過一個矩陣來描述,就是幾何雅克比矩陣,瞭解雅克比矩陣需要了解這種對映關係的本質,這

機器人學機器人開源專案KDL原始碼學習:(3)機器人操作空間路徑規劃(Path Planning)和軌跡規劃(Trajectory Planning)示例

很多同學會把路徑規劃(Path Planning)和軌跡規劃(Trajectory Planning)這兩個概念混淆,路徑規劃只是表示了機械臂末端在操作空間中的幾何資訊,比如從工作臺的一端(A點)沿直線移動到另一端(B點)。而軌跡規劃則加上了時間律,比如它要完成的任務是從A點開始到B點結束,中間

轉載Hadoop 2.7.3 和Hbase 1.2.4安裝教程

啟動 運行 property new rop net 文本文 .tar.gz cor 轉載地址:http://blog.csdn.net/napoay/article/details/54136398 目錄(?)[+] 一、機器環境

codevs1082線段樹練習 3

adl for while small get color ace str 所有 題目描述 Description 給你N個數,有兩種操作: 1:給區間[a,b]的所有數增加X 2:詢問區間[a,b]的數的和。 輸入描述 Input Description 第一

WPFMVVM模式的3種command

src handler 因此 初始化 dex ram view ssi 不同 1.DelegateCommand 2.RelayCommand 3.AttachbehaviorCommand 因為MVVM模式適合於WPF和SL,所以這3種模式中也有一些小差異,比如Relay

LinuxServicesIaaSOpenStack-Pike(3.搭建高可用消息隊列)

mission 服務 guide lan nsis edit 錯誤 all scp 1. 簡介 1.1. 官方網站: https://www.rabbitmq.com/ 2. 安裝與配置: 詳見:https://docs.openstack.org/ha-guide/sha

pattern設計模式(3) - Observer觀察者模式

獨立 使用 數據 技術 很多 調用 edi 基於 ace 源碼地址:https://github.com/vergilyn/design-patterns 另外一個大神很全的Github:https://github.com/iluwatar/java-design-pat

技巧競賽中對拍程序的寫法

定向 軟件 err 出錯 OS 進行 小數據 goto 隨機數 在競賽過程中一個對拍程序可以幫你排除許多錯誤, 如果擔心自己寫的正解被一些小數據卡掉, 我們通常會寫個對拍程序來檢查正解的正確性, 通過大量數據觀察正解與暴力的輸出是否相同。 我們首先拿出我們寫的可能會超時但是

WPFMVVM模式的3種command

exceptio 什麽 () rst 響應 接口 too AD event 原文:【WPF】MVVM模式的3種command1.DelegateCommand 2.RelayCommand 3.AttachbehaviorCommand 因為MVVM模式適合於WPF和

的時間復雜度

語句 期望 cmp sum 去掉 函數 要求 rcm 實例 定義:如果一個問題的規模是n,解這一問題的某一算法所需要的時間為T(n),它是n的某一函數 T(n)稱為這一算法的“時間復雜性”。當輸入量n逐漸加大時,時間復雜性的極限情形稱為算法的“漸近時間復雜性”。我們常用大O

原創新韭菜日記3---套牢的困局,為什麼不願意止損割肉

為什麼不願意虧損了退出? -----一般聽起來,好像止損很高明,好像割肉就很傻?   前提情景:手上已經持股,並且已經浮虧了 行為模式:一直等待回升後,想著,我回本就賣! 實際上往往在下跌比較長一段時間/或幾次較大下跌後,出局      

分析最流行的3款DAPP瀏覽器和原理

摘要:區塊鏈經歷5到10年的發展,我們也將迎來 Web 3.0 和整個DApp生態的大發展、大繁榮,屆時DApp瀏覽器也將從邊緣走向主流人群,成為使用者進入Web 3.0世界的視窗。 隨著智慧手機的普及,移動網際網路已經深入到生活的方方面面,使用者更習慣於直接通過手機

P1865求素數+區間!

#include<bits/stdc++.h> using namespace std; const int maxn=1000010; bool a[maxn]; int primesum[maxn]; void printPrimes(){ memset(a,true,size

機器人學機械球形手腕的

        如圖1所示的球形手腕(三個關節的軸線相交於一點)是常用的機械臂結構,我們希望在已知座標系3至座標系6的旋轉矩陣的條件下求解3個關節值 q3

機器人學機器人開源專案KDL原始碼學習:(8)KDL的精髓

  首先說一下我的心得: 1. 我認為KDL的精髓是Spatial Vector,結合C++等面向物件的語言可以寫出較好的軟體。 2. 直接閱讀KDL程式碼不適合初學者學習機械臂動力學。 3. 要學習機械臂動力學的話應首先閱讀使用3維向量推導公式的文獻,也就是線速度和角速度獨立分析