初始化实例
注意
由于通信不稳定等原因,可能导致错误发生。大多数情况下,需要使用错误处理机制来捕获错误,防止异常退出。
导入 SDK
选择要使用的编程语言,导入lebai_sdk
示例程序
lebai_sdk = require('lebai_sdk')
import lebai_sdk
初始化 SDK
在导入SDK后仅需初始化一次
- 函数名:[lebai_sdk]模块的函数
init - 参数:无
- 返回:无
示例程序
lebai_sdk = require('lebai_sdk')
lebai_sdk.init()
import lebai_sdk
lebai_sdk.init()
SDK 版本
获取 SDK 的版本号。
- 函数名:[lebai_sdk]模块的函数
version - 参数:无
- 返回:[str] 版本号
示例程序
version = lebai_sdk.version()
print(version)
version = lebai_sdk.version()
print(version)
获取时间戳
获取当前系统时间戳(毫秒)。
- 函数名:[lebai_sdk]模块的函数
timestamp - 参数:无
- 返回:[int] 毫秒时间戳
示例程序
timestamp = lebai_sdk.timestamp()
print(timestamp)
timestamp = lebai_sdk.timestamp()
print(timestamp)
休眠
阻塞休眠指定的毫秒数。
- 函数名:[lebai_sdk]模块的函数
sleep_ms - 参数:
- ms: [int] 休眠时间(毫秒)
- 返回:无
示例程序
lebai_sdk.sleep_ms(1000)
lebai_sdk.sleep_ms(1000)
设备发现
注意
本功能基于 mDNS 技术,用于 Web 前端开发的 JavaScript SDK 不支持该功能
在持续时间内连续发现周边设备,持续时间结束后,返回周边所有在线的机器人列表。
- 函数名:[lebai_sdk]模块的函数
discover_devices - 参数:
- time: [float] 扫描时长(秒)
- 返回:[DeviceInfo] 设备信息列表,包含
name设备名称、ipIP 地址、macMAC 地址、online是否在线
示例程序
devices = lebai_sdk.discover_devices(3)
print(devices)
devices = lebai_sdk.discover_devices(3)
print(devices)
连接设备
通过 IP 寻址连接到乐白机械臂。支持局域网 IP(如"192.168.2.101")或 frpc 远程地址(如"user:passwd@xxx.nodes.lebai.ltd")。
- 函数名:[lebai_sdk]模块的函数
connect - 参数:
- ip: [str] 乐白机械臂的 IP 地址
- port: [bool | int] 端口选择——
None或False为真实机器人(默认 3031),True为模拟器(3030),int为自定义端口。可选,默认None - 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)
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.118"
lebai = lebai_sdk.connect(robot_ip, False)
获取连接状态
- 函数名:[Robot]下的方法
is_connected - 参数:无
- 返回:[bool] 是否处于连接状态
示例程序
connected = lebai:is_connected()
print(connected)
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) -- 重连
disconnect_reason = lebai.wait_disconnect()
print(disconnect_reason)
lebai = lebai_sdk.connect("192.168.2.3", False) # 重连
调用任意 RPC 方法
调用任意的 JSON-RPC 方法,用于调用 SDK 尚未封装的底层接口。
- 函数名:[Robot]下的方法
call - 参数:
- method: [str] RPC 方法名
- param: [str] 参数 JSON 字符串。可选,默认
None
- 返回:[str] 返回结果的 JSON 字符串
示例程序
res = lebai:call("get_robot_state", nil)
print(res)
res = lebai.call("get_robot_state")
print(res)
订阅 RPC 方法
订阅 RPC 方法的推送数据(sub_<method> / unsub_<method>)。适用于需要实时获取机器人状态、IO 变化等场景。
- 函数名:[Robot]下的方法
subscribe - 参数:
- method: [str] 订阅方法名
- 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
sub = lebai.subscribe("robot_state")
while True:
data = sub.next()
if data is None:
break
print(data)
