博客地址:https://www.cnblogs.com/zylyehuo/

具体效果可以关注博主的小红书,上面有效果视频

起飞与降落

fly_up&down.py

import airsim

# 和 airsim 建立连接
client = airsim.MultirotorClient()
client.confirmConnection() # 使用 API 进行控制
client.enableApiControl(True) # 解锁
client.armDisarm(True) client.takeoffAsync().join()
client.landAsync().join() # 上锁
client.armDisarm(False) # 释放控制
client.enableApiControl(False)

位置控制

Position_Control.py

import airsim

client = airsim.MultirotorClient()
client.enableApiControl(True)
client.armDisarm(True)
client.takeoffAsync().join() client.moveToZAsync(-3, 1).join() # 以 1 m/s 的速度飞到 3m 高度 # 飞正方形
client.moveToPositionAsync(5, 0, -3, 1).join() # 以 1 m/s 的速度飞到 (5, 0, -3) 的位置
client.moveToPositionAsync(5, 5, -3, 1).join()
client.moveToPositionAsync(0, 5, -3, 1).join()
client.moveToPositionAsync(0, 0, -3, 1).join() client.landAsync().join()
client.armDisarm(False)
client.enableApiControl(False)

速度控制

Velocity_Control.py

import airsim
import time client = airsim.MultirotorClient() client.enableApiControl(True) client.armDisarm(True) client.takeoffAsync().join() client.moveToZAsync(-2, 1).join() # 以 1 m/s 的速度飞到 2m 高度 # 飞正方形
client.moveByVelocityZAsync(1, 0, -2, 8).join() # 以 1 m/s 的速度往前飞 8s
client.moveByVelocityZAsync(0, 1, -2, 8).join()
client.moveByVelocityZAsync(-1, 0, -2, 8).join()
client.moveByVelocityZAsync(0, -1, -2, 8).join() # 悬停 2 秒钟
client.hoverAsync().join()
time.sleep(2) client.landAsync().join()
client.armDisarm(False)
client.enableApiControl(False)

Pygame检测鼠标

pygame_鼠标.py

import pygame
import sys pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('mouse control') # 设置屏幕标题
screen.fill((0, 0, 0)) # 用黑色填充屏幕 flag = 1 while flag:
for event in pygame.event.get():
if event.type == pygame.QUIT: # 点击窗口的关闭按钮 ×
sys.exit() if event.type == pygame.MOUSEBUTTONDOWN:
print("Mouse Down", event)
if event.type == pygame.MOUSEBUTTONUP:
print("Mouse Up", event)
if event.type == pygame.MOUSEMOTION:
print("Mouse is moving now: ", event) if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
print("Keyboard event: ", event)
flag = 0

Pygame检测键盘

pygame_键盘.py

import pygame
import sys pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('keyboard control') # 设置屏幕标题
screen.fill((0, 0, 0)) # 用黑色填充屏幕 while True:
for event in pygame.event.get():
if event.type == pygame.QUIT: # 点击窗口的关闭按钮 ×
sys.exit() scan_wrapper = pygame.key.get_pressed()
print("pressed keys is : ", scan_wrapper) if scan_wrapper[pygame.K_ESCAPE]:
pygame.quit()
sys.exit()

Pygame检测26个英文字母和方向键

pygame_检测26个英文字母和上下左右.py

import pygame
import sys pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('keyboard control') # 设置屏幕标题
screen.fill((0, 0, 0)) # 用黑色填充屏幕 while True:
for event in pygame.event.get():
if event.type == pygame.QUIT: # 点击窗口的关闭按钮 ×
sys.exit() keys = pygame.key.get_pressed()
for i in range(26):
if keys[pygame.K_a + i]:
print(chr(pygame.K_a + i)) if keys[pygame.K_UP]:
print("Up arrow")
if keys[pygame.K_DOWN]:
print("Down arrow")
if keys[pygame.K_LEFT]:
print("Left arrow")
if keys[pygame.K_RIGHT]:
print("Right arrow") if keys[pygame.K_ESCAPE]:
pygame.quit()
sys.exit()

