淘新聞

uArm,讓我怎麼說愛你?

前 言

首先自我介紹一下,筆者目前從事的工作與很多的機械設備打交道,而且這些設備都是依靠伺服、氣缸等進行運動。但是,這些設備都是國外的,即便是有國內的設備表現的也是很不穩定,同時精度也不是很夠,個人感覺還是國內自動化設備不夠發達。這難免會想到基礎教育,類似Arduino、機械臂、機器人、在國外中小學已經開始進行實踐,但是國內可能在大城市才有機會接觸到,像筆者等從農村出來的娃,直到現在才發現自己的興趣在此,但是目前自己只能在業餘的時候進行學習開發。現在只能寄希望于自己的孩子能夠早早的接觸類似產品,培養孩子的興趣!

類似uArm機械臂產品還有7Bot、Dobot等,目前可能最流行的也就這幾家了吧,據知乎上爆料7Bot的創始人是從uArm項目中出來創業的。所以這兩者之間還是有一定的繼承性。不管任何產品都是從模仿開始進行技術積累而後進行創新發展。據我查閱這三家的網站,可能資料、軟體最完備,因為從目前介紹的資料Robot可以實現書寫字體,繪畫,鐳射雕刻等動作其中最重要的一個參數是其重複精度可以達到0.01mm,但是目前uArm的精度只能達到±5mm,可想這裡相差還是很大的。也許我們這裡uArm的設計者想要其實現的功能目標不一樣。

開 箱

本次是我收到最快體驗產品最快的一次,這次愛搞機發的是順豐快遞,好久沒有體驗這麼快的快遞了從深圳到北京只用了僅僅兩天。並且在收快遞時發現產品並沒有自己想像那麼大和重,大小只有A4紙大小,重量也就1kg左右。在網上搜索了一下,目前關於uArm的文章比較少,因此在這裡給大家做一下開箱:

uArm的盒子比A4紙稍微大一點,感覺不是很占地方。外面套著一個白色外套可以保證盒子不會被無意中打開,同時黑白配以及白色外套上的電路設計表明這裡是一個科技產品。

從旁邊可以抽拉出盒子。

移除外套之後可以發現一個鼓鼓的黑色紙盒,看來裡面放著不少的東西,下面開箱。

打開盒子之後發現裡面竟然還有個袋子,考慮的比較貼心,大小正好能夠把盒子放到袋子裡面。

手臂用塑膠袋子包裹通過盒子疊起來的框架進行支撐,由於主體框架已經被組裝起來,因此可以快速上手使用。盒子右側下方通過盒子分別放置電源、氣泵、支架。全部產品展示如下:

貼心的是還準備的有螺絲刀。

我這裡單純列這八顆螺絲的目的是讓大家看看這幾顆螺絲品質很好,不是我們普通使用的的螺絲。

USB資料線為麵條線,手感不錯,同時接頭都為金屬材質,不是我們常見的塑膠材質。

這是四個腿,拿在手中很輕,看來使用的是鋁合金,並且頭部使用由橡膠墊防滑。整體感覺就是做工精緻。這也是uArm產品宣傳採用CNC加工。

外 觀

手臂外觀,手臂拿在手裡不沉,結構都是使用的是CNC加工的鋁合金,加工精密,螺絲都很考究,這是我對這台設備的第一感覺,但是使用的是舵機,可能在精度上不是很高。

兩側黑色的是伺服電機。

這是吸嘴細節,吸嘴上部還有一個電機可以控制吸嘴進行180°的旋轉。

這裡是資料線介面以及電源介面。資料線介面以及電源介面這個設計位置由於機械臂在旋轉有可能出現氣泵擋住線導致電源線接觸不良,同時,幾天的體驗發現這兩根線接頭都比較緊,可能故意設計,因為機械臂在不停的運動。防止接觸不良。

底座,這裡的設計固定還是挺好的,如果害怕不穩的話還有吸盤底座,可以更穩定。就怕設備發瘋的時候容易燒壞電機。

當我看到這個舵機的時候,心情就涼了,可能這個機械臂只能做個動作了。高難度可能不能完成了。

兩側是舵機,以及走線情況。

