1.2-SDK方式實現(xiàn)機械臂三維空間移動《智能機器人技術應用》_第1頁
1.2-SDK方式實現(xiàn)機械臂三維空間移動《智能機器人技術應用》_第2頁
1.2-SDK方式實現(xiàn)機械臂三維空間移動《智能機器人技術應用》_第3頁
1.2-SDK方式實現(xiàn)機械臂三維空間移動《智能機器人技術應用》_第4頁
1.2-SDK方式實現(xiàn)機械臂三維空間移動《智能機器人技術應用》_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

項目一機械臂移動與物體抓取創(chuàng)靈實驗平臺SDK方式實現(xiàn)機械臂三維空間移動任務三職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結(jié)07任務拓展08任務三

SDK方式實現(xiàn)機械臂三維空間移動了解Python-SDK并掌握安裝方法;了解Python-SDK控制機械臂的原理以及常用函數(shù)的使用;學習通過Python-SDK編寫控制機械臂Python腳本方法并能夠熟練自行編寫對應腳本完成所需要求。了解Python-SDK;掌握Python-SDK安裝方法;了解Python-SDK控制機械臂原理;掌握Python-SDK常用函數(shù)的使用;掌握使用Python-SDK編寫控制機械臂Python腳本方法。職業(yè)能力目標01實驗目的實驗內(nèi)容職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結(jié)07任務拓展08任務三

SDK方式實現(xiàn)機械臂三維空間移動

此任務要求同學們了解Python-SDK并掌握安裝方法,了解Python-SDK控制機械臂的原理以及常用函數(shù)的使用,并學習通過Python-SDK編寫控制機械臂Python腳本方法并能夠熟練自行編寫對應腳本完成所需要求。任務描述任務要求了解SDK、Python-SDK的原理;成功安裝Python-SDK;完成Python-SDK控制機械臂原理學習與實驗;完成使用Python-SDK編寫控制機械臂Python腳本方法。任務描述與要求02職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結(jié)07任務拓展08任務三

SDK方式實現(xiàn)機械臂三維空間移動任務分析思考一下,我們呢要如何通過SDK控制機械臂呢?我們要通過什么方式編寫腳本,并學習相關知識呢?三.根據(jù)自己的了解,要怎樣去應用所學知識,可以促進自己進一步地學習?任務分析與計劃03任務計劃表項目名稱創(chuàng)靈實驗平臺任務名稱SDK方式實現(xiàn)機械臂三維空間移動計劃方式自主設計計劃要求請用6個計劃步驟來完整描述出如何完成本次任務序號任務計劃1

2

3

4

5

6

通過上面的思考,你是否對本任務要完成的工作有所了解?讓我們一起來制訂完成本次任務的實施計劃吧!任務分析與計劃03職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結(jié)07任務拓展08任務三

SDK方式實現(xiàn)機械臂三維空間移動05知識儲備Python-SDK安裝方法2Python-SDK1uArm-Python-SDK源碼閱讀3

Python-SDK是一個使用Python封裝的用于Swift/SwiftPro機械臂基本控制的庫,機械臂基本控制的庫在本地【./uArm-Python-SDK-2.0/】文件夾下,github地址為:/uArm-Developer/uArm-Python-SDK。Python-SDK包含Swift/SwiftPro機械臂常用的基本操作,如移動、吸盤吸泵吸放、電動夾子基本使用以及各種拓展功能等等。豐富的函數(shù),使得編寫控制機械臂的編程變得極為簡單。什么是Python-SDK?Python-SDK04Python-SDK04

SDK就是SoftwareDevelopmentKit的縮寫,中問意思是:軟件開發(fā)工具包。為了解釋“SDK”我們引入API、動態(tài)連接庫、導入庫等概念:(1)API(ApplicationProgram--mingInterface):是操作系統(tǒng)留給應用程序的一個調(diào)用接口,應用程序通過調(diào)用操作系統(tǒng)的API而使操作系統(tǒng)去執(zhí)行應用程序的命令。我們要怎么使用API?Python-SDK04

(2)DLL(DynamicLinkLibary)動態(tài)連接庫:我們經(jīng)??吹揭恍?dll格式的文件,這些文件就是動態(tài)連接庫文件,其實也是一種可執(zhí)行文件格式。跟exe文件不同的是,dll文件不能直接執(zhí)行,他們通常由.exe在執(zhí)行時裝入內(nèi)含有一些資源以及可執(zhí)行的代碼等。思考一下,在生活中我們有哪些地方用到了.dll?Python-SDK04

(3)導入庫:導入庫是為了在DLL中找到API的入口點而使用的,所以,為了使用API函數(shù)。我們要又跟API所對應的.H和.LIB文件,而SDK正式提供了一整套開發(fā)Windows應用程序所需的相關文件、范例和工具的“工具包”。思考一下,我們要怎么導入對應庫?什么是API?04