使用键盘控制 Airsim 中的无人机运动

Control_AirSim_Drone_With_Keyboard.py

import sys
import time
import airsim
import pygame pygame.init()
screen = pygame.display.set_mode((320, 240))
pygame.display.set_caption('keyboard control') # 设置屏幕标题
screen.fill((0, 0, 0)) # 用黑色填充屏幕 vehicle_name = "Drone" # 和 settings 中的对应
AirSim_client = airsim.MultirotorClient()
AirSim_client.confirmConnection()
AirSim_client.enableApiControl(True, vehicle_name=vehicle_name)
AirSim_client.armDisarm(True, vehicle_name=vehicle_name)
AirSim_client.takeoffAsync(vehicle_name=vehicle_name).join() vehicle_velocity = 2.0 # 基础的控制速度 m/s
speed_up_ratio = 10.0 # 设置临时加速度比例
speed_up_flag = False # 用来设置临时加速
vehicle_yaw_rate = 5.0 # 基础的偏航速率 while True:
yaw_rate = 0.0
velocity_x = 0.0
velocity_y = 0.0
velocity_z = 0.0 time.sleep(0.02) for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() scan_wrapper = pygame.key.get_pressed() # 按下空格键加速 10 倍
if scan_wrapper[pygame.K_SPACE]:
scale_ratio = speed_up_ratio
else:
scale_ratio = speed_up_ratio / speed_up_ratio # 根据 A 和 D 来设置偏航速率变量
if scan_wrapper[pygame.K_a] or scan_wrapper[pygame.K_d]:
yaw_rate = (scan_wrapper[pygame.K_d] - scan_wrapper[pygame.K_a]) * scale_ratio * vehicle_yaw_rate # 根据 UP 和 DOWN 来设置 pitch 轴速度变量 (NED 坐标系, x 为机头向前)
if scan_wrapper[pygame.K_UP] or scan_wrapper[pygame.K_DOWN]:
velocity_x = (scan_wrapper[pygame.K_UP] - scan_wrapper[pygame.K_DOWN]) * scale_ratio # 根据 LEFT 和 RIGHT 来设置 roll 轴速度变量 (NED 坐标系, y 为正右方)
if scan_wrapper[pygame.K_LEFT] or scan_wrapper[pygame.K_RIGHT]:
velocity_y = -(scan_wrapper[pygame.K_LEFT] - scan_wrapper[pygame.K_RIGHT]) * scale_ratio # 根据 W 和 S 来设置 Z 轴速度变量 (NED 坐标系, z 轴向上为负)
if scan_wrapper[pygame.K_w] or scan_wrapper[pygame.K_s]:
velocity_z = -(scan_wrapper[pygame.K_w] - scan_wrapper[pygame.K_s]) * scale_ratio # 设置速度控制以及设置偏航控制
AirSim_client.moveByVelocityBodyFrameAsync(vx=velocity_x, vy=velocity_y, vz=velocity_z,duration=0.02,
yaw_mode=airsim.YawMode(True, yaw_or_rate=yaw_rate),
vehicle_name=vehicle_name) if scan_wrapper[pygame.K_ESCAPE]:
pygame.quit()
sys.exit()
client.landAsync().join()
client.armDisarm(False)
client.enableApiControl(False)

