当前位置: 首页 > news >正文

使用 Python + Pygame 键盘控制无人机(AirSim)

键盘控制无人机

        在无人机仿真或者控制实验中,很多时候我们需要通过键盘来实时操控无人机的飞行方向、速度和姿态。本文将介绍如何使用 Python + Pygame 来实现键盘监听,并通过 AirSim 接口发送速度与偏航控制指令。

环境准备

需要的依赖:python3.x pygame airsim

初始化

首先导入依赖并初始化 pygame

import airsim
import pygame
import syspygame.init()
screen = pygame.display.set_mode((400, 300))  # 创建一个窗口用于监听按键
pygame.display.set_caption("Drone Keyboard Controller")

设置无人机的基础速度参数和偏航速率:

# 基础速度 (m/s)
vehicle_velocity = 2.0  # 临时加速比例
speedup_ratio = 10.0  # 基础偏航速率 (deg/s)
vehicle_yaw_rate = 5.0

键盘控制逻辑

通过键盘来改变无人机的速度和偏航速率:

  • 方向键 ↑ ↓ ← → → 控制无人机前进 / 后退 / 左移 / 右移

  • W / S → 上升 / 下降

  • A / D → 左旋转 / 右旋转

  • 空格 → 临时加速

  • ESC → 退出

代码示例:

while True:pygame.event.pump()  # 刷新事件队列keys = pygame.key.get_pressed()# 是否加速if keys[pygame.K_SPACE]:scale_ratio = speedup_ratioelse:scale_ratio = 1.0# 偏航控制(A / D)yaw_rate = (keys[pygame.K_d] - keys[pygame.K_a]) * scale_ratio * vehicle_yaw_rate# 前后移动(↑ / ↓)velocity_x = (keys[pygame.K_UP] - keys[pygame.K_DOWN]) * scale_ratio * vehicle_velocity# 左右移动(← / →)velocity_y = -(keys[pygame.K_LEFT] - keys[pygame.K_RIGHT]) * scale_ratio * vehicle_velocity# 上下移动(W / S)velocity_z = -(keys[pygame.K_w] - keys[pygame.K_s]) * scale_ratio * vehicle_velocity# 发送控制指令AirSim_client.moveByVelocityAsync(vx=velocity_x,vy=velocity_y,vz=velocity_z,duration=0.02,yaw_mode=airsim.YawMode(is_rate=True, yaw_or_rate=yaw_rate),vehicle_name="Drone1")# 按 ESC 退出if keys[pygame.K_ESCAPE]:pygame.quit()sys.exit()

效果演示

运行后,你可以直接通过键盘操控无人机:

  • 按住方向键让无人机前后左右平移

  • 按住 W / S 让无人机上升或下降

  • 按住 A / D 控制无人机旋转偏航

  • 空格 进入加速模式,更方便观察飞行动作

  • ESC 结束程序


总结

通过 pygame 键盘监听 + AirSim 接口,我们实现了一个简单直观的无人机控制方式。
这种方式适合:

  • 进行飞控算法测试

  • 做可视化演示

  • 快速调试无人机运动学效果

如果需要更复杂的控制逻辑,还可以在此基础上扩展,例如添加 姿态角度控制航点自动飞行 等功能。

http://www.dtcms.com/a/410564.html

相关文章:

  • 江苏省住房和建设厅网站dw怎样做网站链接
  • 重构商业生态:全域分销商城小程序开发赋能商家高效增长
  • 第四部分:VTK常用类详解(第85章:Imaging模块 - 图像处理类)
  • ​​AI重构混沌工程:智能韧性守护系统高可用时代已来​
  • 2025年9月22日优雅草蜻蜓I通讯水银版4.1.9版本正式发布-完成所有服务升级版本重构升级-修复大量漏洞-优化启动步骤-卓伊凡|bigniu|麻子|贝贝|
  • Python 图像处理技巧指南
  • Pillow高级实战案例:图像处理的进阶应用
  • 成都本地做网站的网站建设用什
  • 海外网站搭建该网站正在建设中 马上就来
  • 从MongoDB到金仓:一次电子证照系统的平滑国产化升级实践
  • 鸿蒙Next密码自动填充服务:安全与便捷的完美融合
  • iCloud照片共享:在家庭内外分享iCloud照片
  • Session与JWT安全对比
  • 网站租用服务器价格北京理工大学网站开发与应用
  • 【HackTheBox】- Eureka 靶机学习
  • 北京做网站建设的公司游戏网站模板免费下载
  • TypeScript介绍
  • 机器学习:编码方式
  • 南昌个人网站建设天津全包圆装饰公司官网
  • DQL 超维分析课程
  • Elasticsearch8容器化部署
  • visual studio 开发网站开发如何评估一个网站
  • 什么是 RAG?RAG 的主要流程是什么?
  • 使用 Flask 构建 Web 应用:静态页面与动态 API 访问
  • AD-DROP:Attribution-Driven Dropout for Robust Language Model Fine-Tuning
  • Redis从零讲解
  • 天津平台网站建设哪里好太原免费网络推广哪里朿
  • 量子机器学习深度探索:从原理到实践的全面指南
  • 济南网站建设(选聚搜网络)有域名 有主机 怎么建设网站
  • 网站建设找汉狮阿里云域名申请注册