版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目一機械臂移動與物體抓取創(chuàng)靈實驗平臺機械臂安裝與機械臂空間坐標任務二職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標了解并掌握安裝機械臂的詳細步驟(詳細步驟請參考說明書);學習機械臂的空間坐標(即x、y、z軸上)表示;了解并測試機械臂運動范圍極限測試。掌握uArm機械臂的安裝方法;了解機械臂空間坐標;了解機械臂運動范圍。職業(yè)能力目標01實驗目的實驗內容職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標
此任務要求同學們了解并掌握安裝機械臂的詳細步驟(詳細步驟請參考說明書),學習如何標識并使用機械臂的空間坐標(即x、y、z軸上),以及完成機械臂運動范圍極限測試。任務描述任務要求掌握uArm機械臂的安裝方法,并成功完成機械臂安裝與搭建;了解機械臂空間坐標,完成機械臂移動的相關實驗;了解機械臂運動范圍并完成機械臂極限范圍測試。任務描述與要求02職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標任務分析想象一下在未來,機械臂會有哪些用途?我們可以設置多種機械臂模式來簡化我們的生活嗎?有哪些方法?三.根據(jù)自己的了解,要怎樣去學習使用機械臂,可以促進自己進一步地學習?任務分析與計劃03任務計劃表項目名稱創(chuàng)靈實驗平臺任務名稱機械臂安裝與機械臂空間坐標計劃方式自主設計計劃要求請用6個計劃步驟來完整描述出如何完成本次任務序號任務計劃1
2
3
4
5
6
通過上面的思考,你是否對本任務要完成的工作有所了解?讓我們一起來制訂完成本次任務的實施計劃吧!任務分析與計劃03職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標機械臂204知識儲備異步裝飾器1什么是裝飾器?04
器指的是工具,可以定義成成函數(shù),裝飾指的是為其他事物添加額外的東西點綴。
合到一起的解釋:
裝飾器指的定義一個函數(shù),該函數(shù)是用來為其他函數(shù)添加額外的功能,就是拓展原來函數(shù)功能的一種函數(shù)思考一下,我們要怎么使用裝飾器呢?為何要用裝飾器?04開放封閉原則
開放:指的是對拓展功能是開放的;
封閉:指的是對修改源代碼是封閉的。
裝飾器就是在不修改被裝飾器對象源代碼以及調用方式的前提下為被裝飾對象添加新功能。思考一下,我們要怎么使用裝飾器呢?異步裝飾器04
Python裝飾器:可以讓被裝飾的函數(shù)在不修改代碼的情況下增加額外的功能,裝飾器本質上是一個函數(shù)。異步裝飾器件:即非阻塞,意味著在執(zhí)行某項任務時候不會阻塞后續(xù)或其他任務的執(zhí)行的Python裝飾器。思考一下,我們要怎么使用異步裝飾器呢?05任務實施機械臂2異步裝飾器13什么是機械臂?04
機械臂是指高精度,多輸入多輸出、高度非線性、強耦合的復雜系統(tǒng)。因其獨特的操作靈活性,已在工業(yè)裝配、安全防爆等領域得到廣泛應用。
機械臂是一個復雜系統(tǒng),存在著參數(shù)攝動、外界干擾及未建模動態(tài)等不確定性。因而機械臂的建模模型也存在著不確定性,對于不同的任務,需要規(guī)劃機械臂關節(jié)空間的運動軌跡,從而級聯(lián)構成末端位姿。認識機械臂04
uArm機械臂為本平臺所使用的機械臂,它是一款桌面級四軸迷你開源機械臂,其各種的資源可以免費在網絡下載獲取,其源代碼在網絡代碼社區(qū)GitHub上下載,它使用Arduino主板制作作為控制主板(教材使用ATmega2560為核心的控制板),UFACTORY公司的核心產品之一,其靈感來自于ABB碼垛機械人IRB460如圖2-3-1IRB460機械臂。團隊將機械臂的價格做到了“消費級”,尺寸都做到了“桌面級”。認識機械臂04智能機械臂-你的第三只手機械臂可以變成你的第三只手,無論是書寫、繪畫還是3D打印、激光雕刻都能勝任。1)讓它變成一個智能的繪畫機器,如下圖機械臂全能畫手所示。
2)讓它變成幫忙遞飲料的手臂,如圖下圖遞飲料所示。
3)讓他變成一個寫字機器人,如下圖寫字機器人所示。4)讓他變成國際象棋棋手,如下圖所示國際象棋棋手。
5)讓他變成圍棋棋手,如下圖所示國際象棋棋手。04認識機械臂機械臂的結構是什么樣的呢?包括一個連桿式的機械臂,一款基于開源硬件Arduino的開發(fā)板用于控制整個操作,最大的特點是底部轉盤,所有動力裝置都裝在這個地方以減少機械臂部分的重量,從而減少慣性動作對穩(wěn)定性的影響,同時也能增加機械臂的負載能力以提高效力。在功能上與可以與Leapmotion(體感控制器)合作,通過手勢操作機械臂,可以比如操控吸盤吸s附非規(guī)則物體或者用機械臂操控規(guī)則物體。在Processing后臺,你也可以對Leapmotion(體感控制器)所開放的接口編程,把變成你定制化的機械臂。有X、Y、Z,三個移動動作組成。支持180度旋轉,如頭部使用氣管,則自由度為170度左右。X軸則對應平面狀態(tài)下的前后移動,Y軸則對應平面狀態(tài)下的左右移動,Z軸則為機械臂的上下移動。注:在本實驗教程中僅使用吸泵型手抓,如需使用其他類型手抓,請在教師指導下使用。機械臂的結構04機械臂的研究背景04
近年來,隨著機器人技術的發(fā)展,應用高速度、高精度、高負載自重比的機器人結構受到工業(yè)和航空航天領域的關注。由于運動過程中關節(jié)和連桿的柔性效應的增加,使結構發(fā)生變形從而使任務執(zhí)行的精度降低。所以,機器人機械臂結構柔性特征必須予以考慮,實現(xiàn)柔性機械臂高精度有效控制也必須考慮系統(tǒng)動力學特性。柔性機械臂是一個非常復雜的動力學系統(tǒng),其動力學方程具有非線性、強耦合、實變等特點。機械臂的研究背景04
而進行柔性臂動力學問題的研究,其模型的建立是極其重要的。柔性機械臂不僅是一個剛柔耦合的非線性系統(tǒng),而且也是系統(tǒng)動力學特性與控制特性相互耦合即機電耦合的非線性系統(tǒng)。動力學建模的目的是為控制系統(tǒng)描述及控制器設計提供依據(jù)。一般控制系統(tǒng)的描述(包括時域的狀態(tài)空間描述和頻域的傳遞函數(shù)描述)與傳感器/執(zhí)行器的定位,從執(zhí)行器到傳感器的信息傳遞以及機械臂的動力學特性密切相關。機械臂的建模理論04
柔性機械臂動力學方程的建立主要是利用Lagrange方程和NeWton-Euler方程這兩個最具代表性的方程。另外比較常用的還有變分原理,虛位移原理以及Kane方程的方法。而柔性體變形的描述是柔性機械臂系統(tǒng)建模與控制的基礎。因此因首先選擇一定的方式描述柔性體的變形,同時變形的描述與系統(tǒng)動力學方程的求解關系密切。機械臂的控制策略04
對柔性機械臂的控制一般有如下方式:
1)剛性化處理。完全忽略結構的彈性變形對結構剛體運動的影響。例如為了避免過大的彈性變形破壞柔性機械臂的穩(wěn)定性和末端定位精度,NASA的遙控太空手運動的最大角速度為0.5deg/s。機械臂的控制策略04
2)前饋補償法。將機械臂柔性變形形成的機械振動看成是對剛性運動的確定性干擾而采用前饋補償?shù)霓k法來抵消這種干擾。德國的BerndGebler研究了具有彈性桿和彈性關節(jié)的工業(yè)機器人的前饋控制。張鐵民研究了基于利用增加零點來消除系統(tǒng)的主導極點和系統(tǒng)不穩(wěn)定的方法,設計了具有時間延時的前饋控制器,和PID控制器比較起來,可以更加明顯的消除系統(tǒng)的殘余振動。SeeringWarrenP.等學者對前饋補償技術進行了深入的研究。機械臂的控制策略04
3)加速度反饋控制。KhorramiFarShad和JainSandeep研究了利用末端加速度反饋控制柔性機械臂的末端軌跡控制問題。機械臂的控制策略04
4)被動阻尼控制。為降低柔性體相對彈性變形的影響選用各種耗能或儲能材料設計臂的結構以控制振動?;蛘咴谌嵝粤荷喜捎米枘釡p振器、阻尼材料、復合型阻尼金屬板、阻尼合金或用粘彈性大阻尼材料形成附加阻尼結構均屬于被動阻尼控制。近年來,粘彈性大阻尼材料用于柔性機械臂的振動控制已引起高度重視。RossiMauro和WangDavid研究了柔性機器人的被動控制問題。機械臂的控制策略04
5)力反饋控制法。柔性機械臂振動的力反饋控制實際上是基于逆動力學分析的控制方法,即根據(jù)逆動力學分析,通過臂末端的給定運動求得施加于驅動端的力矩,并通過運動或力檢測對驅動力矩進行反饋補償。機械臂的空間坐標04
機械臂的末端在移動過程中是通過空間坐標進行定位,空間坐標分為x軸、y軸、z軸,x:前后方向坐標,y:機械臂左右方向坐標,z:機械臂高度坐標,通過控制x、y、z軸的坐標設置來控制機械臂的定點移動,如圖所示:職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標05任務實施機械臂的空間坐標與坐標獲取2安裝機械臂1機械臂空間坐標極限測試與驗證3機械臂安裝與機械臂空間坐標任務二創(chuàng)靈實驗平臺安裝機械臂(此部分僅介紹吸盤末端安裝流程,詳細流程請參考安裝手冊)步驟一:將吸盤裝在第四軸電機上,鎖緊手擰螺絲注意:如果需要取下吸盤,請松開手擰螺絲步驟二:連接第四軸電機線,吸管及限位開關機械臂安裝與機械臂空間坐標任務二創(chuàng)靈實驗平臺*電動夾子安裝(此章為選學請在教師指導下使用,避免設備損壞)步驟一:如圖所示,松開手擰螺絲,取下吸盤步驟二:如圖所示,裝上電動夾子,鎖緊固定螺絲步驟三:如圖所示,將電動夾子末端固定在機械臂上05任務實施機械臂的空間坐標與坐標獲取2安裝機械臂1機械臂空間坐標極限測試與驗證3
在本小節(jié)中,我們已經了解了機械臂的空間坐標,那么我們如何去獲取機械臂當前的坐標位置呢?機械臂空間坐標05獲取機械臂當前位置的坐標機械臂空間坐標05步驟一:查看機械臂設備,當機械臂掛載到開發(fā)板上后,再執(zhí)行獲取坐標位置代碼。!ls/dev/ttyACM*
注意:若存在/dev/ttyACM0文件,則表示機械臂已掛載到開發(fā)板上,如圖所示:獲取機械臂當前位置的坐標機械臂空間坐標05步驟二:將機械臂斷電后末端移動到任意位置,然后接入電源,按下電源按鈕,USB線連接到開發(fā)板,執(zhí)行如下命令:fromuarm.wrapper
importSwiftAPIimporttimeswift=SwiftAPI()time.sleep(3)now_p=swift.get_position()print(now_p)若在機械臂掛載上開發(fā)板之前執(zhí)行代碼報錯,可通過重啟內核,如圖所示,重新執(zhí)行上述代碼。獲取機械臂當前位置的坐標機械臂空間坐標05步驟三:測試完機械臂當前坐標位置后,執(zhí)行如下命令,斷開機械臂連接:若在機械臂掛載上開發(fā)板之前執(zhí)行代碼報錯,可通過重啟內核,如圖所示,重新執(zhí)行上述代碼。#斷開機械臂連接swift.disconnect()05任務實施機械臂的空間坐標與坐標獲取2安裝機械臂1機械臂空間坐標極限測試與驗證3機械臂測試極限范圍分析我們要怎么了解機械臂的極限空間范圍?我們要如何驗證機械臂是否到了極限位置?要怎樣合理減小誤差?當機械臂達到極限位置后還會運動嗎,如果繼續(xù)運動會對機械臂造成怎樣的影響?機械臂空間運動極限測試與驗證05通過上面的思考,你是否對本任務要完成的任務有所了解?接下來我們進入機械臂運動空間范圍測試的環(huán)節(jié)進行學習吧!機械臂空間運動極限測試與驗證05機械臂重量極限測試下圖為機械臂運動控制范圍標識區(qū)域,以機械臂底座為原點,機械臂可在扇形區(qū)域內進行左右90°轉向,前后346mm自由伸縮,如圖所示:機械臂運動空間范圍05那么我們如何去判斷機械臂的高度以及所能吸附的物體重量多少呢?機械臂運動空間范圍05相信大家在任務思考的時候已經看到了,機械臂在不同高度所能吸附物體的重量是根據(jù)機械臂的高度以及機械臂伸張的長度來影響的。接下來我們將進入實操部分,學習如何驗證機械臂運動極限。機械臂空間運動極限測試05實驗預覽:運行下方代碼,觀察機械臂移動情況,當機械臂不再移動時,應立即運行stop()函數(shù),記錄最后的坐標值,詳細操作如下圖所示。機械臂空間運動極限測試05實驗預覽:@async_calldef
limit():
globalx
whileTrue:
ifstop_==
1:
breakx+=
3Y=
100Z=
80swift.set_position(x=x,y=y,z=z)
print("當前坐標:x={0},y={1},z={2}".format(x,y,z))time.sleep(1)
def
stop():
globalstop_stop_=
1swift.disconnect()
limit()stop()
#停止進程機械臂空間運動極限測試05實驗預覽:運行結束得到的效果如下圖所示,機械臂運行到指定位置:可以看到機械臂運行到指定位置,觀察得到的位置參數(shù)并記錄機械臂空間運動極限測試05實驗預覽:我們在了解完將機械臂運行到指定位置之后,接下來我們來機型機械臂移動極限測試。
運行下方代碼,觀察機械臂移動情況,當機械臂不再移動時(觀察機械臂運動的位置),應立即運行【stop()】函數(shù),記錄最后的坐標值。(詳細代碼請參考Jupyter中任務一、機械臂安裝與機械臂空間坐標中的3.2機械臂運動范圍極限測試的)@async_calldef
limit():
globalx
whileTrue:
ifstop_==
1:
breakx-=
3Y=100Z=80swift.set_position(x=x,y=y,z=z)
print("當前坐標:x={0},y={1},z={2}".format(x,y,z))time.sleep(1)
defstop():
globalstop_stop_=
1swift.disconnect()
limit()stop()
#停止進程代碼說明:機械臂的空間坐標有3個變量分別為x、y、z三個坐標軸,通過控制兩個變量不變,讓另一個變量在遞增或遞降的方式,觀察機械臂移動情況,當?shù)侥硞€坐標時,機械臂不再移動,則說明該坐標為極限坐標,即可判斷該機械臂的在特點空間面上的極限值。
職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標任務檢查與評價06序號評價內容評價標準分值得分1知識運用(20%)掌握相關理論知識,理解本次任務要求,制定詳細計劃,計劃條理清晰,邏輯正確(20分)20分
理解相關理論知識,能根據(jù)本次任務要求、制定合理計劃(15分)了解相關理論知識,有制定計劃(10分)無制定計劃(0分)2專業(yè)技能(40%)完成機械臂空間運動范圍極限測試與驗證。(40分)40分
完成機械臂移動到指定位置,并記錄。(25分)完成機械臂移動測試代碼學習。(10分)沒有完成機械臂移動到指定位置相關學習。(0分)3核心素養(yǎng)(20%)具有良好的自主學習能力、分析解決問題的能力、整個任務過程中有指導他人(20分)20分
具有較好的學習能力和分析解決問題的能力,任務過程中無指導他人(15分)能夠主動學習并收集信息,有請教他人進行解決問題的能力(10分)不主動學習(0分)4課堂紀律(20%)設備無損壞、設備擺放整齊、工位區(qū)域內保持整潔、無干擾課堂秩序(20分)20分
設備無損壞、無干擾課堂秩序(15分)無干擾課堂秩序(10分)干擾課堂秩序(0分)總得分1、請參照評價標準完成自評和對其他小組的互評。2、各組請代表分析本組任務實施經驗。職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標任務小結07
在學習完本任務中的實驗,大家有什么收獲呢?大家了解了機械臂的極限運動范圍了嗎?可以獨立完成機械臂極限運動測試嗎?在學習完本小節(jié)后我們將開始進入機械臂運動腳本編寫任務中進行學習。職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務二
機械臂安裝與機械臂空間坐標任務拓展08在本項任務中,根據(jù)所學內容進行機械臂極限范圍的測試,得到你所測出x、y、z軸所能達到的極限距離(注意:參數(shù)變動不宜過大,以免造成機械臂損壞)。1測試機械臂運動極限范圍;1.根據(jù)所學使用代碼塊運行機械臂。解題
思路提示任務要求2在使用過程中不能造成機械臂損壞。謝謝大家學習項目一機械臂移動與物體抓取創(chuàng)靈實驗平臺SDK方式實現(xiàn)機械臂三維空間移動任務三職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結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實驗目的實驗內容職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結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任務小結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任務小結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)留給應用程序的一個調用接口,應用程序通過調用操作系統(tǒng)的API而使操作系統(tǒng)去執(zhí)行應用程序的命令。我們要怎么使用API?Python-SDK04
(2)DLL(DynamicLinkLibary)動態(tài)連接庫:我們經??吹揭恍?dll格式的文件,這些文件就是動態(tài)連接庫文件,其實也是一種可執(zhí)行文件格式。跟exe文件不同的是,dll文件不能直接執(zhí)行,他們通常由.exe在執(zhí)行時裝入內含有一些資源以及可執(zhí)行的代碼等。思考一下,在生活中我們有哪些地方用到了.dll?Python-SDK04
(3)導入庫:導入庫是為了在DLL中找到API的入口點而使用的,所以,為了使用API函數(shù)。我們要又跟API所對應的.H和.LIB文件,而SDK正式提供了一整套開發(fā)Windows應用程序所需的相關文件、范例和工具的“工具包”。思考一下,我們要怎么導入對應庫?什么是API?04
API(ApplicationProgrammingInterface,應用編程接口)其實就是操作系統(tǒng)留給應用程序的一個調用接口,應用程序通過調用操作系統(tǒng)的API而使操作系統(tǒng)去執(zhí)行應用程序的命令(動作)。其實早在DOS時代就有API的概念,只不過那個時候的API是以中斷調用的形式(INT21h)提供的,我們要怎么使用API?什么是API?04
在DOS下跑的應用程序都直接或間接的通過中斷調用來使用操作系統(tǒng)功能,比如將AH置為30h后調用INT21h就可以得到DOS操作系統(tǒng)的版本號。而在Windows中,系統(tǒng)API是以函數(shù)調用的方式提供的。同樣是取得操作系統(tǒng)的版本號,在Windows中你所要做的就是調用GetVersionEx()函數(shù)。我們要怎么使用API?什么是DLL?04
DLL,即DynamicLinkLibrary(動態(tài)鏈接庫)。在Windows環(huán)境下含有大量.dll格式的文件,這些文件就是動態(tài)鏈接庫文件,其實也是一種可執(zhí)行文件格式。跟.exe文件不同的是,.dll文件不能直接執(zhí)行,通常由.exe在執(zhí)行時裝入,內含有一些資源以及可執(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編程”來有著更高的抽象度,但這絲毫不妨礙在需要的時候隨時直接調用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)境安裝,安裝步驟詳情請自行查閱官網:/)Python-SDK安裝方法04
步驟一:首先我們要解壓任務同級目錄下的uArm-Python-SDK-2.0.zip包,如圖所示:
步驟二:使用unzip命令解壓壓縮包:
步驟三:進入安裝包目錄,執(zhí)行安裝命令:
出現(xiàn)如下圖提示表明安裝成功:安裝成功提示05知識儲備Python-SDK安裝方法2Python-SDK1uArm-Python-SDK源碼閱讀3uArm-Python-SDK源碼閱讀04
進入解壓出來的安裝包,查看安裝包源碼的目錄結構,這里可以在左邊的目錄界面查看目錄結構,如圖所示:uArm-Python-SDK源碼閱讀04
了解列表核心的uarm代碼目錄樹結構,如圖所示:uArm-Python-SDK源碼閱讀04
當我們程序報錯,出bug無法運行的時候,我們可以通過閱讀了解每個.py、.txt等文件名來進行相關代碼的修正。uArm-Python-SDK源碼閱讀04
那么我們如何閱讀一段源碼的結構呢?源碼之所以叫源碼,是因為它不是幾個文件,幾行代碼組成的。源碼都是一個很龐大很復雜的東西。幾百個文件,幾萬行代碼。這樣讓我們第一次拿到源碼后,不知從何下手。所以,我們拿到源碼后,不要著急看,要先找入口,根據(jù)文件功能找入口。例如,閱讀一個SDK的源碼,首先看看文檔里面,第一個調用SDK的方法。當帶有目的去看源碼,順著一條線去找源碼,這樣才會讓你有明確的方向感。uArm-Python-SDK源碼閱讀04uArm-Python-SDK核心代碼結構說明: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任務小結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ù)實際需要進行調整;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é)中,我們已經了解了如何閱讀uArm-Python-SDK源碼結構,學習了uArm-Python-SDK核心代碼以及常用函數(shù)。同時還學習了uArm-Python-SDK控制機械臂的原理,那么接下來我們來學習編寫控制機械臂的Python腳本。使用uArm-Python-SDK編寫控制機械臂的Python腳本05
在之前的章節(jié)中,我們曾接觸過裝飾器,通過了解他的定義,API、DLL、導入庫等概念大致知曉了他的使用方法,那么在接下來的小節(jié)中,我們將具體介紹異步裝飾器并使用在SDK編寫控制機械臂的Python腳本中。Python裝飾器:可以讓被裝飾的函數(shù)在不修改代碼的情況下增加額外的功能,裝飾器本質上是一個函數(shù)異步:即非阻塞,意味著在執(zhí)行某項任務時候不會阻塞后續(xù)或其他任務的執(zhí)行多線程:在進程基礎上開辟多個執(zhí)行任務的線程使用uArm-Python-SDK編寫控制機械臂的Python腳本05實驗預覽:使用uArm-Python-SDK編寫控制機械臂的Python腳本05#對應封裝代碼importtimefromuarm.wrapper
importSwiftAPIfromthreadingimportThreadswift=SwiftAPI()#調用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()#調用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()結束(點擊運行,機械臂結束移動):stop_button()通過閱讀并運行代碼,你是否了解了通過SDK控制機械臂的原理嗎?那你能不能舉一反三,思考如何更改上述代碼,控制機械臂向右、向上、向下移動呢?#請根據(jù)課本所學,編寫相應代碼:實驗預覽:使用uArm-Python-SDK編寫控制機械臂的Python腳本05我們剛剛已經通過閱讀代碼并運行向左移動機械臂這一實驗,對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任務小結07任務拓展08任務三
SDK方式實現(xiàn)機械臂三維空間移動任務檢查與評價06序號評價內容評價標準分值得分1知識運用(20%)掌握相關理論知識,理解本次任務要求,制定詳細計劃,計劃條理清晰,邏輯正確(20分)20分
理解相關理論知識,能根據(jù)本次任務要求、制定合理計劃(15分)了解相關理論知識,有制定計劃(10分)無制定計劃(0分)2專業(yè)技能(40%)完成SDK方式控制機械臂的Python腳本。(40分)40分
完成源碼結構閱讀學習以及SDK控制機械臂的原理學習。(25分)完成Python-SDK安裝。(10分)沒有完成Python-SDK安裝。(0分)3核心素養(yǎng)(20%)具有良好的自主學習能力、分析解決問題的能力、整個任務過程中有指導他人(20分)20分
具有較好的學習能力和分析解決問題的能力,任務過程中無指導他人(15分)能夠主動學習并收集信息,有請教他人進行解決問題的能力(10分)不主動學習(0分)4課堂紀律(20%)設備無損壞、設備擺放整齊、工位區(qū)域內保持整潔、無干擾課堂秩序(20分)20分
設備無損壞、無干擾課堂秩序(15分)無干擾課堂秩序(10分)干擾課堂秩序(0分)總得分1、請參照評價標準完成自評和對其他小組的互評。2、各組請代表分析本組任務實施經驗。職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務三
SDK方式實現(xiàn)機械臂三維空間移動任務小結07
在學習完本任務中的實驗,大家有什么收獲呢?大家了解了如何通過SDK編寫控制機械臂的腳本了嗎?可以獨立完成機械臂左移、右移、上下移動的代碼編寫嗎?在學習完本小節(jié)后我們將開始進入串口控制機械臂運動腳本編寫的任務中進行學習。職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務三
SDK方式實現(xiàn)機械臂三維空間移動任務拓展081.在<1>、<2>、<3>處,填入代碼,使得機械臂在執(zhí)行move_right()開始向右運動。<1>#請根據(jù)所學知識,編寫導入庫,API設置,參數(shù)設置等功能(可參照P30向左移動機械臂實驗)……
//請在以下代碼進行補充@async_calldef
move_right():position=swift.get_position()x=position[0]y=position[1]z=position[2]
whileTrue:<2>#請根據(jù)題目所示,補充相應代碼<3>#請根據(jù)題目所示,補充相應代碼time.sleep(0.5)
ifstop_:
break//請在以上代碼進行補充
任務拓展081.在<1>、<2>、<3>處,填入代碼,使得機械臂在執(zhí)行move_right()開始向右運動。def
stop_button():
globalstop_stop_=Trueswift.disconnect()
print("停止成功")
move_right()stop_button()任務拓展081.在<1>、<2>、<3>處,填入代碼,使得機械臂在執(zhí)行move_right()開始向右運動。1正確更改1.2.3處代碼,使代碼能夠運行;1.更改move_right()中的y=y+x達到實驗目的。解題
思路提示任務要求2機械臂執(zhí)行move_right()開始向右運動。謝謝大家學習項目一機械臂移動與物體抓取創(chuàng)靈實驗平臺串口方式實現(xiàn)機械臂三維空間移動任務四職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四
串口方式實現(xiàn)機械臂三維空間移動認識串口,了解波特率、數(shù)據(jù)位以及PythonSerial庫;學習如何使用串口;了解串口協(xié)議發(fā)送指令的方法和原理以及常用串口指令的使用。學習通過串口編寫控制機械臂Python腳本方法并能夠熟練自行編寫對應腳本完成所需要求掌握Python-Serial庫的使用;掌握串口協(xié)議發(fā)送指令的方法;掌握串口返回數(shù)據(jù)讀取;掌握常用串口控制機械臂指令;掌握使用串口編寫Python腳本控制機械臂。職業(yè)能力目標01實驗目的實驗內容職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四
串口方式實現(xiàn)機械臂三維空間移動
此任務要求同學們認識串口,了解波特率、數(shù)據(jù)位以及PythonSerial,學習如何使用串口控制,了解串口協(xié)議發(fā)送指令的方法和原理以及常用串口指令的使用,并學習通過串口編寫控制機械臂Python腳本方法并能夠熟練自行編寫對應腳本完成所需要求。任務描述任務要求下載安裝Python-Serial庫;掌握串口協(xié)議發(fā)送指令的相關函數(shù),并完成相關實驗;完成串口返回數(shù)據(jù)讀取,得到對應結果;使用常用串口控制機械臂指令,實現(xiàn)機械臂移動到指定位置;能夠獨立使用串口編寫Python腳本控制機械臂。任務描述與要求02職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四
串口方式實現(xiàn)機械臂三維空間移動任務分析在引導案例里我們學習了串口,那么什么是串口通信呢?我們要如何通過串口方式實現(xiàn)機械臂三維空間移動三.根據(jù)自己的了解,通過串口控制機械臂在生活中還有哪些用途呢?任務分析與計劃03任務計劃表項目名稱創(chuàng)靈實驗平臺任務名稱串口方式實現(xiàn)機械臂三維空間移動計劃方式自主設計計劃要求請用6個計劃步驟來完整描述出如何完成本次任務序號任務計劃1
2
3
4
5
6
通過上面的思考,你是否對本任務要完成的工作有所了解?讓我們一起來制訂完成本次任務的實施計劃吧!任務分析與計劃03職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四
串口方式實現(xiàn)機械臂三維空間移動05知識儲備串口通信的相關參數(shù)及作用2串口通信的原理1Pythonserial庫3
世界上首次推出臺式計算機時,它們帶有串行端口和并行端口。串行端口通常用于連接串口調試設備,并行端口用于打印機?,F(xiàn)在部分臺式計算機上已經這兩種類型的端口,因為通信通過以太網端口進行,而連接打印機可以使用USB端口或以太網端口,或者通過wifi/藍牙的無線連接。什么是串口?04串口通信的原理
串口的出現(xiàn)是在1980年前后,數(shù)據(jù)傳輸率是115kbps~230kbps。串口出現(xiàn)的初期是為了實現(xiàn)連接計算機外設的目的,初期串口一般用來連接鼠標和外置Modem以及老式攝像頭和寫字板等設備。串口也可以應用于兩臺計算機(或設備)之間的互聯(lián)及數(shù)據(jù)傳輸。由于串口(COM)不支持熱插拔及傳輸速率較低,部分新主板和大部分便攜電腦已開始取消該接口。串口多用于工控和測量設備以及部分通信設備中。串口的由來?04串口通信的原理串口通信的原理
目前,仍有許多計算機接口符合“串行”的要求,常見接口包括SCSI、SATA(用于連接硬盤驅動器等)和USB(還有其他接口)。工業(yè)聯(lián)網設備上常見的串口是RS232串口,RS232串口分為DB-9針和DB-25針。如下圖:串口有幾種形式?幾種接口樣式04串口通信的原理
1.控制臺輸入/輸出嵌入式系統(tǒng)開發(fā)項目的過程中,幾乎都會有一個終端仿真器連接到目標系統(tǒng)上的串口。這與CPU架構和它運行的操作系統(tǒng)無關。即使有到目標的網絡連接,并且可以遠程運行時,可以清楚的了解當前串行連接發(fā)生了什么,特別是如果發(fā)生了意外情況能及時獲取信息。串口有哪些用途?
2.數(shù)據(jù)通信串口連接可用于系統(tǒng)內的處理器間通信或與系統(tǒng)不同部分的通信。串口提供設備之間的物理連接,但必須使用通信協(xié)議來確保可靠、無差錯的數(shù)據(jù)路徑。根據(jù)鏈路的要求,可以實施簡單的協(xié)議傳輸,或者使用行業(yè)標準協(xié)議,例如PPP或HDLC。這些協(xié)議起源于數(shù)據(jù)通信,允許主機之間的點對點網絡。這在不包括以太網控制器的簡單、低成本設備中特別有用,因為出于成本、空間或功率考慮。嵌入式系統(tǒng)中使用的TCP/IP協(xié)議棧通常支持使用串行鏈路進行物理連接和PPP或SLIP提供鏈路層協(xié)議
3.外部設備通訊調試新設備或更新系統(tǒng)參數(shù)通常需要通過串口連接到一臺設備并與服務程序交互。網絡工程師通常以這種方式設置交換機和其他網絡基礎設施。通常,來自一組設備的串口連接到終端服務器,允許工程師通過網絡接口連接到其中的任何一個。串口還用于將設備連接在一起,例如一種或另一種類型的調制解調器(PSTN、3G、衛(wèi)星)、GPS裝置、望遠鏡、傳感器、電源逆變器和許多類型的工業(yè)控制設備。04
串口形容一下就是一條車道,而并口就是有8個車道同一時刻能傳送8位(一個字節(jié))數(shù)據(jù)。但是并不是說并口快,由于8位通道之間的互相干擾(串擾),傳輸時速度就受到了限制,傳輸容易出錯。串口沒有互相干擾。并口同時發(fā)送的數(shù)據(jù)量大,但要比串口慢。串口硬盤就是這樣被人們重視的。串口與并口的區(qū)別?04串口通信的原理串口通信的原理04
串口通信(SerialCommunicaTIons)的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠實現(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設備線總長不得超過20米,并且任意兩個設備間的長度不得超過2米;而對于串口而言,長度可達1200米。串口通信的原理04
典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通信的端口,這些參數(shù)必須匹配。思考一下,在生活中我們有哪些地方用到了串口通信?05知識儲備串口通信的相關參數(shù)及作用2串口通信的原理1Pythonserial庫3串口通信的相關參數(shù)及作用04
這是一個衡量符號傳輸速率的參數(shù)。指的是信號被調制以后在單位時間內的變化,即單位時間內載波參數(shù)變化的次數(shù),如每秒鐘傳送240個字符,而每個字符格式包含10位(1個起始位,1個停止位,8個數(shù)據(jù)位),這時的波特率為240Bd,比特率為10位*240個/秒=2400bps。一般調制速率大于波特率,比如曼徹斯特編碼)。波特率:串口通信的相關參數(shù)及作用04
這是衡量通信中實際數(shù)據(jù)位的參數(shù)。如何設置取決于你想傳送的信息。比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標準ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。由于實際數(shù)據(jù)位取決于通信協(xié)議的選取,術語“包”指任何通信的情況。數(shù)據(jù)位:停止位04
用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。思考一下,我們要怎么在串口中設置呢?串口通信的相關參數(shù)及作用04
在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不奇偶校驗位:串口通信的相關參數(shù)及作用04
真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。奇偶校驗位:05知識儲備串口通信的相關參數(shù)及作用2串口通信的原理1Pythonserial庫3Pythonserial庫04
Pythonserial是Python用來進行串口操作的一個庫,庫集成了串口常見操作,如:打開串口、關閉串口、串口寫數(shù)據(jù)、串口讀數(shù)據(jù)等。例如:lser.close##關閉串口lserial.Serial##打開串口lis_open##判斷串口是否正常開啟lser.write##寫入數(shù)據(jù)lser.read##讀取數(shù)據(jù)并有以下幾個常用命令:Pythonserial庫04
在了解完Pythonserial以及他的常用命令后,我們要如何安裝Pythonserial庫呢?
安裝serial庫的方法是使用pip進行安裝,安裝指令【pipinstallpyserial】!pipinstallpyserial
在介紹完安裝serial庫后,我們來看看serial庫命令的使用:Pythonserial庫04serial打開串口:importserialser=serial.Serial("/dev/ttyACM0",115200)#第一個參數(shù)是設備、第二個參數(shù)是波特率serial關閉串口:ser.close()serial串口寫入數(shù)據(jù)importserialimporttimeser=serial.Serial("/dev/ttyACM0",115200)#serial串口設置、波特率設置data=b"#5P2205"ser.write(data)time.sleep(1)ser.close()Pythonserial庫04serial串口查看返回值importserialser=serial.Serial("/dev/ttyACM0",115200)data=b"#5P2205"ser.write(data)whileTrue:line=ser.readline()print(line)職業(yè)能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四
串口方式實現(xiàn)機械臂三維空間移動串口控制機械臂移動到指定位置205任務實施常見機械臂操作串口指令1
串口方式實現(xiàn)機械臂三維空間移動任務四常見機械臂操作串口命令:l移動機械臂
b"G0X<x坐標值>Y<y坐標值>Z<z坐標值>F90\n"l打開末端吸泵
b"M2231V1\n"l關閉末端吸泵
b"M2231V0\n"l讀取機械臂信息
b"#5P2205"
請根據(jù)串口控制機械臂移動中實驗預覽的相關代碼,了解常用機械臂操作串口命令。串口連接機械臂05任務實施串口控制機械臂移動到指定位置2常見機械臂操作串口指令13
串口方式實現(xiàn)機械臂三維空間移動任務四實驗預覽:importtime#導入庫importserialser=serial.Serial("/dev/ttyACM0",115200)#串口通信time.sleep(2)#延時data=b"G0X120Y0Z60F90\n"#將機械臂移動到x=120,y=0,z=60的位置ser.write(data)whileTrue:line=ser.readline()print(line)以通過重啟內核,來停止代碼中的while循環(huán),如圖所示:串口控制機械臂移動到指定位置我們要怎樣根據(jù)實驗預覽代碼去編寫機械臂右移、上移等?我們要如何使用串口控制機械臂完成所需任務呢?在學習完后,我們要怎么幫所學整合利用,學以致用呢?串口方式實現(xiàn)機械臂三維空間移動
05通過上面的思考,你是否對本任務要完成的任務有所了解?接下來我們進入使用串口控制機械臂移動到指定位置編寫控制機械臂的Python腳本的環(huán)節(jié)進行學習吧!串口方式實現(xiàn)機械臂三維空間移動05進入學習通過串口方式編寫Python腳本串口方式實現(xiàn)機械臂三維空間移動05動手練習:(根據(jù)實驗預覽中所學知識,我們來試試自行編寫代碼完成所需任務吧!)1.在<1>、<2>、<3>處,填入相應的值,使得機械臂移動到x=130,y=30,z=70。2.在<4>處填寫對應的代碼,使得代碼能將機械臂移動指定的位置。importtimeimportserialser=serial.Serial("/dev/ttyACM0",115200)time.sleep(2)data=b"G0X<1>Y<2>Z<3>F90\n"<4>whileTrue:line=ser.readline()print(line)在完成動手練習后,接下來我們來學習串口方式打開機械臂末端吸泵吧!串口方式打開機械臂末端吸泵05實驗預覽:importtime#導入庫importserialser=serial.Serial("/dev/ttyACM0",115200)#串口通信time.sleep(2)#延時data=b"M2231V1\n"#打開ser.write(data)whileTrue:line=ser.readline()#讀取數(shù)據(jù)print(line)以通過重啟內核,來停止代碼中的while循環(huán),如圖所示:除了串口方式打開機械臂末端,我們還要學習串口方式關閉機械臂末端吸泵。串口方式關閉機械臂末端吸泵05實驗預覽:以通過重啟內核,來停止代碼中的while循環(huán),如圖所示:importtimeimportserialser=serial.Serial("/dev/ttyACM0",115200)time.sleep(2)data=b"M2231V0\n"#關閉ser.write(data)whileTrue:line=ser.readline()#讀入數(shù)據(jù)print(line)使用串口方式編寫Python腳本控制機械臂05通過使用serial庫編寫一個可以左右上下移動機械臂和吸泵開關的腳本(根據(jù)常用的串口控制機械臂指令調用進行編寫)。接下來讓我們進入實驗預覽。實驗預覽:(詳細代碼運行結果請參照Jupyter,任務三、串口方式編寫腳本控制機械臂)使用串口方式編寫Python腳本控制機械臂05通過使用serial庫編寫一個可以左右上下移動機械臂和吸泵開關的腳本(根據(jù)常用的串口控制機械臂指令調用進行編寫)。接下來讓我們進入實驗預覽。實驗預覽:(詳細代碼運行結果請參照Jupyter,任務三、串口方式編寫腳本控制機械臂)打開串口編寫腳本實驗使用串口方式編寫Python腳本控制機械臂05通過使用serial庫編寫一個可以左右上下移動機械臂和吸泵開關的腳本(根據(jù)常用的串口控制機械臂指令調用進行編寫)。接下來讓我們進入實驗預覽。實驗預覽:(運行以下代碼,查看實驗效果)左移動機械臂move_left()
stop()右移動機械臂move_right()stop()使用串口方式編寫Python腳本控制機械臂05通過使用serial庫編寫一個可以左右上下移動機械臂和吸泵開關的腳本(根據(jù)常用的串口控制機械臂指令調用進行編寫)。接下來讓我們進入實驗預覽。實驗預覽:(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工廠生產承包合同
- 2024貨運合同格式范本新版范文
- 2024新版廣告合同范本
- 定制辦公桌椅及安裝協(xié)議
- 投資合作談判技巧
- 招標代理合作協(xié)議樣本
- 房建工程施工分包協(xié)議
- 戶外廣告業(yè)務合作合同參考
- 廣東省室內裝潢設計合同樣本
- 3.1.1橢圓的標準方程【同步課件】
- 粉條產品購銷合同模板
- 2024至2030年中國自動車配件行業(yè)投資前景及策略咨詢研究報告
- 2024-2030年中國蔗糖行業(yè)市場深度調研及發(fā)展趨勢與投資前景研究報告
- 北師版 七上 數(shù)學 第四章 基本平面圖形《角-第2課時 角的大小比較》課件
- 外研版小學英語(三起點)六年級上冊期末測試題及答案(共3套)
- 北師大版(2024新版)七年級上冊生物期中學情調研測試卷(含答案)
- 產品包裝規(guī)范管理制度
- 2024年海南省中考物理試題卷(含答案)
- 2024統(tǒng)編新版小學三年級語文上冊第八單元:大單元整體教學設計
- 第07講 物態(tài)變化(原卷版)-2024全國初中物理競賽試題編選
- 高危兒規(guī)范化健康管理專家共識解讀
評論
0/150
提交評論