體 驗

拿到這台機械臂,我的小朋友都想借來玩玩,看來我周邊的極客還不少。對於這台機械臂試用,你不寫點代碼,你都不好意思試用。所以本人必須得寫點東西。在寫東西的時候發現問題就來了,這台設備的控制協定,完全不知道是什麼,從官網上都找不到,最後是聯繫到官方的客服才拿到資料,但是請注意這裡的資料全是英文資料,並且只有一個文檔。後來還是在例子文檔中查找到幾個例子,通過學習例子才實現控制機械臂。就是這樣的過程也是通過一個漫長的過程,其中和一起試用的“剛者為王”進行一起交流才使得試用順利進行。

目前官方的問題就是缺少些說明文件,比如如何通過代碼實現機械臂運動、抓取、警報等等。以及可以Teaching的軟體或者是APP、因為有些極客就是為了實現一些動作,或者畫圖,其實後來發現我自己編寫的代碼就是想實現Teaching實現一些代碼動作。

試用第一步:使用官方的Uarm_Client.exe程式進行動作控制,首先說的是這個程式使用Java編寫的,所以使用的時候還得安裝Java的運行環境。

發現了吧,英文介面,但是還是會使用的。極客起碼是大學畢業吧,當然,還有不是但是初中文化都是可以認識的。哈哈

使用第一步,首先在Setting中選擇COM埠,然後選擇Connect,這時Connect就會變黃,證明連接OK,你可以點擊RESET測試機械臂是否歸位,只要連接上你就可以控制設備進行各個位置的移動,以及吸嘴的吸附和放開的動作。但是這裡只是實現控制,大家可能動上幾次就覺得沒有啥意思了,因為我們想要的是機械臂的自動完成動作,那樣看上去才是高大上。如果你有Leap Motion的話你可以通過Leap Motion進行動作控制,筆者這裡沒有就沒有嘗試了,京東上有賣,有興趣可以購買玩。

試用第二步:

拿到產品經過上面軟體的簡單的測試後,就想著怎麼控制機械臂運動,但是苦於沒有協議,只能通過串口助手抓取協議,抓取後就發現都是數字代碼,沒有說明完全看不懂,通過串口助手發送下面的命令可以實現一兩個簡單動作,但是這遠遠不夠呀。

下麵是抓到的命令:

氣嘴:吸附 F0 AA 1D 00 F7

鬆開 F0 AA 1D 01 F7

初始化

F0 AA 1E 01 00 00 00 01 00 00 00 F7

如果移動位置的話命令有一大段,完全摸不到頭腦,怎麼辦,一時的試用陷入僵境,不知道該怎麼用了。後來廠家發過來Github的連結,通過查找找到一些例子代碼,通過理解代碼,才讓我能夠控制機械臂運動。因為自己會Arduino,所以就對各種例子進行代碼燒入,發現《Getting Started》這個代碼可以輕鬆實現運動,因此我的第二步試用,使用這個代碼學習到的命令實現了設備Teaching 動作,可以讓設備進行一些動作。但是這些動作都是通過命令首先獲取到當前機械臂的位置座標,然後把需要運動的位置分別燒錄到機械臂中。這只是控制的第一步。後來經過編寫代碼實現輸入Teach命令可以實現進入Teach模式,進行動作記錄。然後通過輸入命令move命令實現設備動作。

實現設備teach的程式碼片段

+++++++++++++++++++++++++++++實現設備teach的程式碼片段++++++++++++++++++++++++++++++

if (readSerial == 't') { uarm.alert(1, 300, 100);//長響一聲表示開始teaching for (int i = 0; i

uarm.get_current_xyz();

Teach_x_pos[i] = uarm.get_current_x(); Teach_y_pos[i] = uarm.get_current_y(); Teach_z_pos[i] = uarm.get_current_z(); delay(5000); uarm.alert(i, 100, 100);//記錄第幾次,響幾聲

Serial.print("The current location is "); Serial.print(i); Serial.print(Teach_x_pos[i]); Serial.print(" , "); Serial.print(Teach_y_pos[i]); Serial.print(" , "); Serial.print(Teach_z_pos[i]);

Serial.println(); } }

