4.3 机器人程序操作类
说明
Execution 类提供机器人程序与运动任务的统一调度接口,可用于启动 / 停止 / 暂停 / 恢复示教程序、管理并发运行的任务列表,以及执行 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 | list[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")