笛卡爾軌跡規劃之齊次變換矩陣與歐拉角、四元數的轉化

一、笛卡爾軌跡規劃需求

????????笛卡爾軌跡規劃本質就是我們對機械臂的末端位置和姿態進行規劃,其實也就是對末端坐標系的位姿進行規劃。我們清楚末端坐標系的位姿是可以用齊次變換矩陣T來表示的,但這樣表示的話,并不利于我們去做規劃,所以在進行軌跡規劃之前,我們需要先將對應的齊次變化矩陣轉化成位姿向量去表示,也就是轉化成:

????????其中px,py和pz就是末端的位置,這個是比較好處理的,就是原點的移動,規劃的思路就是插值,求解就可以了。

????????但φx,φy,φz表示的是末端的姿態,這個相對難處理一點。一般而言,我們有兩種計算方法,一種是轉化成φx,φy,φz計算,也就是歐拉角。另一種就是轉化成【w,x,y,z】的四元數計算。兩種方法各有特點,目前我也只是了解了這些方法,但具體還沒有做應用和比較。

? ? ? ? 因為我們一般而言已知的就是起點和終點的齊次變化矩陣,可以用以下這個式子表示:

? ? ? ? 后面我們要計算的姿態就是用標紅的框框里面的數據去計算。

二、齊次變換矩陣與歐拉角

? ? ? ? 歐拉角的表示方法就是讓坐標系先繞x軸轉一個φx,再繞y軸轉一個φy,最后繞z軸轉一個φz,進而得到旋轉矩陣R,也就是上面紅色框出來的部分。注意,這里先繞哪個軸,后繞哪個軸都是有順序的,順序不同,計算也不同。

? ? ? ? 對應的繞各軸旋轉的矩陣可以表示如下:

????????

? ? ? ? 因為我們這里是先繞x軸轉一個φx,再繞y軸轉一個φy,最后繞z軸轉一個φz,旋轉矩陣R就等于以下這個式子:

? ? ? ? (因為是對固定坐標系,所以先轉的放右邊)

? ? ?分析一下這個旋轉矩陣R,就得以得到各個轉角的計算公式

? ? ? ?但用歐拉角也會有些不太方便的地方就是萬向死鎖,就是中間這個轉角轉了90°的時候,我們會發現cosφy=0。

? ? ? ? 為了避免這個現象,常采用的方式就是用四元數去代替歐拉角。

三、齊次變換矩陣與四元數

? ? ? ? 四元數的表示:

????????

? ? ? ? 如果我們要用四元數描述旋轉,那么就可以調整成以下這個式子:

????????

? ? ? ? 其中θ是旋轉角度,u是旋轉軸,也是一個單位向量。

? ? ? ? 那怎么從旋轉矩陣得到四元數呢?

? ? ? ? 我們知道在進行旋轉變換時,都可以等效為繞一個軸f旋轉θ(可以參見《機器人學》的P31),也就是下面這個式子:

????????

? ? ? ? 其中:

????????

????????分析可得:

????????

? ? ? ? 同理,其他也一樣可以做轉化,進而得到以下這個式子:

????????

? ? ? ? 然后我們就可以利用旋轉矩陣來將他轉化成四元數啦:

????????

? ? ? ? 四元數計算代碼,里面補充了一個跡小于零的處理方法,其實就是選出最大值,然后變換下計算的順序,僅此而已,這樣我們就可以完成四元數的計算了。后面軌跡規劃的時候就算出了四元數,就只剩插值,求逆運動學了:)

