大疆Tello UDP控制协议接口

大疆Tello UDP控制协议接口

  • 1. 设计架构
  • 2. UDP报文格式
    • 2.1 控制报文
    • 2.2 查询报文
    • 2.3 状态报文
  • 3. 命令集
    • 3.1 【控制报文】控制命令
    • 3.2 【控制报文】设置命令
    • 3.3 【查询报文】读取命令
  • 4. 状态报文

这里介绍了大疆Tello的UDP操作接口。将Tello作为黑匣子,如何来通过Tello UDP协议来进行交互控制。

1. 设计架构

  1. 控制流

a) 控制端(UDP socket) --> WiFi(UDP) --> Tello(port 8889)
b) 控制端(port 8890) <-- WiFi(UDP) <-- Tello(UDP socket)

注:有些脚本将控制端端口设置9000,不知道是否Tello后续有所变更,请知!
2. 异步通信,非同一链路(无 阻塞/非阻塞 及事务操作概念)

  1. 【未明确】规格参数,如:通信延迟,状态更新间隔

  2. 异常处理简单

a) Tello端异常处理:15秒内没有收到任何命令输入,将自动降落。
b) 控制端异常处理【未明确】
c) 链路检测:异常恢复处理

基于上述初步情况看,整体设计思路:It’s simply works!!!

通过上述设计思路可以非常明确的了解产品设计的目的。从产品的角度来看,架构也非常贴近产品定位。唯一比较可惜的是生态圈和产品长期规划及延伸的问题。

我们这里介绍主要以围绕报文格式和支持命令集展开。

2. UDP报文格式

UDP具有package格式优势,相较于TCP字符流。一包数据就是一条命令。

注:所有报文采用ASCII字符串明文方式。

2.1 控制报文

控制端发送:“commands”
Tello 反馈:“ok” or “error”

2.2 查询报文

控制端发送:“query”
Tello 反馈:约定格式字符串

2.3 状态报文

Tello 反馈:约定格式字符串

3. 命令集

3.1 【控制报文】控制命令

命令 描述
command 进入SDK命令模式
takeoff 自动起飞
land 自动降落
streamon 打开视频流
streamoff 关闭视频流
emergency 停止电机转动
up x 向上飞x厘米,x = 200 ~ 500
down x 向下飞x厘米,x = 200 ~ 500
left x 向左飞x厘米,x = 200 ~ 500
right x 向右飞x厘米,x = 200 ~ 500
forward x 向前飞x厘米,x = 200 ~ 500
back x 向后飞x厘米,x = 200 ~ 500
cw x 顺时针旋转x度,x = 1 ~ 360
ccw x 逆时针旋转x度,x = 1 ~ 360
flip x 朝x方向翻滚,x = l (left)/r (right)/f (forward)/b (back)
go x y z speed 设置速度飞往坐标(x,y,z): x/y/z = [-500, 500]cm, speed = [10,100]cm/s, x/y/z不能同时在[-20, 20]之间。
stop 停止运动并悬停,任何时候都可以触发该急停操作
curve x1 y1 z1 x2 y2 z2 speed 设置速度飞弧线,经过p1到达p2,若弧线半径不在0.5-10米范围,返回提醒。x/y/z = [-500, 500]cm, speed = [10,100]cm/s, x/y/z不能同时在[-20, 20]之间。
go x y z speed mid 设置速度飞往识别卡坐标点。mid =m-2/m-1/m1/m2…/m8, m-1内部算法最快识别到的识别卡; m-2距离当前位置最近的识别卡。x/y/z = [-500, 500]cm, speed = [10,100]cm/s, x/y/z不能同时在[-20, 20]之间。
curve x1 y1 z1 x2 y2 z2 speed mid 设置速度飞弧线,经过p1到达p2,若弧线半径不在0.5-10米范围,返回提醒。mid =m-2/m-1/m1/m2…/m8, m-1内部算法最快识别到的识别卡; m-2距离当前位置最近的识别卡。x/y/z = [-500, 500]cm, speed = [10,100]cm/s, x/y/z不能同时在[-20, 20]之间。
jump x y z speed yaw mid1 mid2 飞往mid1坐标点悬停,识别mid2识别卡,并在mid2 (0, 0, z)的位置并转向到设置的yaw值(z>0)

3.2 【控制报文】设置命令

命令 描述
speed x 将当前速度设置为x cm/s,x = 10 ~ 100
rc roll pitch throttle yaw 设置遥控器的4通道杆量, 范围:[-100, 100]
wifi ssid pasword 设置AP模式
mon 打开识别卡探测,默认:同时打开前视和下视
moff 关闭识别卡探测
mdirection x x = 0/1/2, 0打开下视探测, 1打开前视探测, 2同时打开前视和下视探测。单个20Hz,两个方向10Hz频率。
ap ssid password 转为STA模式,并连入到AP

3.3 【查询报文】读取命令

命令 描述 约定格式
speed? 获取当前设置速度(cm/s) x, 范围:[10. 100]
battery? 获取当前电池剩余电量的百分比 x, 范围:[10. 100]
time? 获取电机运转时间 x, 单位:秒
wifi? 获取WiFi信噪比 信噪比
sdk? 获取SDK版本号 xx(>=20)
sn? 获取模型SN号 生产序列号

4. 状态报文

打开挑战卡:“mid:%d;x:%d;y%d;z:%d;mpry:%d;pitch:%d;roll:%d;yaw:%d;vgx:%d;vgy:%d;vgz:%d;templ:%d;temph:%d;tof:%d;h:%d;bat:%d;baro:%f;\r\n”
关闭挑战卡:“pitch:%d;roll:%d;yaw:%d;vgx:%d;vgy:%d;vgz:%d;templ:%d;temph:%d;tof:%d;h:%d;bat:%d;baro:%f;\r\n”

mid: 检测到的挑战卡ID;若未检测到挑战卡,返回-1
x: 飞行器相对于检测到的挑战卡的X轴坐标,厘米,若未检测到挑战卡,返回0
y: 飞行器相对于检测到的挑战卡的Y轴坐标,厘米,若未检测到挑战卡,返回0
z: 飞行器相对于检测到的挑战卡的Z轴坐标,厘米,若未检测到挑战卡,返回0
mpry: 飞行器在挑战卡中的俯仰、横滚及偏航角度,若未检测到挑战卡,返回0
pitch: 俯仰角度(度)
roll: 横滚角度(度)
yaw: 偏航角度(度)
vgx: X轴速度
vgy: Y轴速度
vgz: Z轴速度
templ: 主板最低温度(摄氏度)
temph: 主板最高温度(摄氏度)
tof: ToF距离,厘米
h: 相对于起飞点高度,厘米
bat: 当前电量百分比,%
baro: 气压计测量高度,米
time: 电机运转时间,秒
agx: X轴加速度
agy: Y轴加速度
agz: Z轴加速度

你可能感兴趣的:(DIY,Drones,网络协议,udp,网络,无人机)