大疆Tello UDP控制协议接口

Posted lida2003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大疆Tello UDP控制协议接口相关的知识,希望对你有一定的参考价值。

大疆Tello UDP控制协议接口

这里介绍了大疆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 xx = 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轴加速度

以上是关于大疆Tello UDP控制协议接口的主要内容,如果未能解决你的问题,请参考以下文章

大疆技术+intel芯片的可编程无人机Tello的编程环境搭建

大疆m3508电机怎么控制

网络 -- UDP知识

网络 -- UDP知识

TCP,UDP,ICMP是啥意思啊?

PPK大疆无人机应用教程