初始化实例

注意

由于通信不稳定等原因,可能导致错误发生。大多数情况下,需要使用错误处理机制来捕获错误,防止异常退出。

导入 SDK

选择要使用的编程语言,导入lebai_sdk

示例程序

lebai_sdk = require('lebai_sdk')

初始化 SDK

在导入SDK后仅需初始化一次

  • 函数名:[lebai_sdk]模块的函数init
  • 参数:无
  • 返回:无

示例程序

lebai_sdk = require('lebai_sdk')
lebai_sdk.init()

SDK 版本

获取 SDK 的版本号。

  • 函数名:[lebai_sdk]模块的函数version
  • 参数:无
  • 返回:[str] 版本号

示例程序

version = lebai_sdk.version()
print(version)

获取时间戳

获取当前系统时间戳(毫秒)。

  • 函数名:[lebai_sdk]模块的函数timestamp
  • 参数:无
  • 返回:[int] 毫秒时间戳

示例程序

timestamp = lebai_sdk.timestamp()
print(timestamp)

休眠

阻塞休眠指定的毫秒数。

  • 函数名:[lebai_sdk]模块的函数sleep_ms
  • 参数:
    1. ms: [int] 休眠时间(毫秒)
  • 返回:无

示例程序

lebai_sdk.sleep_ms(1000)

设备发现

注意

本功能基于 mDNS 技术,用于 Web 前端开发的 JavaScript SDK 不支持该功能

在持续时间内连续发现周边设备,持续时间结束后,返回周边所有在线的机器人列表。

  • 函数名:[lebai_sdk]模块的函数discover_devices
  • 参数:
    1. time: [float] 扫描时长(秒)
  • 返回:[DeviceInfo] 设备信息列表,包含name设备名称、ip IP 地址、mac MAC 地址、online 是否在线

示例程序

devices = lebai_sdk.discover_devices(3)
print(devices)

连接设备

通过 IP 寻址连接到乐白机械臂。支持局域网 IP(如"192.168.2.101")或 frpc 远程地址(如"user:passwd@xxx.nodes.lebai.ltd")。

  • 函数名:[lebai_sdk]模块的函数connect
  • 参数:
    1. ip: [str] 乐白机械臂的 IP 地址
    2. port: [bool | int] 端口选择——NoneFalse 为真实机器人(默认 3031),True 为模拟器(3030),int 为自定义端口。可选,默认None
    3. option: [ConnectOption] 连接选项,如{"request_timeout": 60}。可选,默认None
  • 返回:[Robot] 机械臂实例,后续控制机械臂的方法需使用该实例

示例程序

lebai_sdk = require('lebai_sdk')
lebai_sdk.init()

robot_ip = "192.168.4.118"
lebai = lebai_sdk.connect(robot_ip, false)

获取连接状态

  • 函数名:[Robot]下的方法is_connected
  • 参数:无
  • 返回:[bool] 是否处于连接状态

示例程序

connected = lebai:is_connected()
print(connected)

等待断开连接

阻塞等待设备断开连接。常用于设备断开后重连。

  • 函数名:[Robot]下的方法wait_disconnect
  • 参数:无
  • 返回:[str] 设备断开的原因

示例程序

disconnect_reason = lebai:wait_disconnect()
print(disconnect_reason)
lebai = lebai_sdk.connect("192.168.2.3", false) -- 重连

调用任意 RPC 方法

调用任意的 JSON-RPC 方法,用于调用 SDK 尚未封装的底层接口。

  • 函数名:[Robot]下的方法call
  • 参数:
    1. method: [str] RPC 方法名
    2. param: [str] 参数 JSON 字符串。可选,默认None
  • 返回:[str] 返回结果的 JSON 字符串

示例程序

res = lebai:call("get_robot_state", nil)
print(res)

订阅 RPC 方法

订阅 RPC 方法的推送数据(sub_<method> / unsub_<method>)。适用于需要实时获取机器人状态、IO 变化等场景。

  • 函数名:[Robot]下的方法subscribe
  • 参数:
    1. method: [str] 订阅方法名
    2. param: [str] 参数 JSON 字符串。可选,默认None
  • 返回:[RobotSubscription] 订阅对象,可反复调用next()获取推送数据

获取下一条推送数据

  • 函数名:[RobotSubscription]下的方法next
  • 参数:无
  • 返回:[str] 推送数据的 JSON 字符串;订阅结束时返回None

示例程序

sub = lebai:subscribe("robot_state", nil)
while true do
  local data = sub:next()
  if data == nil then
    break
  end
  print(data)
end