4.3 로봇 프로그램 운영 수업
개요
Execution 클래스는 다음 핵심 기능을 담당하는 로봇 프로그램 및 모션 작업에 대한 통합 예약 인터페이스를 제공합니다.
- Start/stop/pause/resume 티치 펜던트 프로그램
- 동시에 실행되는 작업 목록 관리
- BAS 스크립트 및 기타 사용자 정의 워크플로우 실행
Arm과 Motion의 연결과 모션 기능을 결합한 Execution은 호스트 측에서 컨트롤러의 프로그램 흐름을 트리거하고 제어하는 역할을 담당합니다.
4.3.1 지정된 프로그램 실행
| 메서드 이름 | execution.start( program_name : str) -> StatusCodeEnum |
|---|---|
| 설명 | 지정된 프로그램을 실행합니다. |
| 요청 매개변수 | program_name : str 실행할 프로그램의 이름입니다. |
| 반환 값 | StatusCodeEnum: 함수 실행 결과입니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.3.2 현재 실행 중인 프로그램 중지
| 메서드 이름 | execution.stop( program_name : str = '') -> StatusCodeEnum |
|---|---|
| 설명 | 현재 실행 중인 프로그램을 중지하거나 로봇의 현재 동작을 중지합니다. |
| 요청 매개변수 | program_name : str 프로그램 이름(기본적으로 빈 문자열, 현재 실행 중인 프로그램 또는 모션 명령을 중지함). |
| 반환 값 | StatusCodeEnum: 함수 실행 결과입니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.3.3 실행 중인 모든 프로그램의 세부 정보 반환
| 메서드 이름 | execution.all_running_programs() -> tuple[list, StatusCodeEnum] |
|---|---|
| 설명 | 스레드 ID, 프로그램 이름, xpath, 프로그램 상태 및 프로그램 유형을 포함하여 실행 중인 모든 프로그램에 대한 자세한 정보를 반환합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | list: 실행 중인 프로그램 세부 정보 목록으로, 각 요소에는 thread_id , program_name , xpath , program_status , program_type 등이 포함됩니다. StatusCodeEnum: 함수 실행 결과입니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.3.4 프로그램 실행 일시 중지
| 메서드 이름 | execution.pause( program_name : str = '') -> StatusCodeEnum |
|---|---|
| 설명 | 현재 실행 중인 프로그램이나 로봇의 현재 동작을 일시 정지합니다. |
| 요청 매개변수 | program_name : str 프로그램 이름(기본 빈 문자열, 현재 실행 중인 프로그램 또는 모션 명령을 일시 중지함). |
| 반환 값 | StatusCodeEnum: 함수 실행 결과입니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.3.5 프로그램 실행 재개
| 메서드 이름 | execution.resume( program_name : str = '') -> StatusCodeEnum |
|---|---|
| 설명 | 일시정지된 상태의 프로그램을 계속 실행합니다. |
| 요청 매개변수 | program_name : str 프로그램 이름(기본적으로 빈 문자열, 현재 일시 중지된 프로그램 또는 모션 명령을 다시 시작함). |
| 반환 값 | StatusCodeEnum: 함수 실행 결과입니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: 自定义程序使用示例 / Example of custom program usage
"""
import time
from Agilebot import Arm, StatusCodeEnum
# [ZH] 初始化捷勃特机器人
# [EN] Initialize the Agilebot robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to the Agilebot robot
ret = arm.connect("10.27.1.254")
# [ZH] 检查是否连接成功
# [EN] Check if the connection is successful
if ret == StatusCodeEnum.OK:
print("机器人连接成功 / Robot connection successful")
else:
print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
program_name = "test"
# [ZH] 执行程序
# [EN] Execute program
ret = arm.execution.start(program_name)
if ret == StatusCodeEnum.OK:
print("程序启动成功 / Program start successful")
else:
print(f"程序启动失败,错误代码 / Program start failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 获取所有正在运行的程序
# [EN] Get all running programs
programs_list, ret = arm.execution.all_running_programs()
if ret == StatusCodeEnum.OK:
print("获取运行程序列表成功 / Get running programs list successful")
else:
print(f"获取运行程序列表失败,错误代码 / Get running programs list failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
for program in programs_list:
print(f"正在运行的程序名:{program}")
time.sleep(2)
# [ZH] 暂停程序
# [EN] Pause program
ret = arm.execution.pause(program_name)
if ret == StatusCodeEnum.OK:
print("程序暂停成功 / Program pause successful")
else:
print(f"程序暂停失败,错误代码 / Program pause failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
time.sleep(2)
# [ZH] 恢复程序
# [EN] Resume program
ret = arm.execution.resume(program_name)
if ret == StatusCodeEnum.OK:
print("程序恢复成功 / Program resume successful")
else:
print(f"程序恢复失败,错误代码 / Program resume failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
time.sleep(2)
# [ZH] 停止程序
# [EN] Stop program
ret = arm.execution.stop(program_name)
if ret == StatusCodeEnum.OK:
print("程序停止成功 / Program stop successful")
else:
print(f"程序停止失败,错误代码 / Program stop failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from the Agilebot robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")4.3.6 BAS 스크립트 프로그램 실행
| 메서드 이름 | execution.execute_bas_script( bas_script : BasScript |목록[str]) -> StatusCodeEnum |
|---|---|
| 설명 | 사용자 정의 BAS 스크립트 프로그램을 실행합니다. |
| 요청 매개변수 | bas_script : BasScript 또는 list[str] 사용자 정의 BAS 스크립트 프로그램입니다. |
| 반환 값 | StatusCodeEnum: 함수 실행 결과입니다. |
| 메모 | BAS 스크립트 프로그램의 일시 중지, 재개 및 중지 방법은 일반 프로그램과 동일합니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.2.0+ 산업용(Bronze): v7.6.0.0+ |
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: Bas脚本创建和使用示例 / Example of Bas script creation and usage
"""
from Agilebot import *
# [ZH] 初始化Arm类
# [EN] Initialize the Arm class
arm = Arm()
# [ZH] 连接控制器
# [EN] Connect to the controller
ret = arm.connect("10.27.1.254")
if ret == StatusCodeEnum.OK:
print("机器人连接成功 / Robot connected successfully")
else:
print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 创建BasScript对象
# [EN] Create BasScript object
bs = BasScript(name="bas_test")
ret = bs.assign_value(AssignType.R, 1, OtherType.VALUE, 10)
ret = bs.move_joint(
pose_type=MovePoseType.PR,
pose_index=1,
speed_type=SpeedType.VALUE,
speed_value=100,
smooth_type=SmoothType.SMOOTH_DISTANCE,
smooth_distance=200.5,
)
ret = bs.wait_time(ValueType.VALUE, 10)
if ret == StatusCodeEnum.OK:
print("创建BasScript对象成功 / Create BasScript object successfully")
else:
print(f"创建BasScript对象失败,错误代码 / Create BasScript object failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 执行脚本
# [EN] Execute script
ret = arm.execution.execute_bas_script(bs)
if ret == StatusCodeEnum.OK:
print("执行脚本成功 / Execute script successfully")
else:
print(f"执行脚本失败,错误代码 / Execute script failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 结束后断开机器人连接
# [EN] Disconnect from the robot after completion
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")