Skip to content

4.15 插件管理

说明

Extension 模块用于管理机器人控制器上的第三方插件,包含获取控制器 IP、查询 / 查看插件列表、切换启用状态以及调用插件服务等能力。通过 extension 接口可以在上位机侧统一管理插件生命周期,并向插件发送命令以扩展机器人功能。

4.15.1 获取机器人的 IP 地址

方法名extension.get_robot_ip() -> str
描述根据 SDK 运行的环境,返回相应的机器人 IP 地址
请求参数
返回值str:IP 地址(可能返回 None)
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

获取 IP 的逻辑说明:

该方法会根据 SDK 运行的环境自动判断并返回相应的 IP 地址:

  1. 工业示教器环境 :返回控制器的 IP 地址
  2. 协作 AP 板环境
    • 如果使用 DHCP 模式:返回路由器的 IP 地址(默认网关)
    • 如果使用静态 IP 模式:返回配置的静态 IP 地址
  3. 云端环境 返回云端的内部 IP 地址
  4. 其他环境:返回 None

提示

  • 该方法主要用于插件或示教器环境中,需要连接到机器人控制器的场景

4.15.2 获取插件列表

方法名extension.get_list() → tuple[list[ExtensionInfo], StatusCodeEnum]
描述获取当前机器人上已安装的全部插件信息。
请求参数
返回值list[ExtensionInfo] :插件信息列表。
StatusCodeEnum:函数执行结果。
兼容的机器人软件版本协作 (Copper): v7.7.0.0+
工业 (Bronze): 不支持

4.15.3 获取插件详情

方法名extension.get( name : str) → tuple[ExtensionInfo, StatusCodeEnum]
描述根据插件名称查询单个插件的详细信息。
请求参数name :插件名称。
返回值ExtensionInfo :插件详细信息。
StatusCodeEnum:函数执行结果。
兼容的机器人软件版本协作 (Copper): v7.7.0.0+
工业 (Bronze): 不支持

4.15.4 切换插件启用状态

方法名extension.toggle( name : str) → StatusCodeEnum
描述切换指定插件的启用 / 禁用状态。
请求参数name :插件名称。
返回值StatusCodeEnum:函数执行结果。
兼容的机器人软件版本协作 (Copper): v7.7.0.0+
工业 (Bronze): 不支持

4.15.5 调用简单服务插件命令

方法名extension.call_service( name : str, command : str, params : dict = None) → tuple[Any, StatusCodeEnum]
描述调用指定插件的简单服务命令,并返回执行结果。
请求参数name :插件名称。
command :插件命令名称。
params :命令参数(可选,默认为 None)。
返回值Any :插件命令执行结果。
StatusCodeEnum:函数执行结果。
兼容的机器人软件版本协作 (Copper): v7.7.0.0+
工业 (Bronze): 不支持

示例代码

extension/extension_operation.py
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: 插件使用示例 / Example of extension usage
"""

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)

res, ret = arm.extension.get("MathService")
if ret == StatusCodeEnum.OK:
    print("获取插件信息成功 / Get extension information successfully")
    print(f"插件信息 / Extension information: {res}")
else:
    print(f"获取插件信息失败,错误代码 / Get extension information failed, error code: {ret.errmsg}")

ret = arm.extension.toggle("MathService")
if ret == StatusCodeEnum.OK:
    print("切换插件状态成功 / Toggle extension status successfully")
else:
    print(f"切换插件状态失败,错误代码 / Toggle extension status failed, error code: {ret.errmsg}")

res, ret = arm.extension.call_service("MathService", "add", dict([["a", 1], ["b", 2]]))
if ret == StatusCodeEnum.OK:
    print("调用插件服务成功 / Call extension service successfully")
    print(f"调用插件服务结果 / Call extension service result: {res}")
else:
    print(f"调用插件服务失败,错误代码 / Call extension service failed, error code: {ret.errmsg}")