AirSim基础使用【Python】的更多相关文章

  1. <-0基础学python.第一课->

    初衷:我电脑里面的歌曲很久没换了,我想听一下新的歌曲,把他们下载下来听,比如某个榜单的,但是一首一首的点击下载另存为真的很恶心 所以我想有没有办法通过程序的方式来实现,结果还真的有,而且网上已经有有人 ...

  2. 2017寒假零基础学习Python系列之 印子

    今日为2017年2月6日,据在慕课网上学习廖雪峰Python教程也快一周左右了,完全是零基础入门Python,大一上学期粗浅的接触学习了C语言,早就听说过Python语言的大名,又想把Python的爬 ...

  3. 二十一. Python基础(21)--Python基础(21)

    二十一. Python基础(21)--Python基础(21) 1 ● 类的命名空间 #对于类的静态属性:     #类.属性: 调用的就是类中的属性     #对象.属性: 先从自己的内存空间里找名 ...

  4. [零基础学python]为什么要开设本栏目

    这个栏目的名称叫做"零基础学Python". 如今网上已经有不少学习python的课程.当中也不乏精品.按理说,不缺少我这个基础类型的课程了.可是,我注意到一个问题.无论是课程还是 ...

  5. python爬虫-基础入门-python爬虫突破封锁

    python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...

  6. D17——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D17 20181014内容纲要: 1.jQuery介绍 2.jQuery功能介绍 (1)jQuery的引入方式 (2)选择器 (3)筛选 (4)文本操作 (5) ...

  7. D16——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D16 20180927内容纲要: 1.JavaScript介绍 2.JavaScript功能介绍 3.JavaScript变量 4.Dom操作 a.获取标签 b ...

  8. D15——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D15 20180926内容纲要: 1.CSS介绍 2.CSS的四种引入方式 3.CSS选择器 4.CSS常用属性 5.小结 6.练习 1 CSS介绍 层叠样式表 ...

  9. D14——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...

  10. D13——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D13 20180918内容纲要: 堡垒机运维开发 1.堡垒机的介绍 2.堡垒机的架构 3.小结 4.堡垒机的功能实现需求 1 堡垒机的介绍 百度百科 随着信息安 ...

随机推荐

  1. Python中strftime()与strptime()的行为与datetime的时间格式码

    前言 datetime在python中的作用不可小视,它可以与string进行相互转化,比如 import datetime # 将输出当前时间的'日/月/年' datetime.datetime.n ...

  2. 通过node.js安装yarn

    如果你已经装好了node,那么 1.添加repo curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /e ...

  3. CentOS 7.* 安装 python3.8.2 python3.10.2 步骤

    CentOS 7系列 安装 python3.8.2 步骤 1.在python官网下载linux源码包 地址:https://www.python.org/ftp/python/3.8.3/Python ...

  4. 乒乓球测距(K210)

    测距 说明 识别的物体是乒乓球(规格应该是统一的吧), 硬件是K210,测距的函数经过拟合,在50cm范围内是准确的 如果使用起来不准确,可以打印代码中的LM, 然后去测数据,自己再拟合一个函数,代替 ...

  5. 「Log」做题记录 2024.1.1-2024.1.28

    \(2024.1.1-2024.1.7\) \(\color{blueviolet}{P1501}\) LCT 板子,链加链乘查询链和,断边加边. \(\color{black}{P4332}\) L ...

  6. Jenkins概述及Linux系统中安装

    概述 官网:https://www.jenkins.io/ GitHub地址:https://github.com/jenkinsci/jenkins Jenkins是一个用Java编写的开源的持续集 ...

  7. cuda grid block size

    编译命令:nvcc hello.cu -o hello 运行:./hello #include <stdio.h> __global__ void helloWorldKernel() { ...

  8. ChatMoney化身恋爱大师来帮助你收获完美爱情!

    本文由 ChatMoney团队出品 介绍说明 在纷繁复杂的情感世界里,寻找真爱的道路常常充满迷茫和困惑.但现在,有了 AI 智能体恋爱大师,为您的爱情之旅点亮明灯. AI 智能体恋爱大师并非传统意义上 ...

  9. 高性能、高扩展、高稳定:解读 EasyMR 大数据组件自定义可扩展能力

    随着互联网技术的不断发展以及大数据时代的兴起,企业对于数据分析和洞察的需求日益增长.大多数企业都积累了大量的数据,需要从这些数据中快速灵活地提取有价值的信息,以便为用户提供更好的服务或者帮助企业做出更 ...

  10. 六、Linux系统 DRM调试工具modetest

    4.20.modetest(调试 DRM) modetest 是 libdrm 提供的一个测试工具,用于调试 DRM(Direct Rendering Manager) 设备,它能够列出可用的显示设备 ...