运行Tello无人机djitellopy代码出现command指令4次重试失败报错如何解决?
报错原因
- 无人机未完成首次激活:全新或重置后的Tello必须通过官方Tello APP完成激活,未激活状态下不会响应第三方SDK的控制指令,会持续显示黄色指示灯,所有控制指令都不会返回正常响应。
- 网络路径冲突:电脑同时连接了以太网、其他WiFi等网络,系统默认路由没有把控制指令发到Tello的专属网段(默认IP为192.168.10.1),导致指令无法送达无人机。
- djitellopy库版本与无人机固件不匹配:旧版本djitellopy库无法适配新固件的Tello,反之新版本库也可能对旧固件的无人机存在兼容性问题。
- 本地防火墙/杀毒软件拦截:Tello通过8889UDP端口收发控制指令,本地安全软件可能拦截了Python进程的UDP通信,导致指令发送后无法收到无人机的响应。
解决步骤
- 第一步先完成无人机激活:手机连接Tello的WiFi,打开官方Tello APP按照引导完成激活流程,确认无人机指示灯变为绿色闪烁后再运行代码测试。
- 排查网络问题:断开电脑上除Tello WiFi外的所有网络连接,打开终端执行
ping 192.168.10.1确认通信正常,再运行代码。 - 调整djitellopy库版本:
- 普通版Tello可先降级到稳定兼容版:执行
pip install djitellopy==2.4.0 - Tello EDU/Talent版升级到最新版本:执行
pip install --upgrade djitellopy
- 普通版Tello可先降级到稳定兼容版:执行
- 放行通信权限:暂时关闭本地防火墙、杀毒软件测试是否能正常连接,若测试可行,将Python进程和UDP 8889端口加入安全软件白名单即可。
- 可以修改代码增加重试配置,提高连接成功率,参考代码如下:
from djitellopy import Tello # 增加重试次数和超时时间,适配网络波动场景 tello = Tello(retry_count=8, retry_timeout=3) tello.connect() # 读取电池电量确认连接正常,电量低于10%时无人机也不会响应起飞指令 print(f"当前电池电量:{tello.get_battery()}%") tello.takeoff() tello.move_left(100) tello.rotate_clockwise(90) tello.move_forward(100) tello.land()
- 若以上操作都无效,打开官方Tello APP检查无人机固件更新,升级到最新固件后再测试。
内容的提问来源于stack exchange,提问作者Yash Sharma
相关产品推荐
相关产品推荐

