728x90
이번 시험은 로봇이동을 이용한 비동기 명령어 실행이다. 로봇 단위 Action은 한 위치에서 다른 위치로 로봇 엔드이팩터의 단위 이동을 뜻한다. 만일 로봇 Action 명령을 여러 개 내리면 앞의 이동이 끝나기 전에 뒤의 명령어가 실행되어 일관된 이동을 할 수 없다. 그러므로 GetQueuedCmdCurrentIndex(api)를 이용하여 현재 명령어의 인덱스 값을 얻어 해당 명령어 이전부터 현재까지 명령어가 실행될 때까지 dType.dSleep(100)을 이용하여 기다린다.
# test020 3/30/2023
# Dobot Magician with Async commands
import threading
import DobotDllType as dType
# string for dobot connection status
CON_STR = {
dType.DobotConnect.DobotConnect_NoError: "DobotConnect_NoError",
dType.DobotConnect.DobotConnect_NotFound: "DobotConnect_NotFound",
dType.DobotConnect.DobotConnect_Occupied: "DobotConnect_Occupied"}
# location dic
loc_b ={
"id": "loc_wating",
"x": 0,
"y": 0,
"z": 0
}
loc_m ={
"id": "loc_base",
"x": 100,
"y": 100,
"z": 100
}
# robot connection - start
api = dType.load()
state = dType.ConnectDobot(api, "", 115200)[0]
print("Connect status:",CON_STR[state])
if (state == dType.DobotConnect.DobotConnect_NoError):
# Clean Command Queued
dType.SetQueuedCmdClear(api)
# Async Motion Params Setting
dType.SetHOMEParams(api, 200, 200, 200, 200, isQueued = 1)
dType.SetPTPJointParams(api, 200, 200, 200, 200, 200, 200, 200, 200, isQueued = 1)
dType.SetPTPCommonParams(api, 100, 100, isQueued = 1)
# Async Home
dType.SetHOMECmd(api, temp = 0, isQueued = 1)
print(loc_b['x'], loc_b['y'])
print(loc_m['x'], loc_b['y'])
lastIndex = dType.SetPTPCmd(api, dType.PTPMode.PTPMOVLXYZMode, loc_b['x'], loc_b['y'], loc_b['z'], 0, isQueued = 1)[0]
lastIndex = dType.SetPTPCmd(api, dType.PTPMode.PTPMOVLXYZMode, loc_m['x'], loc_m['y'], loc_m['z'], 0, isQueued = 1)[0]
# Start to Execute Command Queue
dType.SetQueuedCmdStartExec(api)
# Wait for Executing Last Command
while lastIndex > dType.GetQueuedCmdCurrentIndex(api)[0]:
dType.dSleep(100)
#Stop to Execute Command Queued
dType.SetQueuedCmdStopExec(api)
dType.DisconnectDobot(api)
'로봇 프로그래밍' 카테고리의 다른 글
그리퍼 동작 - (6) Dobot Magician 파이썬 프로그래밍 (0) | 2023.03.31 |
---|---|
팔 동작 - (5) Dobot Magician Python 프로그래밍 (0) | 2023.03.31 |
Dobot Magician 좌표 체계 및 동작 모드 (0) | 2023.03.29 |
모듈 파일 목록 - (3) Dobot Magician Python 프로그래밍 (0) | 2023.03.29 |
대표 예제 분석 - (2) Dobot Magician 파이썬 프로그래밍 (0) | 2023.03.27 |