大疆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轴加速度

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Tello是一种小型无人机,它可以使用Python编程语言进行控制。以下是使用Python控制Tello无人机的一些基本步骤: 1. 安装Tello SDK 要控制Tello无人机,需要安装Tello SDK。可以从DJI官方网站下载SDK。安装完成后,可以在Python中使用TelloPy库来控制Tello无人机。 2. 连接Tello无人机 要与Tello无人机进行通信,需要将计算机连接到Tello的Wi-Fi网络。在Python中,可以使用TelloPy库中的connect()函数来连接Tello无人机。 ```python from TelloPy import Tello tello = Tello() tello.connect() ``` 3. 发送命令 与Tello无人机通信的主要方式是通过发送命令。在Python中,可以使用TelloPy库中的send_command()函数发送命令。以下是一些常见的Tello无人机命令: ```python # 起飞 tello.send_command('takeoff') # 降落 tello.send_command('land') # 向前飞行 tello.send_command('forward 50') # 向后飞行 tello.send_command('back 50') # 向左飞行 tello.send_command('left 50') # 向右飞行 tello.send_command('right 50') # 向上飞行 tello.send_command('up 50') # 向下飞行 tello.send_command('down 50') # 旋转 tello.send_command('cw 90') # 按顺时针方向旋转90度 tello.send_command('ccw 90') # 按逆时针方向旋转90度 ``` 4. 断开连接 当不再需要与Tello无人机通信时,可以使用disconnect()函数断开连接。 ```python tello.disconnect() ``` 以上是使用Python控制Tello无人机的一些基本步骤。当然,这只是一个简单的示例,实际上可以使用Python对Tello进行更高级的控制。例如,可以使用摄像头来实时监视Tello无人机的运动,并根据需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值