API(ApplicationProgrammingInterface,應用編程接口)其實就是操作系統(tǒng)留給應用程序的一個調(diào)用接口,應用程序通過調(diào)用操作系統(tǒng)的API而使操作系統(tǒng)去執(zhí)行應用程序的命令(動作)。其實早在DOS時代就有API的概念,只不過那個時候的API是以中斷調(diào)用的形式(INT21h)提供的,我們要怎么使用API?什么是API?04

在DOS下跑的應用程序都直接或間接的通過中斷調(diào)用來使用操作系統(tǒng)功能,比如將AH置為30h后調(diào)用INT21h就可以得到DOS操作系統(tǒng)的版本號。而在Windows中,系統(tǒng)API是以函數(shù)調(diào)用的方式提供的。同樣是取得操作系統(tǒng)的版本號,在Windows中你所要做的就是調(diào)用GetVersionEx()函數(shù)。我們要怎么使用API?什么是DLL?04

DLL,即DynamicLinkLibrary(動態(tài)鏈接庫)。在Windows環(huán)境下含有大量.dll格式的文件,這些文件就是動態(tài)鏈接庫文件,其實也是一種可執(zhí)行文件格式。跟.exe文件不同的是,.dll文件不能直接執(zhí)行,通常由.exe在執(zhí)行時裝入,內(nèi)含有一些資源以及可執(zhí)行代碼等。其實Windows的三大模塊就是以DLL的形式提我們要怎么使用DLL?什么是DLL?04

供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了API函數(shù)的執(zhí)行代碼。為了使用DLL中的API函數(shù),必須要有API函數(shù)的聲明(.h)和其導入庫(.lib),導入庫可以先這樣理解,導入庫是為了在DLL中找到API的入口點而使用的。我們要怎么使用DLL?Python-SDK04

SDK包含了使用API的必需資料,所以也常把僅使用API來編寫Windows應用程序的開發(fā)方式叫做“SDK編程”。而API和SDK是開發(fā)Windows應用程序所必需的東西,所以其它編程框架和類庫都是建立在它們之上的,比如VCL和MFC,雖然比起“SDK編程”來有著更高的抽象度,但這絲毫不妨礙在需要的時候隨時直接調(diào)用API函數(shù)。我們要怎么使用DLL?Python-SDK04

那么我們知道了SDK是一個萬能的軟件工具包,可以作為輔助工具幫助我們開發(fā)所需軟件。那么我們要怎么使用SDK呢?SDK有哪些常用函數(shù),我們要怎么去使用它們呢?那么接下來我們將要介紹一些SDK的常用方法,如下表1-11-1為官方展示的一些使用uArm-Python-SDK控制機械臂的方法:Python-SDK04連接機械臂:swift.connect()##連接機械臂swift.disconnect()##斷開連接獲取方法:swift.get_power_status()##獲取工作狀態(tài)swift.get_limit_switch()##獲取工作信息swift.get_gripper_catch()##機械臂抓取swift.get_pump_status()##獲取吸泵狀態(tài)swift.get_mode()##獲取模型swift.get_servo_attach(servo_id=2)##獲取電機加載swift.get_servo_angle()##獲取電機角度swift.get_polar()##獲取坐標系swift.get_position()##獲取位置swift.get_analog(0)##獲取模擬swift.get_digital(0)##獲取數(shù)據(jù)

SDK常用方法:Python-SDK04設置方法:swift.set_speed_factor(1)##設置速度參數(shù)swift.set_mode(mode=0)##設置模擬量值swift.set_wrist(90)swift.set_servo_attach()##設置電機加載swift.set_servo_detach()##設置電機分離swift.set_buzzer(frequency=1000,duration=2)swift.set_pump(on=True)##設置吸泵swift_set_gripper(catch=True)##設置機械臂移動swift.reset()##重置狀態(tài)swift.set_position(x=200,y=0,z=100,speed=100000)##設置參數(shù)swift.set_polar(stretch=200,rotation=90,height=150)##設置坐標swift.set_servo_angle(servo_id=0,angle=90)##設置舵機屬性

SDK常用方法:05知識儲備Python-SDK安裝方法2Python-SDK1uArm-Python-SDK源碼閱讀3Python-SDK安裝方法04

在本小節(jié)的學習中,我們將要了解如何安裝Python-SDK。前提環(huán)境要求:安裝Python-SDK要求必須具備Python3環(huán)境,下面提供了在開發(fā)板上安裝Python-SDK的方法。(本章節(jié)不講述Python3環(huán)境安裝,安裝步驟詳情請自行查閱官網(wǎng):/)Python-SDK安裝方法04

