MyCobot六轴机械臂(七)--实战MyBlockly
1、設置變量并傳遞機械臂關節角度
這里有五種卡片
(1)獲取所有角度
(2)設置關節,單指某一個關節。
(3)設置全角度(6軸機械臂和4軸機械臂)
(4)設置全角度為
創建關節變量,將顯示所有關節的角度,相關python代碼如下:
engles=mc.get_engles()
print(engles)
顯示結果如下圖
2、設置變量并顯示機械臂頭部姿態
設置coords變更,并將當前機械臂的頭部姿態坐標,傳給變量coords并顯示。
相當于執行:
coords= mc.get_coords()
print(coords)
設置變量如圖
然后在左側找到“角度和坐標”將“獲取所有坐標”拖進來。
然后再去“文本”中選擇“輸出”項,并將他拖到工作區。
最后我們組合成如下結構:
然后點擊運行,結果如下圖
這里顯示出當前機械臂頭部姿態坐標。
3、機械臂夾爪檢測
通過調用mycobot的Set_Gripper_State函數分別讓夾爪進行10次張開收攏操作,并且在每組張開收攏后對其進行角度調位。
1、重新初始化夾爪
2、設置夾爪狀態,可以選擇夾爪的狀態,可選“打開”或“關閉”,速度指夾爪開合速度
3、設置夾爪張開的角度,值為0~255,速度指的是夾爪開合的速度,取值為
4、夾爪是否在運動,給出夾爪的狀態。
測試程序
程序代碼:
from pymycobot.mycobot import MyCobot
import time
mc = MyCobot('/dev/ttyAMA0',1000000)
mc.send_angles([0,0,0,0,0,0],20)
for count in range(5):
? mc.set_gripper_value(0,40)
? time.sleep(2)
? mc.set_gripper_value(255,40)
? time.sleep(2)
mc.set_gripper_state(1, 40)
4、吸泵操作
吸泵的聯接按第二章第三節中的(2)吸泵操作進行聯結。
1、設置吸泵
第1步:為設置吸泵的工作模式,這里選BCM,即使用數字0,1代表高低電位,當然如果選用Board則必須選擇使用高低電位來表示開啟與關閉。此處數據派機械臂我們選擇BCM模式。
第2步:設置“20”和“21”號引腳的工作方式為“out”
第3步:輸出高低電位,啟動或停止工作吸泵。
2、啟動吸泵工作
“20”和“21”號引腳輸出低電位為啟動吸泵。
相關python代碼如下:
from pymycobot.mycobot import MyCobot
import RPi.GPIO as GPIO
mc = MyCobot('/dev/ttyAMA0',1000000)
GPIO.setmode(GPIO.BCM)
GPIO.setup(20,GPIO.OUT)
GPIO.setup(21,GPIO.OUT)
GPIO.output(20,GPIO.LOW)
GPIO.output(21,GPIO.LOW)
5、機械臂的點動控制
本案例主要的實驗內容是調用 jog_angle點動 函數通過循環讓六個關節分別持續移動,通過 jog_stop 函數對其運動進行停止,從而實現點動控制。最后讓機械臂移動到一個較為安全的位置并進行釋放關節和斷電操作。
代碼如下:
from pymycobot.mycobot import MyCobot
import time
i = None
mc = MyCobot('/dev/ttyAMA0',1000000)
mc.power_on()
mc.send_angles([0,0,0,0,0,0],30)
time.sleep(3)
for i in range(1, 6):
? mc.jog_angle(i,1,20)
? time.sleep(1)
? mc.jog_stop()
? print(mc.get_encoder(i))
? print('')
mc.send_angles([180,126,(-153),136,(-82),30],30)
time.sleep(5)
mc.power_off()
6、機械臂控制機制
本案例主要是調用一些機械臂常用的控制機制函數進行機械臂控制,比如機械臂的斷電、供電、暫停運動、恢復運動等控制機制功能以及機械臂頭部燈的控制。
7、機械臂進階操作
主要實現機械臂智能判斷已經到達指定位置的功能,基于此功能,簡單的讓機械臂重復執行兩個到達指令。
(1)先用 if do 模塊判斷機械臂是否充電,若沒有充電則為其充電。輸出當前的角度節點信息,
(2)讓機械臂轉移到零位。定義 angles 變量,使用創建 list 類型數據中的 repeated 方法為 angles 賦值零位節點信息。定義 limit_time 判斷移動是否超時。
(3)將 angles 傳入 is in position 方法中判斷機械臂是否達到指定位置。使用 repeat 模塊每運動 0.5s 檢測機械臂是否達到指定位置,并進行超時計時器處理,若超過 7s 機械臂仍未到達指定位置則斷定其已經到達了,執行之后的指令。
(4)接下來的原理大同小異故不再做解釋。
測試代碼:
from pymycobot.mycobot import MyCobot
import time
angles = None
limit_time = None
mc = MyCobot('/dev/ttyAMA0',1000000)
if 0 == mc.is_power_on():
? print('detect arm')
? mc.power_on()
print(mc.get_angles())
for count in range(4):
? mc.send_angles([0,0,0,0,0,0],20)
? angles = [0] * 6
? limit_time = 1
? while 0 == mc.is_in_position(angles,0):
??? time.sleep(0.5)
??? if limit_time >= 7:
????? break
??? limit_time = limit_time + 0.6
? mc.send_angles([143,100,(-153),125,(-82),30],20)
? angles = [143, 100, -153, 125, -82, 30]
? limit_time = 0
? while 0 == mc.is_in_position(angles,0):
??? time.sleep(0.5)
??? if limit_time >= 7:
????? break
limit_time = limit_time + 0.6
8、控制LED燈
在左側選LED將此條拖進來如圖,然后選擇運行。需要改顏色的地方就改為255。
我們第三章第五節的測試程序在這里可以表達為:
i = 3
#循環3次
while i > 0:???????????????????????????
??? mc.set_color(0,0,255) #藍燈亮
??? time.sleep(2)??? #等2秒???????????????
??? mc.set_color(255,0,0) #紅燈亮
??? time.sleep(2)??? #等2秒
??? mc.set_color(0,255,0) #綠燈亮
??? time.sleep(2)??? #等2秒
i -= 1
總結
以上是生活随笔為你收集整理的MyCobot六轴机械臂(七)--实战MyBlockly的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Anaconda官网下载慢的问题
- 下一篇: 手机测试陨石软件,不用仪器检测,肉眼就能