You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4-Ubuntu20.04下Dronekit-Python遇dronekit.APIException报错求助

解决Dronekit 2.9.2 APIException报错的方案

核心排查方向

从你的运行场景(Python版本混用、别名调用)来看,问题大概率源于环境依赖冲突或版本兼容性不匹配,以下是针对性解决步骤:

1. 确认Python别名指向的实际版本

先检查python2-3别名对应的Python版本:

alias python2-3
  • 如果指向Python2.7:Dronekit 2.9.2原生兼容该版本,但需排查依赖冲突;
  • 如果指向Python3.8:Dronekit 2.9.2对Python3的支持存在缺陷,需调整版本或环境。

2. 用虚拟环境隔离依赖

树莓派同时装Python2和3时,全局依赖极易混乱,建议为不同Python版本创建独立虚拟环境:

Python2.7环境配置

sudo apt-get install python-virtualenv
virtualenv -p /usr/bin/python2.7 dronekit-venv2
source dronekit-venv2/bin/activate
pip install dronekit==2.9.2 dronekit-sitl pyserial==2.7

Python3.8环境配置

sudo apt-get install python3-venv
python3.8 -m venv dronekit-venv3
source dronekit-venv3/bin/activate
pip install git+https://github.com/dronekit/dronekit-python.git@python3 dronekit-sitl

激活对应虚拟环境后再运行脚本,彻底避免全局依赖干扰。

3. 修正飞控连接逻辑

APIException常因连接参数错误或初始化超时触发:

  • 确认脚本中连接字符串的串口设备和波特率与飞控匹配,比如树莓派上常用的串口是/dev/ttyAMA0或/dev/ttyUSB0:
    vehicle = connect('/dev/ttyAMA0', baud=57600, wait_ready=True)
    
  • 增加超时参数,避免因飞控初始化慢导致报错:
    vehicle = connect('/dev/ttyAMA0', baud=57600, wait_ready=True, timeout=30)
    

4. 修复串口访问权限

树莓派访问串口需要权限,确保当前用户加入dialout组:

sudo usermod -a -G dialout $USER

重启终端后再执行脚本。

内容的提问来源于stack exchange,提问作者Coriander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:55:32