步驟一:首先我們要解壓任務同級目錄下的uArm-Python-SDK-2.0.zip包,如圖所示:

步驟二:使用unzip命令解壓壓縮包:

步驟三:進入安裝包目錄,執(zhí)行安裝命令:

出現(xiàn)如下圖提示表明安裝成功:安裝成功提示05知識儲備Python-SDK安裝方法2Python-SDK1uArm-Python-SDK源碼閱讀3uArm-Python-SDK源碼閱讀04

進入解壓出來的安裝包,查看安裝包源碼的目錄結(jié)構,這里可以在左邊的目錄界面查看目錄結(jié)構,如圖所示:uArm-Python-SDK源碼閱讀04

了解列表核心的uarm代碼目錄樹結(jié)構,如圖所示:uArm-Python-SDK源碼閱讀04

當我們程序報錯,出bug無法運行的時候,我們可以通過閱讀了解每個.py、.txt等文件名來進行相關代碼的修正。uArm-Python-SDK源碼閱讀04

那么我們?nèi)绾伍喿x一段源碼的結(jié)構呢?源碼之所以叫源碼,是因為它不是幾個文件,幾行代碼組成的。源碼都是一個很龐大很復雜的東西。幾百個文件,幾萬行代碼。這樣讓我們第一次拿到源碼后,不知從何下手。所以,我們拿到源碼后,不要著急看,要先找入口,根據(jù)文件功能找入口。例如,閱讀一個SDK的源碼,首先看看文檔里面,第一個調(diào)用SDK的方法。當帶有目的去看源碼,順著一條線去找源碼,這樣才會讓你有明確的方向感。uArm-Python-SDK源碼閱讀04uArm-Python-SDK核心代碼結(jié)構說明:1.uarm/wrapper/swift_api.py:uArm-Python-SDK核心API模塊,主要核心的方法都在這個模塊中2.uarm/tools/threads.py:線程管理模塊3.uarm/tools/list_ports.py:獲取串口端口號的方法集成模塊4.uarm/tools/config.py:機械臂固定的配置文件5.uarm/swift/protocol.py:控制機械臂過程用到的串口命令6.uarm/swift/pump.py:吸泵控制模塊職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結(jié)07任務拓展08任務三

SDK方式實現(xiàn)機械臂三維空間移動使用uArm-Python-SDK編寫控制機械臂的Python腳本204任務實施uArm-Python-SDK實現(xiàn)控制機械臂原理1

SDK方式實現(xiàn)機械臂三維空間移動任務三通過指令控制機械臂uArm-Python-SDK實現(xiàn)控制機械臂原理:

通過源碼閱讀可以發(fā)現(xiàn),uArm-Python-SDK是通過串口方式與機械臂進行通信,uArm-Python-SDK將串口指令封裝在【uarm/swift/protocol.py】中,當執(zhí)行API函數(shù)時,則通過向機械臂發(fā)送對應串口指令完成控制機械臂的任務,示意圖如圖所示:

SDK方式實現(xiàn)機械臂三維空間移動任務三uArm-Python-SDK常用函數(shù)使用:常用函數(shù)舉例如下:swift=SwiftAPI():連接機械臂,初始化機械臂;swift.reset(speed=1000):機械臂重置,默認速度是1000,可根據(jù)實際需要進行調(diào)整;swift.get_position():獲取機械臂位置方法,返回的是x,y,z浮點類型值;swift.set_position(x=100,y=100,z=80):移動機械臂到指定坐標方法;swift.set_pump(on=False):打開或關閉吸泵方法,默認是Flase吸泵是關閉,需要打開是將on=True即可。05任務實施使用uArm-Python-SDK編寫控制機械臂的Python腳本2uArm-Python-SDK實現(xiàn)控制機械臂原理13SDK編寫機械臂的Python腳本我們要怎樣根據(jù)預覽代碼去編寫機械臂右移、上移等?我們要如何編寫相應代碼去達到我們所需目的,例如通過機械臂左右移動到指定位置?使用uArm-Python-SDK編寫控制機械臂的Python腳本

05通過上面的思考,你是否對本任務要完成的任務有所了解?接下來我們進入使用uArm-Python-SDK編寫控制機械臂的Python腳本的環(huán)節(jié)進行學習吧!使用uArm-Python-SDK編寫控制機械臂的Python腳本05進入學習編寫Python腳本

在本小節(jié)中,我們已經(jīng)了解了如何閱讀uArm-Python-SDK源碼結(jié)構,學習了uArm-Python-SDK核心代碼以及常用函數(shù)。同時還學習了uArm-Python-SDK控制機械臂的原理,那么接下來我們來學習編寫控制機械臂的Python腳本。使用uArm-Python-SDK編寫控制機械臂的Python腳本05

