無人物流-自動疊貨系統
迷你物流系統介紹
在前一節體驗過用滑鼠控制手臂吸盤來堆疊貨物,即便在控制上很直觀但要將貨箱一個個精準疊好,真的不是一件容易的事情,而且堆疊起來的貨物一碰就倒。
那真正的物流作業場景,貨物堆到棧板上之後還要裝到貨車上,一路舟車勞頓才能運到目的地,如果貨物也都是單純向上疊高,還沒到目的地就都倒西歪了,所以在疊貨時一層層的貨箱一定是綜縱橫交錯的堆疊,以達到穩定的目的。
因此本節目標就是要用Dobot機械手臂與吸盤模組,加上雷切迷你貨物棧板套件,來模擬真實物流場景的裝貨流程,並用Blockly程式實現自動化疊貨系統。
要用程式實現自動化,首先就要清楚地知道每個物件的規格,我們限用尺量出迷你貨物跟棧板的尺寸。
迷你貨箱的尺寸是2x3x4cm,而棧板的尺寸是2x10x10cm,剛好與先前在A4紙上繪製的H工作區相吻合,高度也與貨箱平放時等高。
將8個貨箱以2x4cm這一面貼地,靠齊在一起剛好可以堆疊出8x8的正方形範圍,放在H工作區的下半部,每一邊都有1cm寬的緩衝區。
而我們確切的目標如上圖所示,就是要將貨物從地上搬運到棧板上,並且交錯排列,也就是從上左圖變成上右圖。
疊貨路徑規劃
將每個道具的尺寸都設計成整數公分,就是為了能夠精準計算物體在空間中的位置,以下圖呈現第一個要搬運的貨物在平面上前後的位置,並以貨物的正中心標記座標,這個點同時也是吸盤要對準的位置,貨物原本在H區域下半部座標(230,-30),要將他移動到上半部(220,70)的棧板上,並且方向上還要旋轉90度。
從側面來看,由於加入了棧板有高度差,在規畫路徑上就不能直接從A點到達B點,必須以ㄇ字型的門框路徑來搬運,以面在移動過程中貨物與棧板發成碰撞,因此當吸盤吸住貨物之後先離地40mm,並且在中間這個階段旋轉貨物方向,接著到達指定地點再下降20mm,最後才放開吸盤完成一次搬運。
可以先試著自己拼湊出程式積木,除了多加一個Z軸的維度,需要一點空間感思考一下,想清楚整個運動流程後,其實並不比在平面上畫圖困難。
完成第一次搬運的程式如左下圖所示,在嘗試過後如果還是卡關可以參考,由於跟畫圖時一樣是以桌面高度作為基準,所以程式開始時一樣要將吸盤貼到桌面高度。
成功搬運一次了,但當然不是就這一小段程式就能般完所有的箱子呀,剩下的7個箱子,找出每個箱子搬運前後的座標反而是最麻煩的事情,為了後續更加全面的自動化做鋪路,需要先將目前的程式包裝成[MoveBox]函式,當中的5個參數為,貨物在地面上的座標以(X1,Y1)表示,貨物在棧板上的座標以(X2,Y2)表示,以及旋轉的角度Rot,。
使用上面這段程式,就會依序移動兩個貨物到指定位置,後續的座標就請聰明的讀者找出來,並用多個[MoveBox]函數分別搬運,或者也可以找出貨物擺放規律,用迴圈包住[MoveBox]以進行批次搬運。
如果你覺得目前的任務只是在同一張紙上搬來搬去太無聊了,我們的任務還可以再升級,前一節介紹到手臂的可運動範圍其實有270度,是一個馬蹄形的區域,所以我們還可以在手臂的上下兩側,也就是+-Y的兩區域,再圈出兩個H字型安全工作區,如上圖所示3張A4紙每一張都有一個H字型區域,可以將貨物跟棧板放在不同張紙上,搬運的任務就會變得更有意思。
在三張紙上畫出H字型安全工作區的函式如上圖所示,之前畫的位置落在+X區域,是以plotH2函式所繪製。