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

AirSim基础使用【Python】

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

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

起飞与降落

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 airsimclient = 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 timeclient = 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 syspygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('mouse control')  # 设置屏幕标题
screen.fill((0, 0, 0))  # 用黑色填充屏幕flag = 1while 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 syspygame.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 syspygame.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 pygamepygame.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.0velocity_x = 0.0velocity_y = 0.0velocity_z = 0.0time.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_ratioelse: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)
http://www.wuyegushi.com/news/151.html

相关文章:

  • 7.25
  • SQLAlchemy
  • GPT-SoVITS初探
  • 6. 容器类型
  • 在Ubuntu系统中搭建Unreal4和AirSim环境
  • 深度解析苹果端侧与云端基础模型技术架构
  • 关于properties文件遇到的坑
  • 当日总结
  • 上传到https域名服务器遇到的问题
  • ABC416
  • 泛型类型在编译后会因类型擦除如何找到原始类型
  • 《大道至简》
  • 入参有泛型,返回值为什么必须有T
  • MySQL--索引
  • day3
  • Pipal密码分析工具的模块化检查器与分割器系统详解
  • 练习224A. Parallelepiped
  • 动态规划从精通到入门
  • 树形DP-Part 1
  • TRVCOST - Travelling cost 题解
  • 第一天
  • 111
  • 10
  • 7.26 4
  • DAY22
  • 30天总结-第二十六天
  • 周末
  • foobar2000 v2.24.6 汉化版
  • 今天做什么