Skip to content

4.3 机器人程序操作类

说明

Execution 类提供机器人程序与运动任务的统一调度接口,可用于启动 / 停止 / 暂停 / 恢复示教程序、管理并发运行的任务列表,以及执行 BAS 脚本等自定义流程。配合 ArmMotion 的连接和运动能力,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_idprogram_namexpathprogram_statusprogram_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+

示例代码

execution/program_execution.py
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+ |

execution/bas_script_execution.py
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")