EV3 Tutorial(13)土炮的繪圖機械手臂(下)
EV3 Tutorial(12)土炮的繪圖機械手臂(上) << 前情 在〈EV3 Tutorial(12)土炮的繪圖機械手臂(上)〉中,我們完成了機械手臂操作時的程式基礎,不過還沒涉及怎麼在指定的點進行繪圖,因此,接下來要來點數學了 … XD X-Y 座標與角度的關係我打算以 X-Y 座標的方式來指定手臂頂端的點,只是這 X-Y 座標必須能轉成角度,這樣馬達才能控制,因此,必須先知道幾個變數: L1 與 L2 可以直接從手臂量測,(x, y) 是指定座標,從上圖,可以建立幾個等式: 經由一些三角函式推導,最後可以得到: 因為在〈EV3 Tutorial(12)土炮的繪圖機械手臂(上)〉中,我們已經撰寫程式,可以直接指定手臂的兩個內角,令馬達做對應的轉動,因此,再 Θ1、Θ2、Θ3 計算出兩個內角為: 這就是我們需要的 X-Y 座標轉角度了,實際上我量得的 L1 與 L2,分別是 12 與 9 公分,倒要再複習一下怎麼量,記得是從大齒輪的軸心開始量,而不是小齒輪: 手臂位置的初始化現在的問題在於,手臂一開始要怎麼擺放?還記得之前寫過讓手臂停靠的 這麼一來,手臂前端的座標位置,就是 (12, 9) 了,我將這個手臂初始化的程式取名為 我沒有實際拿量角器去量停靠後要轉多少度,而是直接讓它們都轉到我想要的 90 度,接下來重置馬達感應器,這樣後續的馬達轉動,就有了角度依據了。 我有一個 接下來當然是求 Θ1、Θ2、Θ3 的三個方塊了,分別命名為 雖然我已經能將座標轉角度,不過,那是目標角度,也就是實際上,對馬達真正需要的是從目前的角度到下個角度,必須轉多少角度才行,這很簡單,因為一開始內角都是 90 度,而馬達被重置歸零了,我們可以從馬達後來被量得的角度,與 90 度做運算,知道目前處於哪個角度,再與目標角度作運算,就知道要轉多少度了。 這時還要記得,大小齒輪比是 40 : 8,因此,馬達量得的角度,必須除以 5 才對,這些運算,我寫成了一個 接下來就是指定座標轉動馬達的部份了,這我將之命名為 弄些簡單的繪圖測試所有基礎就都完成了,那麼,來畫個直線吧!記得嗎?雖然先前我設計,讓兩個馬達可以在相同時間內,完成指定的角度轉動,不過,這畫出來並不會是直線,而是弧線,為了能畫出直線,那就是將弧線移動分解為更小的弧線,一次一點畫,只要夠小夠細,那麼畫出來就會像是直線。 雖然說,分得越細越好,不過,繪圖也會變慢,再加上 EV3 執行程式並不是那麼快速,因此,我就只分為 20 段好了: 那麼就來畫個 0 試試看吧!只要加上落筆就可以開始畫了: 來看看實際作動與畫出來的樣子,先畫個 0 好了: 當然,你也可以設計來畫個 2: 以 EV3 馬達解析度最小為 |