【AirSim+Python】无人机简单API控制-Python代码

  1.无人机起飞/下降

import airsim
# 与airsim建立连接
client = airsim.MultirotorClient()
client.confirmConnection()

# 确定是否要用API控制
client.enableApiControl(True)

# 解锁无人机转起来
client.armDisarm(True)

# join()等任务结束再进行下个任务
# 起飞
client.takeoffAsync().join()
# 降落
client.landAsync().join()

# 上锁
client.armDisarm(False)
# 释放控制权
client.enableApiControl(False)

2.无人机按固定位置飞行

import airsim

# 与 airsim 建立连接
client = airsim.MultirotorClient()
client.confirmConnection()

# 确定是否要用API控制
client.enableApiControl(True)

# 解锁无人机转起来
client.armDisarm(True)

# join()等任务结束再进行下个任务
# 起飞
client.takeoffAsync().join()

# 正方形飞行
client.moveToZAsync(-3, 1).join()  # 飞到3m高
client.moveToPositionAsync(5, 0, -3, 1) .join()  # 飞到(5,0)点坐标
client.moveToPositionAsync(5, 5, -3, 1) .join()  # 飞到(5,5)点坐标
client.moveToPositionAsync(0, 5, -3, 1) .join()  # 飞到(0,5)点坐标
client.moveToPositionAsync(0, 0, -3, 1) .join()  # 飞到(0,0)点坐标

# 降落
client.landAsync().join()

# 上锁
client.armDisarm(False)
# 释放控制权
client.enableApiControl(False)

3.无人机按固定速度飞行

import airsim
import time

# 与 airsim 建立连接
client = airsim.MultirotorClient()
client.confirmConnection()

# 确定是否要用API控制
client.enableApiControl(True)

# 解锁无人机转起来
client.armDisarm(True)

# join()等任务结束再进行下个任务
# 起飞
client.takeoffAsync().join()

# 正方形飞行
client.moveToZAsync(-3, 5).join()  # 飞到3m高

client.moveByVelocityZAsync(1, 0, -3, 5) .join()  # 以1m/s的速度向前飞5秒
client.moveByVelocityZAsync(0, 1, -3, 5) .join()  # 以1m/s的速度向前飞5秒
client.moveByVelocityZAsync(-1, 0, -3, 5) .join()  # 以1m/s的速度向前飞5秒
client.moveByVelocityZAsync(0, -1, -3, 5) .join()  # 以1m/s的速度向前飞5秒

# 悬停2秒钟
client.hoverAsync().join()
time.sleep(2)

# 降落
client.landAsync().join()

# 上锁
client.armDisarm(False)
# 释放控制权
client.enableApiControl(False)

4.用键盘控制无人机飞行

import sys
import time
import airsim
import pygame

# ---------- Pygame Settings ---------- #
pygame.init()
screen = pygame.display.set_mode((320, 240))  # 设置屏幕大小
pygame .display .set_caption('keyboard ctrl')  # 设置窗口标题
screen .fill((0, 0, 0))  # 屏幕填充RGB颜色

# ---------- AirSim Settings ---------- #
vehicle_name = "Drone"
client = airsim.MultirotorClient()
client.confirmConnection()
client.enableApiControl(True, vehicle_name=vehicle_name)
client.armDisarm(True, vehicle_name=vehicle_name)
client.takeoffAsync(vehicle_name=vehicle_name).join()

# 基础的控制速度(m/s)
vehicle_velocity = 2.0
# 设置加速度
speedup_ratio = 10.0
# 设置临时加速
speedup_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 = speedup_ratio
    else:
        scale_ratio = 1

    # 根据"A"和"D"设置yaw轴速率
    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轴速率
    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轴速率
    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轴速率
    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

    # 设置速度控制以及设置偏航控制
    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)

    # ESC to quit #
    if scan_wrapper[pygame.K_ESCAPE]:
        pygame.quit()
        sys.exit()

AirSim是一个用于仿真和测试无人机系统的开源工具。它提供了Python API,使用户可以使用Python编写代码AirSim进行通信和控制。在使用AirSimPython API之前,需要安装一些依赖项。 首先,根据引用\[1\]中的提示,安装opencv-contrib-python。这可以通过运行以下命令来完成: ``` pip install opencv-contrib-python ``` 请注意,编译opencv-contrib-python可能需要一些时间,并且可能会遇到一些错误。如果遇到`fatal error: boostdesc_bgm.i: No such file or directory`或`No module named skbuild`等错误,请确保您的环境正确设置,并尝试解决这些错误。 接下来,确保AirSim已经安装并运行。根据引用\[2\]中的描述,AirSim会在41451端口上监听需求。您可以使用Python程序通过msgpack序列化格式向该端口发送RPC包来与AirSim进行通信。 最后,根据引用\[3\]中提供的信息,确保您的AirSim版本与虚幻引擎版本、Visual Studio版本和Python版本兼容。当前的AirSim版本是v1.5.0,支持虚幻引擎4.26.2,使用Visual Studio Community 2019和Python 3.7。 通过安装必要的依赖项并确保版本兼容性,您应该能够使用AirSimPython API进行仿真和控制。 #### 引用[.reference_title] - *1* [强化学习系列文章(二十二):AirSim自动驾驶仿真平台及其Python API分析](https://blog.csdn.net/hhy_csdn/article/details/111871665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Win10配置Airsim环境并设置Python通信](https://blog.csdn.net/qq1198768105/article/details/126450972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值