好,我們現在來針對剛剛的軌跡規劃的內容再做一些註解 那剛剛各位同學可能也發現說我們今天在很多線段相連的時候 中間都會用到一個 θ double dot 跟 t 的一個關係 就知道說我們一開始有一個速度,後來有一個速度,那如果說我們今天 我們中間轉換過程中可以達到的加速度越高的話 我所需要的時間就越短。 那今天那一個 可達到的加速度其實是由很多原因來決定的。 我們 現在先簡單一點從 Joint space 來想,發現其實就已經夠複雜了 假設說我們的 θ double dot 就是在 Joint space 下面某個 某個關節的一個加速度 那今天這一個加速度基本上是由這個關節,是由馬達來驅動 所以我們可以簡單來想象說,那這個關節所能夠達到的 加速度是取決於很多的原因,那我這裡只簡單地列出三個 那第一個當然說是馬達自己能夠出的扭力有多少 因為我們如果簡單地概算來想的話,我們在每個瞬間 馬達所出的扭力假設叫做 τ 好了 那應該 τ 會等於 i θdouble dot 嘛,在那個瞬間會有一個等效的 i,對不對 它會有一個等於說就加減速來看的話,那 τ 要等於 i θdouble dot,所以等於說我今天,θdouble dot 是一個需求 的話,我們今天如果 τ 越大,代表說這個 θdouble dot 就越容易 應該說馬達的 τ 能夠出得越高的話,θdouble dot 就能,比較高的 θdouble dot 才能夠到達 那第二個是說,我們今天手臂在不同的姿態下的時候 因為手臂本身有重量,它在不同的姿態下的話 我們手臂的關節就會要承載那些重力 的影響。 那第三個是說,就像我剛剛講的,今天手臂 有動態的話,那等於說它有一個劇烈的加減速在跑的話 或者說它今天有科氏力在裡面的時候,它也會產生一些影響 那這些等於說,我們今天即使是把 θdouble dot 想成是一個關節 然後是用某個馬達在驅動,我們發現說,它真實可以達到的大小其實 是有很大的變動範圍,沒有辦法那麼容易去做估測 那我下面就用一個簡單的例子來講說這個部分為什麼那麼的困難 我們就先假想我們有一個兩個自由度的平面手臂,就像是這裡圖中畫的,那這個在之前 的內容裡面也常常出現嘛,我們在做 FK 跟 IK 的時候都出現過這樣子比較簡化的系統 那我們就可以知道說今天這個手臂假設有兩個自由度,那所以它各自是在 θ1 跟 θ2 的這兩個關節點,這兩個關節點。 所以我們可以想象說這兩個關節,假設這是機械手臂 我們驅動的時候第一個就有一個 τ1,第二個就有一個 τ2 那今天即使針對一個這麼簡單形態的手臂 那它的 τ1、 τ2 跟它的運動關係,基本上是可以寫成左側這樣子 好,這看起來這其實就很複雜,那這個是屬於手臂的動力學的部分,那這個部分由於 本身內容比較多,也必須要另外一些關於動力學的背景知識,所以我們並沒有放在 這一次機器人學一的內容裡面,那後續如果有機器人學二 的話,這個部分就會納入考量來開始教我們要怎麼去看一個手臂的動態 那這裡只想跟各位同學稍微講說,好,今天即使是針對一個兩個自由度的手臂 好,我們這個運動方程式就列出來了,我的手臂的狀態跟它這個關節 點,馬達扭力的關係。 那這個 τ 我們可以想到說在今天針對我們這個問題,它等於 τ1 跟 τ2 好,那等於是我們的θ,就是 θ1 跟 θ2 所以今天我們所出的扭力基本上由三個部分所 構成,第一個部分比較像是所謂的慣性力的部分,就等於說 我們今天是用 θ1 double dot 跟 θ2 double dot 去乘以這個 M 矩陣裡面,M 你就可以把它想成說就是我們的一個,一個 i 的矩陣,就等於說它是一個轉動慣量的矩陣 所以各位同學可以看到說它的單位本身基本上都是質量乘以長度的平方 所以就等於說這要講了就是說,我今天如果手臂 有一個動態在跑,就等於說我一個 θ1 double dot,一個 θ2 double dot,那馬達就必須要出一些 τ 來讓我這個所需要的動態 能夠產生出來。 所以等於說我今天如果這個 θ1 double dot 是不為零的,我希望說 它有一些動態,這個動態背後就有一些需求的扭力 好,這就是我剛剛講的手臂的動態,這是慣性力的部分 那中間也還有一個部分是這樣子 那這基本上包含了兩種形態,一個就是所謂的向心、 離心力跟所謂的科氏力 所以我們知道說只要手臂有速度存在,就等於說這是速度 嘛,θ1 dot 跟 θ2 dot,等於說這個關節有在,有在動的 我們就發現說它就有向心、 離心力的項跟科氏力的 項會跑進來。 那等於說一旦這個力跑進來,間接代表說,誒 我要達到這樣子的運動狀態的時候,即使我沒有加速度喔,因為這個基本上都是只跟速度- 是有關的 我只要手臂有速度,這一項就會存在,就有值,這一項有值就代表 手臂就要有 τ,就是說手臂就要生出一個 τ 來 那最後是,有點像是重力的部分。 就等於說,你發現說這個 c12 就是 cos(θ1+θ2) 等於說最後一個項,是只跟 θ 有關 所以等於說就跟手臂的姿態有關。 那這一項也想成說是重力造成的影響,就等於說是手臂即使不動 它保持在某個姿態,那那個姿態就會讓手臂需要在這個關節上面產生 一些扭矩,讓它可以保持住那個,那個姿態 所以各位同學發現說其實一個手,一個簡單的 兩個自由度的手臂,它背後的運動方程就有這麼多的項 那等於說這個是,等於說我們今天生出來馬達,所生出來這個 τ,就要能夠應付這麼多個項 那這裡就可以看出來了,假設說我今天是一個特定的手臂 我的 τ 可能說我會有一些上限值,就等於說它供了一些電壓跟電流之後 它有一個特定的 τ,τ 是有一個,有一個範圍 的。 那今天在這個特定的 τ 的範圍之下 我因為後面兩者的狀況不同 就會決定了我第一個 θ double dot 能夠 剩多少可以拿來產生,對不對?就等於說我今天 τ,如果說它手臂擺著一個很費力的姿態 我等於說 τ 就分了很多的力來支撐這個 G(θ),我就沒有力來讓我的手臂有動態了 或者說我今天手臂在一個高速的一個轉動下,就等於說中間的離心力非常大 然後再加上重力也會混進來,那在這個狀態下面 手臂或許也沒有太多的力可以拿來做加減速 所以就等於說我們今天就可以知道說,我今天要能夠很精準地在 Joint space 下面 估測我的 θdouble dot 其實本身就蠻複雜的,等於說手臂的動力方程就要進來 更何況,如果說我今天這個 θ double dot,這個 double dot 指的是 Cartesian space 下面的 x double dot, y double dot 或是 z double dot,那那個本身在操作的時候就更複雜 所以真實上面其實我們要做一個 θ double dot 來決定 它的一個範圍,或決定一個上限值,其實是還蠻有挑戰性的 所以它常常在真實的操作中,我們常常會用 一個,設定一個 t 的方式來做,就等於說 我們是直接設定一個,這個轉動時候所需要的區間,一個 [t,k] 好了 那這個 [t,k] 區間設定了之後,我們最後再來確認看看說這個 θ double dot 到不到得了 就等於說就是用反算的方式來間接來確認只要它到得了就可以 那設定一個 [t,k] 還有一個好處就是說,今天如果手臂本身是多軸的 我們希望在多軸的運動中,希望每一個軸向 它的直線段跟二次段都會有一樣的時間比例 這樣才不會說今天針對某個自由度,它現在在 直線段,另外一個自由度已經在二次段,那這樣軌跡混起來就會是看起來是一個 比較不是那麼直觀的一個軌跡 所以我們今天針對一個多軸的手臂,我們常常需要說,好 它在直線段的時候,所有的自由度都在直線段上 它在二次段的時候,所有自由度都在二次段上,如果是這樣這樣子的需求 我們那個二次段的時間,變成就要先決定 這樣才能夠說,時間一決定之後,一次、 二次段的各自所需要的時間,就已經先抵定了 然後最後再來反推,在每個軸上它所需要的加速度 或是說在每個自由度上,所需要的加速度是多少 這是這基本上我們來想這些事情的時候,可以從我剛剛 講的這些事情去考量,我們的 [t,k] 跟 θ double dot 該怎麼去做選擇