基于ROS2 Humble在WSL(Ubuntu22.04)连接Tello无人机失败求助
解决WSL2 Ubuntu 22.04中DJItelloPy无法接收Tello状态包的问题
以下是针对问题的实用排查和解决步骤:
切换WSL网络模式为Mirrored(Windows 11推荐)
默认NAT模式下WSL与Windows的网络隔离可能导致Tello状态包无法回传。编辑Windows用户目录下的.wslconfig文件(无则新建),添加:[wsl2] networkingMode=mirrored执行
wsl --shutdown重启WSL后再启动Ubuntu。验证端口转发有效性
- 在Windows命令行执行
netsh interface portproxy show all,确认8889、8890、11111端口已正确映射至WSL的IP地址。 - 在WSL中用
nc测试与Tello的连通性:nc -zv 192.168.10.1 8889(Tello默认IP为192.168.10.1),显示succeeded则连通正常。
- 在Windows命令行执行
指定WSL本地IP初始化DJItelloPy
在WSL中执行ip addr获取网卡IP(如eth0的inet字段),修改代码绑定该IP:from djitellopy import Tello tello = Tello(local_ip='你的WSL网卡IP') tello.connect()避免默认绑定
0.0.0.0引发的路由问题。关闭Ubuntu本地防火墙
WSL中的ufw防火墙可能拦截状态包,执行sudo ufw disable关闭后重新测试代码。监听状态包端口确认数据到达情况
在WSL中执行sudo tcpdump -i any port 8890,再运行DJItelloPy代码尝试连接。若tcpdump能抓取到来自192.168.10.1的数据包,说明网络正常,问题出在DJItelloPy监听逻辑;若无数据包,继续排查网络转发或模式设置。尝试ROS2官方Tello驱动包
基于ROS2 Humble环境,可使用成熟的tello_driver包:- 创建工作空间并克隆源码:
mkdir -p ~/tello_ws/src && cd ~/tello_ws/src git clone https://github.com/clydemcqueen/tello.git cd .. && colcon build --symlink-install source install/setup.bash - 运行节点:
ros2 run tello_driver tello_node - 查看状态话题:
ros2 topic echo /tello/state,若能收到数据,说明ROS2环境连接正常,可基于此开发项目。
- 创建工作空间并克隆源码:
内容的提问来源于stack exchange,提问作者Ingrid maëva Chekam
相关产品推荐
相关产品推荐

