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