if (readSerial == 'm') { for (int i = 0; i

} }

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

試用第三步

進行上述的試用後發現還有一些小的問題沒有實現,就是增加一些動作,以及動作編輯。這就得需要上位機進行編寫了。還好之前自學過C#,也拿著C#編寫過上位機,所以還是有點經驗的,要不然串口通訊還是會把人搞死的。這裡就是想實現Teaching動作的編寫以及記錄,方向定好了之後,首先開始編寫,編寫其實挺順利的。但是在動作與動作之前的間隔時間上調試了很長時間,因為無法判斷上一動作是否完成因此,無法知道什麼時候發送第二次命令,發送重疊導致設備動作不正確,在調試的過程中出現了各種設備“抽風”,不過個人感覺還是很正常的。調試嘛!不過在這裡要感謝媳婦的不殺之恩,因為這兩天都在偵錯工具,沒有時間陪兒子玩。(兒子是暑假才來京,一般是很少時間在一起的。)

聽一位大神說,程式師用20%的時間思考怎麼編寫代碼,15%的時間寫代碼,65%的時間在調程式。發現也確實是,自己用很長的一段時間再寫代碼。不過現在功能已經實現並能運動。但是成功之後發現個問題就是,Teaching的座標最後設備並沒有到達位置感覺有一定的誤差,不知道為什麼?感覺像是Offset值,但是測試幾個值之後,不是。好在現在動作完成了。

上圖是我編寫的一個軟體的介面,目前實現的功能可以對機械手臂進行動作的Teaching,操作的步驟:

第一步:點擊馬達斷電,這時就可以對移動手臂。

第二步:移動手臂到你想要的目標位置,然後點擊獲取位置,然後會在接收資訊框接收位置座標。

第三步:點擊增加位置把當前獲得的座標位置添加到運行Step中。

第四步:點擊你想要的動作,如吸嘴旋轉、吸嘴吸附等動作。

第五步:保存運行step到檔中。

第六步:點擊馬達加電。

第七步:點擊運行,機械臂就開始運動了。

注意串口開關要點兩次才能連接上。

然後大家可以按照自己的想法進行移動機械手臂了。

然後大家想要更改的話可以下載修改。

代碼下載

測 試

為了測試這款機械臂的能力,筆者按照幾個點位的Teaching使得機械臂寫了個A字,重複了幾次機械臂的定位還是比較準確的,但是在走直線的時候朝著某一個方向會固定出現彎折現象。也能達到標稱的5mm內。

總 結

到了該總結的時候了,關注這款機械臂是在網路上看到其應用的相關視頻,同時經過瞭解這款產品主要是針對國外進行銷售,有一些資料都是國外極客寫的,目前廠家正在針對國內進行試用銷售,但是首先得培養一批極客開發一些應用和說明才能擴大產品的應用。筆者算是剛入門的吧。為了儘快方便的使用這款機械臂,筆者開發了一個可以進行學習的軟體。但是都得通過上位機完成。

下面該說一下這款機械臂的優缺點了,對於這款產品試用了大概20天了,這次算是比較時間長的一次試用了,對於這樣一款開放程度比較高的產品試用時間不能等同於其它的產品,需要進行開發代碼才能使用,同時這款產品如何開發時沒有針對國內開發的說明和教程。因此很長的一段時間是在尋找教程和介面檔。

優點:

1、做工絕對精緻,因為使用的是CNC加工,螺絲都不是普通的螺絲。

2、配件數據線精緻。

3、產品就是優點。但是配套就是缺點了。

缺點:

1、針對國內的產品說明和教程可以說是沒有(資料的完整性可以對比Dobot的資料相當完備)。

2、廠家目前可能處於成長階段,沒有時間,或者很少時間去與使用者溝通答疑。

3、機器有的時候會發神經,沒有及時斷電的開關。

4、目前使用舵機的機械臂,可能由於演算法問題無法達到設置的座標值位置。

5、基本應用軟體發展的少,極客上手緩慢。會影響使用熱情。

6、旋轉動作時候抖動比較厲害。可能這是舵機的問題或者是代碼優化不好。