def count_quaternion(T):'''利用旋轉矩陣計算四元數'''if ((T[0][0]+T[1][1]+T[2][2])>0:W=np.sqrt(T[0][0]+T[1][1]+T[2][2]+1)/2X=(T[2][1]-T[1][2])/(4*W)Y=(T[0][2]-T[2][0])/(4*W)Z=(T[1][0]-T[0][1])/(4*W)else:# 跡小于零的處理方法if (T[0][0]>T[1][1]) and (T[0][0]>T[2][2]):s=np.sqrt(T[0][0]-T[1][1]-T[2][2]+1)*2 # 此時算出來的是4XX=s/4Y=(T[0][1]+T[1][0])/s # 消元ZWZ=(T[0][2]+T[2][0])/s # 消元YWW=(T[2][1]-T[1][2])/s # 消YZelif (T[1][1]>T[0][0]) and (T[1][1]>T[2][2]):s=np.sqrt(T[1][1]-T[0][0]-T[2][2]+1)*2 # 此時算出來的是4YY=s/4W=(T[0][2]-T[2][0])/s # 消XZX=(T[0][1]+T[1][0])/s # 消ZWZ=(T[1][2]+T[2][1])/s # 消XWelse:if (T[2][2]>T[0][0]) and (T[2][2]>T[1][1]):s=np.sqrt(T[2][2]-T[0][0]-T[1][1]+1)*2 # 此時算出的是4zZ=s/4X=(T[0][2]+T[2][0])/s #消YWY=(T[1][2]+T[2][1])/s #消XWW=(T[1][0]-T[0][1])/s #消XY   return W,X,Y,Z

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72968.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【PCIe 總線及設備入門學習專欄 3.1 -- PCIe 中為何只有 TLP 會被 Switch 和 RC 進行路由?】

文章目錄 Overview為什么 DLLP 不需要路由呢?總結Overview 這里介紹些為什么在 PCIe 中只有 TLP(事務層數據包)會被 Switch 和 Root Complex(RC) 路由,而 DLLP(數據鏈路層數據包)和 Ordered Set 不會被路由。這是因為 TLP 起始于源端口的事務層,結束于目的端口的事務…

大摩閉門會:250321 學習總結報告

如果圖片分辨率不足,可右鍵圖片在新標簽打開圖片或者下載末尾源文件進行查看 本文只是針對視頻做相應學術記錄,進行學習討論使用

深入理解 Spring Boot 應用的生命周期:從啟動到關閉的全流程解析

引言 Spring Boot 是當今 Java 開發中最流行的框架之一,它以簡化配置和快速開發著稱。然而,要真正掌握 Spring Boot,理解其應用的生命周期是至關重要的。本文將深入探討 Spring Boot 應用的生命周期,從啟動到關閉的各個階段&…

期刊分區表2025年名單下載(經濟學、管理學)

2025年期刊分區表包括SCIE、SSCI、A&HCI、ESCI和OAJ,共設置了包括自然科學、社會科學和人文科學在內的21個大類 本次分享的是期刊分區表2025年名單經濟學類、管理學類,一共7631025條 一、數據介紹 數據名稱:期刊分區表2025年名單 數據…

夢回杭州...

她對我說,煙雨中的西湖更別有情趣,我也懷著對‘人間天堂’的憧憬踏上了向往之旅。第一次親密接觸沒有感覺中那么好,現在想起來是那時的人和心情都沒能安靜下來,去慢慢品味它的美。 六下杭州,親歷每一片風景&#xff0c…

深度優先搜索(DFS)完全解析:從原理到 Java 實戰

深度優先搜索(DFS)完全解析:從原理到 Java 實戰 TOC 作為一名程序員,你是否遇到過需要在復雜的圖結構中尋找路徑、檢測環,或者進行樹遍歷的問題?深度優先搜索(Depth-First Search, DFS&#xf…

【人工智能】如何理解transformer中的token?

如何理解transformer中的token? **一、Token在Transformer中的作用****二、文本分詞的常見方法****1. 基于詞典的分詞(Dictionary-based Tokenization)****2. 子詞分詞(Subword Tokenization)****(1) WordPiece算法****(2) BPE&a…

AI風向標《AI與視頻制作全攻略:從入門到精通實戰課程》

課程信息 AI風向標《AI與視頻制作全攻略:從入門到精通實戰課程》,夸克網盤和百度網盤課程。 課程介紹 《AI與視頻制作全攻略:從入門到精通實戰課程》是一套全面融合AI技術與視頻制作的實戰課程,旨在幫助創作者從基礎軟件使用到高級視頻剪輯…

mayfly-go開源的一站式 Web 管理平臺

mayfly-go 是一款開源的一站式 Web 管理平臺,旨在通過統一的界面簡化 Linux 服務器、數據庫(如 MySQL、PostgreSQL、Redis、MongoDB 等)的運維管理。以下從多個維度對其核心特性、技術架構、應用場景及生態進行詳細解析: 一、核心…

車輛模型——運動學模型

文章目錄 約束及系統移動機器人運動學模型(Kinematic Model)自行車模型含有加速度 a a a 的自行車模型系統偏差模型 在機器人的研究領域中,移動機器人的系統建模與分析是極為關鍵的基礎環節,本文以非完整約束的輪式移動機器人為研…

go命令使用

查看配置信息 go env配置go國內源 export GO111MODULEon export GOPROXYhttps://goproxy.cn測試 go install github.com/jesseduffield/lazydockerlatesthttps://github.com/jesseduffield/lazydocker

Chrome-Edge-IDEA-Win 常用插件-工具包

Chrome-Edge-IDEA-Win 常用插件-工具包 Chrome-Edge-IDEA-Win 常用插件-工具包谷歌插件chropathJSONViewOctotree - GitHub code treeXPath Helper書簽側邊欄篡改猴Print Edit WEEdge瀏覽器插件IDEA插件CodeGlance Pro 代碼迷你縮放圖插件Alibaba Cloud ToolkitAlibaba Java Co…

西門子V90伺服系統介紹

深入淺出地了解V90伺服驅動系統的核心特性和優勢,掌握其自動優化功能,使設備獲得更高的動態性能;同時,了解其自動抑制機械諧振頻率的特性,有助于在實際應用中減少機械振動和噪音。 方便快捷地熟悉V90的使用方式。通過伺…

【FastGPT】利用知識庫創建AI智能助手

【FastGPT】利用知識庫創建AI智能助手 摘要創建知識庫上傳文檔創建應用準備提示詞準備開場白關聯知識庫AI回答效果 摘要 關于FastGPT的部署,官方提供了docker-compose方式的部署文檔,如果使用的是podman和podman-compose的同學,可以參考這篇…

最新!Ubuntu Docker 安裝教程

源自: AINLPer(每日干貨分享!!) 編輯: ShuYini 校稿: ShuYini 時間: 2025-3-1 更多:>>>>大模型/AIGC、學術前沿的知識分享! 看到很多部署大模型的時候,都是基于docker安裝部署的。…

html5炫酷3D立體文字效果實現詳解

炫酷3D立體文字效果實現詳解 這里寫目錄標題 炫酷3D立體文字效果實現詳解項目概述技術實現要點1. 基礎布局設置2. 動態背景效果3. 文字漸變效果4. 立體陰影效果5. 懸浮動畫效果 技術難點及解決方案1. 文字漸變動畫2. 立體陰影效果3. 性能優化 瀏覽器兼容性總結 項目概述 在這個…

電腦如何設置幾分鐘后自動關機

摘要:本文提供Windows、macOS和Linux系統設置定時自動關機的詳細方法。 目錄 一、Windows系統設置方法 設置定時關機 取消關機計劃 二、macOS系統設置方法 設置定時關機取消關機計劃 三、Linux系統設置方法 設置定時關機 取消關機計劃 四、注意事項五、擴展&#x…

Android音視頻多媒體開源庫基礎大全

從事音視頻開發工作,需要了解哪些常見的開源庫,從應用到底軟系統,整理了九大類,這里一次幫你總結完。 包含了應用層的MediaRecorder、surfaceView,以及常見音視頻處理庫FFmpeg和OpenCV,還有視頻渲染和音頻…

若依前端框架增刪改查

1.下拉列表根據數據庫加載 這個是用來查詢框 綁定了 change 事件來處理站點選擇變化后的查詢邏輯。 <el-form-item label"站點選擇" prop"stationId" v-has-permi"[ch:m:y]"><el-select v-model"queryParams.stationId" pl…

Java 第十一章 GUI編程(3)

目錄 內部類 內部類定義 內部類的特點 匿名內部類 格式&#xff1a; 內部類的意義 實例 內部類 ● 把類定義在另一個類的內部&#xff0c;該類就被稱為內部類。 ● 如果在類 Outer 的內部再定義一個類 Inner&#xff0c;此時類 Inner 就稱為內部類 &#xff08;或稱為嵌…