不用看,就知道問題出在關節技術上。
對于人體來說,關節的坐標變化是非常簡單的,只要在當前關節乘上該節點旋轉矩陣和子節點偏移矩陣,就可以完成節點到子節點的坐標變換。
但是機器人的坐標變換就沒有那么簡單了,機器人相比人要復雜,主要體現在兩個方面
1人的關節是一個球形結構,具有三個自由度;而機器人的關節一般只有一個自由度,所以用機器人模擬人的手腕需要三個關節。
2人關節之間是由手臂連起來的,在轉動的過程中兩個關節之間的距離是不會變的;而機器人的關節之間連接情況比較復雜。
劉熾打開了機器人的設計圖!
把關節旋轉部分放大。
這是兩個旋轉關節分別繞兩根軸進行旋轉;
而且兩個關節不是直接連在一起的,而且兩個關節之間的連桿的長度,也是不固定的或者說不是直線。
在這里就會出現一個問題!
它就不能像人體動畫中直接乘上旋轉矩陣和偏移矩陣來進行坐標變換。
這看起來相當復雜,就會導致坐標變換變得真復雜。
半小時后,劉熾雙眼一亮!
腦子里想到一個想法,從桌子上抽了一張紙出來,直接坐下,拿起筆。
‘刷刷刷’的紙上寫了起來。
如果
是二軸,改成三軸呢?
當y、x和x之間的成夾角同,那他們之間的距離,分成三個等級。
di;
ai1;
ai;
di,ai1和ai之間的距離。
(可以理解為ai1和ai分別與z交點之間的距離,因為ai1和ai分別與z垂直)
而di和di連桿之間的連接狀態。
選取參數是坐標變換的第一步,那么接下來第二步,就是建立關節的笛卡爾坐標系。
從觀察中可以得到,原點選在y和ai1的交點位置是最近的。
這樣我們z軸就可以沿著y,而x軸也可以沿著ai1。
然后確定y軸,其肯定等于x軸和z軸的叉乘,也就是y軸的位置已經是確定了,方向可以根據右手坐標系確定。
αi1可以看作兩個z軸的夾角;
ai1可以看作兩個z軸的距離,
di可以看作兩個x軸的夾角,
di可以看作是兩個x軸的距離。
最后一步就是進行坐標變換了
坐標變換主要分為4個環節
將y繞ai1軸(x軸)旋轉αi1。(因為ai1分別垂直于y)
將x沿ai1軸(x軸)方向平移ai1。
將y繞x軸(z軸)旋轉di。(因為y分別垂直于ai1和ai)
將z沿x軸(z軸)方向平移di。
半小時后!
劉熾一拍大腿!
搞定,這次應該沒問題了,直接拿起鼠標,在原來的基本上進了修改。