为无人机高可靠通信场景设计的工业级 SDK
检测连接中断后自动重连,采用指数退避策略,重连成功后自动登录,队列中的命令自动恢复执行。
严格 FIFO 队列保证一问一答,避免并发导致响应错乱。用户命令、心跳、周期任务共享同一队列。
空闲时自动发送轻量心跳命令,维持 NAT/防火墙会话,同时作为连接健康状态的早期检测。
每条命令独立超时控制,超时或发送失败自动重试(默认 3 次),超时命令自动拒绝不阻塞队列。
注册命名周期任务(如每 2 秒获取状态),SDK 自动调度入队,无需用户自行管理定时器。
连接建立后自动发送登录命令,支持普通用户与管理员密码,重连后自动重新鉴权。
三行代码连接无人机并执行起飞
from lluav_sdk import LLUAVClient
# 连接并自动登录
client = LLUAVClient("192.168.1.100", password="your_password")
client.connect()
# 注册周期任务:每 2 秒获取状态
client.add_periodic_task("status", 2.0, "state")
# 执行飞行命令(自动排队、超时管理)
client.takeoff()
client.set_sp_ned(5.0, 0.0, -5.0, 0.0)
client.rtl()
client.disconnect()
#include "lluav_sdk/client.hpp"
#include <iostream>
int main() {
// 默认:自动重连、心跳 5s、超时 10s
lluav::LLUAVClient client("192.168.1.100", 53001, "your_password");
client.connect();
// 周期任务:每 3 秒获取 Lidar 位姿
client.add_periodic_task("pose", 3, "lidarpose");
auto state = client.get_state();
std::cout << state.dump(2) << std::endl;
client.takeoff();
client.rtl();
client.disconnect();
return 0;
}
const { LLUAVClient } = require('./src/client');
async function main() {
const client = new LLUAVClient('192.168.1.100', 53001, 'your_password', 10000, {
autoReconnect: true,
heartbeatInterval: 5000,
});
await client.connect();
// 注册周期任务
client.addPeriodicTask('status', 2, 'state');
const state = await client.getState();
console.log(JSON.stringify(state, null, 2));
await client.takeoff();
await client.rtl();
await client.disconnect();
}
main().catch(console.error);
使用发布脚本一键打包,或手动集成源码
SDK 内置跨平台发布脚本,自动验证结构、检查语法、打包归档并生成校验文件。
# 生成 tar.gz + zip + SHA256 校验
./release.sh --version 1.0.0 --output ./dist
# 输出
# dist/lluav-sdk-1.0.0.tar.gz
# dist/lluav-sdk-1.0.0.zip
# dist/lluav-sdk-1.0.0-SHA256.txt