在之前的章節(jié)中,我們曾接觸過裝飾器,通過了解他的定義,API、DLL、導入庫等概念大致知曉了他的使用方法,那么在接下來的小節(jié)中,我們將具體介紹異步裝飾器并使用在SDK編寫控制機械臂的Python腳本中。Python裝飾器:可以讓被裝飾的函數(shù)在不修改代碼的情況下增加額外的功能,裝飾器本質(zhì)上是一個函數(shù)異步:即非阻塞,意味著在執(zhí)行某項任務時候不會阻塞后續(xù)或其他任務的執(zhí)行多線程:在進程基礎上開辟多個執(zhí)行任務的線程使用uArm-Python-SDK編寫控制機械臂的Python腳本05實驗預覽:使用uArm-Python-SDK編寫控制機械臂的Python腳本05#對應封裝代碼importtimefromuarm.wrapper

importSwiftAPIfromthreadingimportThreadswift=SwiftAPI()#調(diào)用API實例化time.sleep(3)swift.reset(speed=1000,z=100)#速度參數(shù)為1000,z軸高度100stop_=

False

def

async_call(fn):

"""異步裝飾器:paramfn:函數(shù):return:"""

def

wrapper(*args,**kwargs):#傳入字典th=Thread(target=fn,args=args,kwargs=kwargs)th.start()

returnwrapper

實驗預覽:使用uArm-Python-SDK編寫控制機械臂的Python腳本05#對應封裝代碼importtimefromuarm.wrapper

importSwiftAPIfromthreadingimportThreadswift=SwiftAPI()#調(diào)用API實例化time.sleep(3)swift.reset(speed=1000,z=100)#速度參數(shù)為1000,z軸高度100stop_=

False

def

async_call(fn):

"""異步裝飾器:paramfn:函數(shù):return:"""

def

wrapper(*args,**kwargs):#傳入字典th=Thread(target=fn,args=args,kwargs=kwargs)th.start()

returnwrapper

@async_calldef

move_left():position=swift.get_position()x=position[0]y=position[1]z=position[2]

whileTrue:y=y-2swift.set_position(x=x,y=y,z=z)#坐標參數(shù)設置time.sleep(0.5)

ifstop_:

break

def

stop_button():

globalstop_stop_=Trueswift.disconnect()

print("停止成功")實驗預覽:使用uArm-Python-SDK編寫控制機械臂的Python腳本05開始(點擊運行,機械臂開始向左移動):move_left()結(jié)束(點擊運行,機械臂結(jié)束移動):stop_button()通過閱讀并運行代碼,你是否了解了通過SDK控制機械臂的原理嗎?那你能不能舉一反三,思考如何更改上述代碼,控制機械臂向右、向上、向下移動呢?#請根據(jù)課本所學,編寫相應代碼:實驗預覽:使用uArm-Python-SDK編寫控制機械臂的Python腳本05我們剛剛已經(jīng)通過閱讀代碼并運行向左移動機械臂這一實驗,對SDK控制機械臂有了一定的了解了吧,那么接下來我們來學習如何控制吸泵的開啟與關閉。importtimefromuarm.wrapper

importSwiftAPIswift=SwiftAPI()time.sleep(3)swift.reset(speed=1000)swift.set_pump(on=True)關閉吸泵:swift.reset(speed=1000)swift.set_pump(on=False)time.sleep(2)swift.disconnect()打開吸泵:職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結(jié)07任務拓展08任務三

SDK方式實現(xiàn)機械臂三維空間移動任務檢查與評價06序號評價內(nèi)容評價標準分值得分1知識運用(20%)掌握相關理論知識,理解本次任務要求,制定詳細計劃,計劃條理清晰,邏輯正確(20分)20分

理解相關理論知識,能根據(jù)本次任務要求、制定合理計劃(15分)了解相關理論知識,有制定計劃(10分)無制定計劃(0分)2專業(yè)技能(40%)完成SDK方式控制機械臂的Python腳本。(40分)40分

完成源碼結(jié)構閱讀學習以及SDK控制機械臂的原理學習。(25分)完成Python-SDK安裝。(10分)沒有完成Python-SDK安裝。(0分)3核心素養(yǎng)(20%)具有良好的自主學習能力、分析解決問題的能力、整個任務過程中有指導他人(20分)20分

具有較好的學習能力和分析解決問題的能力,任務過程中無指導他人(15分)能夠主動學習并收集信息,有請教他人進行解決問題的能力(10分)不主動學習(0分)4課堂紀律(20%)設備無損壞、設備擺放整齊、工位區(qū)域內(nèi)保持整潔、無干擾課堂秩序(20分)20分

設備無損壞、無干擾課堂秩序(15分)無干擾課堂秩序(10分)干擾課堂秩序(0分)總得分1、請參照評價標準完成自評和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論