<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 機器人控制系統(tǒng)運動學方程

          機器人控制系統(tǒng)運動學方程

          作者: 時間:2013-03-12 來源:網(wǎng)絡 收藏


          沿著線段作移動,我們希望在標準3D笛卡爾坐標系中工作。笛卡爾坐標系中的一個點由(x, y, z)表征,從直觀上說,這個坐標系更便于進行線段位移控制。例如,方形的運動軌跡由4條線段組成,線段運動就是笛卡爾坐標系中最基本的運動模式。問題轉化為:我們?nèi)绾卧谶@兩種坐標系統(tǒng)進行轉換。答案是運動方程。運動方程可以將笛卡爾坐標系(x, y, z)與起重機球坐標系(r, θ, Φ)聯(lián)系在一起。

          在進一步探討之前,讓我們快速地判斷一下,為什么這些方程是必要的。如果用戶想要在笛卡爾坐標系下控制運動路徑,他/她就需要確定一條由一系列(x, y, z) 坐標位置組成的軌跡。當使用運動控制器時,對于很多種類的運動,明確地指明運動軌跡是沒有必要的。運動控制通常產(chǎn)生一個運動輪廓(一系列(x, y, z)坐標位置)用于控制運動,例如點到點運動就意味著笛卡爾坐標系下的直線運動。如果我們知道受動物體的目標(x, y, z)位置,然后就可以反推運動方程,運動控制器就可以計算出如何控制實際的起重機(包括起重臂長度、傾斜角和回轉角——(r, θ, Φ))

          前向運動方程更多地用于初次校準。他們可以用于測量反饋位置,并將 (r, θ, Φ) 結果轉換為用戶更加關心的(x, y, z)坐標。這個過程也可以用于確定安裝位置,和用于將任意位置的起重機坐標初始化為相對的(x, y, z)坐標。

          由此可見運動方程的必要性,現(xiàn)在就該討論如何解運動方程了。先從反推開始,我們希望得到起重機的(r, θ, Φ)坐標:



          實際上依靠對球坐標系/笛卡爾坐標系的觀察就可以解這個等式,使用一些三角公式,可以得到如下等式:



          觀察上面第三個等式,Φ是由關于r的等式表述的,而r又可由第一個等式中的(x, y, z)解出。前向運動方程的形式類似:



          通過觀察,這幾個方程同樣可以輕松解出:



          更復雜的例子——6自由度Stewart六腳平臺

          Stewart六腳平臺在很多場合都有應用,包括自動檢測、手術、人造衛(wèi)星和望遠鏡定位以及機械仿真等等。六腳包括6個獨立的受控執(zhí)行器(長度),在一端匯聚到一個固定的基座,另一端與一平面平臺連接,允許6個自由度,(α (roll), (pitch), γ (yaw), x, y, z)。幾何學實例如圖3所示。



          圖3 Stewart六軸平臺在很多場合都有應用,包括自動檢測、手術、人造衛(wèi)星和望遠鏡定位以及機械仿真等等。來源: ACS Motion Control

          對于此系統(tǒng),反推可以告訴我們:對于給定的(α, , γ, x, y, z),可以知道執(zhí)行器的長度(l1, l2, l3, l4, l5, l6)是多少,還可以知道姿態(tài)(P)。前向方程用于計算姿態(tài)P,用執(zhí)行器的腳長度I表示。前向運動方程是封閉的方程組,傳統(tǒng)計算方法是不可解的。但是,可以通過使用牛頓迭代法來解此前向方程,下文將作討論。

          陀螺儀相關文章:陀螺儀原理




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();