日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 角度转四元数_基于Matlab的机械臂路径规划

發布時間:2023/12/4 循环神经网络 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 角度转四元数_基于Matlab的机械臂路径规划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是 trajectory(路徑)規劃

中文路徑在英語中可能有兩種翻譯:

1. path

2. trajectory

首先告訴大家,我們所說的“路徑”是后者——trajectory。我們看一下這兩種“路徑”在機械臂的世界里有什么區別。

設想機械臂的?end-effector?要從?A?點運動到?B?點:

從?A?到?B?叫?path:

如果我們規定從?A?到?B?這個?path,必須在特定的時間(t0?–?t6),經過這?7?個點。

那么這?7?個點叫?waypoints。路徑(trajectory)指的是通過這?7?個點的具體計劃(例如什么時間,以什么速度等等)。規劃我們如何經過這?7?個點的算法,叫做路徑規劃(trajectory?planning)算法

上面這?7?個點,如果機械臂的?end-effector?在通過的時候,位置連續、速度連續、甚至加速度也是連續的,那么我們說這個 trajectory 是平滑的(smooth)。?

機械臂中有幾種比較常見的?trajectory:

Trapezoidal Trajectories(梯形路徑)

梯形路徑指的是:

end-effector?在相鄰?waypoints?之間的速度是象梯形一樣,先線性加速,然后速度保持不變,在接近目標后線性減速。梯形路徑的優點是比較簡單實用,但是在每個?waypoint?會有停頓。下圖是一個機械臂走梯形路徑的樣例:在過?waypoints?的時候,會完全停止,所以走的是直線,速度和加速度肯定不連續。

Polynomial Trajectories(多項式路徑)

其中又分三次多項式和五次多項式。分別寫作:

三次多項式可以記錄?end-effector?的速度、位置的信息。五次多項式可以記錄?end-effector?的位置、速度、加速度的信息。下圖是一個五次多項式的例子,可以看到速度、加速度都是連續的。三次或者五次多項式的?trajectory?在通過?waypoints?的時候速度都是連續的,這和梯形路徑是不一樣的。

下圖是一個機械臂走五次多項式路徑的樣例:為了保證過?waypoints?的時候速度不停頓,走的是曲線。

B-splines(B樣條曲線)

B 樣條曲線將除了起始點和終點外,將其他的 waypoints 看成是控制點(control?points)。機械臂的?end-effector?并不會真正通過這些?control?points,而在他們之間找一條平滑的曲線。這樣做的目的是在平滑加速度和曲線擬合的準確性之間找一個折衷方法。

(圖片來自于Wikipedia)

如果一個?trajectory?只有這?7?個點,無論機械臂控制器的運動控制模塊如何強大,都無法保證做到“平滑”的運行。我們必須對路徑點進行插值(interpolation)。

下圖的橙色點為插值點示意:

在了解插值后,我們來看一下路徑規劃出來的信息如何和傳遞到反向運動學(inverse?kinematics)。反向運動學模塊將確保end-effector按照規劃出來的路徑運行,即路徑跟隨(trajectory?following)。

這里,我們按插值類型情況分兩種模式:

1. Trajectory interpolated in task space

在這種模式下,中間插值的點是在?task?space(即?XYZ?坐標系,或者叫笛卡爾坐標系)進行插值。下圖表明了這一過程,這時候?trajectory?generation?只需要做一次,產生所有的?waypoints?和?interpolation?points?(插值點)。然后運動控制系統在每個控制周期都必須調用?inverse?kinematics?算法去做路徑跟隨(trajectory?following)。

2. Trajectory interpolated in joint space

在這種模式下,中間插值點的點是在?joint?space(即對關節角度插值)。下圖表明了這一過程。這時候?trajectory?generation?也只需要做一次,但做的過程和?task?space?的做法不同。即在每一個?waypoint?調用一次?inverse?kinematics,然后對關節角度的進行插值。Trajectory?following?模塊只需執行插值后的角度指令。

角度方向插值?(orientation interpolation)

我們剛才談到的插值,都是針對?end-effector?的位置(position,即?XYZ?的坐標)。我們不應該忽略?end-effector?的角度方向(orientation)插值。我們看一段動畫來了解一下,什么是?orientation?的插值:

可以看到,隨著?end-effector?的移動,它的方向也在不斷做出平滑的調整,在?end-effector?運行到目標位置后,它的方向也調整到位。當然,有很多場合角度方向是不需要調整的。例如:噴漆機械臂,永遠將?end-effector?指向噴漆作業面。

MATLAB 中的機械臂路徑規劃算法

在?R2019a 發布后?Robotics?System?Toolbox?(RST)?中多了幾個機械臂路徑規劃的?MATLAB?函數和?Simulink?模塊。

MATLAB?函數:

Simulink?模塊:

不管是?MATLAB?函數還是類似?Simulink?block,大概這么幾項功能:

  • 生成梯形或者多項式的位置 trajectory

  • 生成角度方向的 trajectory

  • 將上兩者合二為一的生成既包含位置,也包含角度方向(合稱?pose)的?trajectory——即基于?homogeneous?transforms?的? pose?trajectory。

讓我們寫幾行代碼,來產生一個三次多項式的?trajectory:

可以看到,位置是連續的。如果我們將速度?(qd)、加速度?(qdd)?畫出來,可以看到?qdd?是不連續的。

Simulink示例

在?MATLAB?file?exchange?里搜索?“Trajectory?Planning?for?Robot Manipulators”,會找到一個用多種方式產生?trajectory?的例子。

用一張表格總結如下:

這里有兩點值得注意:

  • 無論是?MATLAB?函數還是?Simulink?block,所有角度方向的插值都是基于?SLERP?(spherical?linear?interpolation)。這是一種基于四元數(quaternions)的插值法。不會造成下圖所示的“不走近路,繞遠路”的問題。例如,角度要從?0?度轉到?30?度。因為圓周是?360?度,錯誤的方式是從?0?度轉到?330?度?–?雖然也能到達指定位置或者角度,但它是錯誤的。在manipJointTrajectory?模型中,因為用到了基于?joint?space(關節角度)的插值,讀者可以注意一下如何處理這個問題。

  • Time-scaling。在?manipTransformTrajectoryTimeScaling?模型中,如果不加?time?scaling?這個模塊,那么所有的角度變化和位置變化都是基于線性插值。如果加入了?“想要的”?速度、加速度信息?---即?time?scaling。我們可以使角度變化和位置變化按照我們想要的梯形或者多項式形式去調整。例如,我想讓角度一開始不變,然后快速變化,最后速度為0。

  • 來源:Matlab

    更多關于機器人技術相關的文章,請關注微信公眾號【機器人R1】。

    總結

    以上是生活随笔為你收集整理的matlab 角度转四元数_基于Matlab的机械臂路径规划的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。