【AirSim】脚本控制无人机

目标一、运行示例程序1

Blocks.sln

操作:AirSim安装

参考博客【Windows 10】AirSim基础配置 (v1.3.1 + Visual Studio 2019 + UE 4.24)
安装过程中,遇到2个问题:

  1. “Eigen/Dense”: No such file or directory
    解决:下载eigen,复制其中的Eigen文件夹到相应目录;见github中相应的Issuse。
  2. Install a version of .NET Framework SDK at 4.6.0 or higher.
    解决:启动VS的Installer,选择相应的组件安装。

备注:

  • F5运行示例程序后,UE4自动打开。
  • 遇到新问题时,多查阅AirSim的wiki和Issuse。


目标二、运行实例程序2

HelloDrone.py

操作:安装依赖包,配置python环境

通过管理python程序包完成依赖包的安装。安装过程中,遇到的1个问题:

  1. AirSim运行HelloDrone.py依赖哪些包;
    msgpack-rpc-python, matplotlib, opencv-python
    在这里插入图片描述
  2. 命令行报错pip不是内部或外部命令,也不是可运行的程序或批处理文件
    解决:在环境变量PATH中,添加python和pip的路径,如D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\python.exeD:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\Scripts

备注:

  • 先启动UE4并打开项目Blocks,然后在VS2019运行HelloDrone.py,程序会与UE4进行ConfirmConnection,并控制四旋翼执行相应的运动。
  • 决定使用python编写后续算法。

有待明确的点:

  1. 尝试在添加python环境中,创建了conda环境,但是未能成功搜索到msgpack-rpc-python
    感觉原因出在,该新建的conda环境无法使用pip install安装第三方库?
  2. 新建的conda环境如何删除?目前在C:\Users\HP\.conda\envs\airsimenv37路径。
  3. Microsoft VS2019 官方文档>>管理python环境


目标三、梳理HelloDrone.py中的程序控制

约90行,梳理其中关键函数的功能、参数及使用,建立一个初步的印象。

操作:

行号代码功能、参数
11client = airsim.MultirotorClient()实例化一个类对象
12client.confirmConnection()确认连接
13client.enableApiControl(True)使能API控制
14client.armDisarm(True)arm表示什么?
16state = client.getMultirotorState()获取四旋翼状态
20imu_data = client.getImuData()获取IMU的数据
24barometer_data = client.getBarometerData()获取气压表数据
28magnetometer_data = client.getMagnetometerData()获取磁力计数据
32gps_data = client.getGpsData()获取GPS数据
36airsim.wait_key('Press any key to takeoff')airsim模块的函数
37client.takeoffAsync().join()有待细看
43client.moveToPositionAsync(-10, 10, -10, 5).join()有待细看
45client.hoverAsync().join()
52responses = client.simGetImages([...])获取图像
59tmp_dir = os.path.join(tempfile.gettempdir(), "airsim_drone")图片保存的位置
69filename = os.path.join(tmp_dir, str(idx))生成路径
71if response.pixels_as_float:判断图片类型
73airsim.write_pfm(os.path.normpath
(filename + '.pfm'), airsim.get_pfm_array(response))
存储pfm图片
74elif response.compress: #png format判断图片类型
76airsim.write_file(os.path.normpath(filename + '.png'),
response.image_data_uint8)
压缩png格式
77else: #uncompressed array无压缩png格式
处理见代码
85client.armDisarm(False)disarm何意?
86client.reset()重置为初始状态
89client.enableApiControl(False)关闭使能

备注:

  • 明确armDisarm()的含义;
  • 明确***Async().join()的含义;
  • airsim.py中的全部代码:
from .client import *
from .utils import *
from .types import *
  • client.py中定义的三个类:
    在这里插入图片描述
  • 程序运行结果
    程序运行过程中,在窗口输出的结果,以截图的形式在附录部分展示。


目标四、可视化

可视化的详细描述:

  1. 绘制出四旋翼的飞行运动轨迹,保存为图片;


目标五、四旋翼程序控制

程序控制的详细描述:

  1. 通过阅读AirSim提供的官网文档,明确用户可使用的四旋翼程序控制API,并梳理为表格;


附录

  • HelloDrone.py程序运行的部分结果展示:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值