這一節(jié)我們開始第一個程序,就是機械臂各關節(jié)的運動。讓我們首先打開Mycobot,然后登入一個終端,我們輸入“python”進入python環(huán)境。
我們采用一邊實驗一邊介紹MyCobot機械臂的API的使用方法:
(1)控制機械臂左右擺動所使用的 API 為:MyCobot(port)
程序的開頭首先要導入這些API:
from pymycobot.mycobot import MyCobot
from pymycobot.genre import Angle
from pymycobot import PI_PORT, PI_BAUD # 當使用樹莓派版本的mycobot時,可以引用這兩個變量進行MyCobot初始化
import time
(2)get_angles()
函數(shù)功能:獲得機械臂六個關節(jié)點的角度。
返回值:返回值的類型是 list,共有六個元素數(shù)據(jù),分別對應關節(jié) 1~6。
當機械臂運行到某一個位置時我們可以通過print指令打印出當前機械臂的各關節(jié)角度數(shù)據(jù)。
如:
mc = MyCobot(PI_PORT, PI_BAUD)
angle_datas = mc.get_angles()
print(angle_datas)
運行后給出的結(jié)果:
注意我們這里先記下這個機械臂的值: [6.06, -144.05, 154.77, -148.35, -75.84, -99.4],這個值的機械臂是個什么樣子呢,我拍個照片給大家看。
(3)send_angle(id, degree, speed)
id:指的是哪一節(jié)機械臂,如果不指定id,那么就是指你要給出6節(jié)機械臂的運動角度。
degree:指的是關節(jié)的角度,取值范圍-180~180
speed:指關節(jié)到達指定位置時的速度,取值范圍0~100,值越大速度越快。
我們傳遞個數(shù)值給機械臂,當然先傳0,就是0角度的狀態(tài)。
mc.send_angles([0, 0, 0, 0, 0, 0], 50)
機械臂變成了這樣子:
接下來讓我們測試每一個關節(jié)是怎么運動的和運動的方向:
mc.send_angle(Angle.J1.value, 90, 50) #第一節(jié)轉(zhuǎn)90度,速度50
mc.send_angle(Angle.J2.value, 30, 50) #第二節(jié)轉(zhuǎn)30度,速度50
mc.send_angle(Angle.J3.value, 30, 50) #第三節(jié)轉(zhuǎn)30度,速度50
mc.send_angle(Angle.J4.value, 30, 50) #第四節(jié)轉(zhuǎn)30度,速度50
mc.send_angle(Angle.J5.value, 30, 50) #第五節(jié)轉(zhuǎn)30度,速度50
mc.send_angle(Angle.J6.value, 30, 50) #第六節(jié)轉(zhuǎn)30度,速度50
然后是這個樣子:
所有的運動均符合右手定律。有興趣的小伙伴可以試一下-90度,機械臂是如何運動。
(4)release_all_servos()
函數(shù)功能:放松機械臂,讓其可以隨意手動擺動。注意執(zhí)行這個指令的時侯機械臂會因重力落下,要注意防止砸到其他的東西。
mc.release_all_servos()
然后讓我們再把機械臂運動到剛開始的狀態(tài),這就要用到我們當時的那個值: [6.06, -144.05, 154.77, -148.35, -75.84, -99.4],好的讓我們執(zhí)行:
mc.send_angles([6.06, -144.05, 154.77, -148.35, -75.84, -99.4],50)
輸入指令請注意不要用全角字符,一定要把鍵盤切換成半角字符運行。
這樣機械臂又回到了初始時的狀態(tài)。
(5)寫成可執(zhí)行文件。
假如我們寫成一段連續(xù)的可執(zhí)行文件又是怎么的呢?參考說明書中的代碼,看下面機械臂搖擺程序:
#!/usr/bin/python3
#-*- coding: UTF-8 -*-
from pymycobot.mycobot import MyCobot
from pymycobot.genre import Angle
from pymycobot import PI_PORT, PI_BAUD # 當使用樹莓派版本的mycobot時,可以引用這兩個變量進行MyCobot初始化
import time
mc = MyCobot(PI_PORT, PI_BAUD)
# 獲得當前位置的坐標
angle_datas = mc.get_angles()
print(angle_datas)
# 用數(shù)列傳遞傳遞坐標參數(shù),讓機械臂移動到指定位置
mc.send_angles([0, 0, 0, 0, 0, 0], 50)
print(mc.is_paused())
# 設置等待時間,確保機械臂已經(jīng)到達指定位置
# while not mc.is_paused():
time.sleep(2.5)
# 讓關節(jié)1移動到90這個位置
mc.send_angle(Angle.J1.value, 90, 50)
# 設置等待時間,確保機械臂已經(jīng)到達指定位置
time.sleep(2)
# 設置循環(huán)次數(shù)
num = 5
# 讓機械臂左右搖擺
while num > 0:
# 讓關節(jié)2移動到50這個位置
mc.send_angle(Angle.J2.value, 50, 50)
# 設置等待時間,確保機械臂已經(jīng)到達指定位置
time.sleep(1.5)
# 讓關節(jié)2移動到-50這個位置
mc.send_angle(Angle.J2.value, -50, 50)
# 設置等待時間,確保機械臂已經(jīng)到達指定位置
time.sleep(1.5)
num -= 1
# 讓機械臂縮起來。你可以手動擺動機械臂,然后使用get_angles()函數(shù)獲得坐標數(shù)列,
# 通過該函數(shù)讓機械臂到達你所想的位置。
mc.send_angles([88.68, -138.51, 155.65, -128.05, -9.93, -15.29], 50)
# 設置等待時間,確保機械臂已經(jīng)到達指定位置
time.sleep(2.5)
# 讓機械臂放松,可以手動擺動機械臂
mc.release_all_servos()
注意:程序前面要加上:
#!/usr/bin/python3
#-*- coding: UTF-8 -*-
讓我們把這個文件保存成,3.py
運行這段代碼:
直接在終端窗口執(zhí)行:
python 3.py
這樣就可以連續(xù)執(zhí)行機械臂的運動了。
審核編輯 黃昊宇
-
機器人
+關注
關注
211文章
28566瀏覽量
207716 -
機械臂
+關注
關注
12文章
518瀏覽量
24647
發(fā)布評論請先 登錄
相關推薦
評論