AirSim无人机仿真入门(一):实现无人机的起飞与降落

AirSim无人机仿真入门(一):实现无人机的起飞与降落
概述: 安装好所需要的软件和环境,通过python代码控制无人机进行起飞和降落。

参考资料:
1、知乎宁子安大佬的AirSim教程(文字教程,方便复制)
2、B站瑜瑾玉大佬的30天RL无人机仿真教程(视频教程,方便理解)
3、AirSim官方手册(资料很全,不过是纯英文的)

AirSim无人机仿真入门(一):实现无人机的起飞与降落

1 安装AirSim

1.1 参考教程

宁子安教程:(解密AirSim-初稿)第一章:初识AirSim

1.2 内容梳理

Epic Games是一家游戏公司,就像“腾讯游戏”或者“网易游戏”一样。Unreal Engine(简称UE)是 Epic Games 开发的一款游戏引擎。AirSim 是基于 Unreal Engine开发的一个模拟器,它主要用来模拟无人机(Drone)和自动驾驶汽车的运行环境。

1.3 步骤总结

以下仅是我个人的步骤总结,建议按照以上宁子安的“初识AirSim”教程一步一步安装。

  1. 安装Epic平台: 记得注册账号
  2. 下载UE: 点击Epic平台左边的 “虚幻引擎” 菜单,“库” 里面有不同的虚幻引擎版本,选择4.27.2版本进行安装,这个版本比较适配AirSim。
  3. 安装VS commuty2022: 记得勾选“C++桌面开发” “Windows 10 SDK 10.0.19041”,并在“单个组件”选项卡下选择最新的“.NET Framework SDK”
  4. 安装git bash工具
  5. 克隆AirSim工程: 进自己要安装AirSim的磁盘,git clone。进入目录build.cmd。编译好之后会在 “AirSim\Unreal” 文件夹中生成 “Plugins” 文件夹。这个 “Plugins” 文件夹非常重要。

检验虚拟引擎和AirSim是否安装成功: 使用AirSim自带的Block环境进行测试。

在这里插入图片描述


至此,AirSim 全部安装完成,下面可以直接使用 AirSim 做仿真了。

2 开始使用 AirSim

2.1 参考教程

宁子安教程:(解密AirSim-初稿)第二章:开始使用 AirSim

2.2 内容梳理

从虚幻商城选择一个场景创建工程,把AirSim作为插件导入这个工程中。

2.3 步骤总结

  1. 创建工程: 从虚幻商城中找到场景,创建工程,得到.uproject文件。
  2. 新建C++类: 双击.uproject文件进入关卡编辑器,新建C++类,等待编译完成(这一步耗时较长,而且要关注VS2022的左下角的编译进度),得到.sln文件,至此 “山脉景观” 场景工程创建完成。
  3. 添加AirSim插件: 复制“AirSim\Unreal\Plugins” 文件夹到“LandscapeMountains” 文件夹中。
  4. 修改文件: 修改 “LandscapeMountain.uproject”
    文件,修改“LandscapeMountains\Config\DefaultGame.ini” 文件。
  5. 创建VS工程: 右键点击 “LandscapeMountains.uproject” 文件,选择 “Generate Visual Studio project files” 选项,会生成 “.sln” 工程文件。
  6. 改成多旋翼模式: 把settings.json文件中的仿真模式改为多旋翼。
{"SettingsVersion":1.2, "SimMode":"Multirotor"}
  1. 进入工程: 双击打开 “LandscapeMountains.sln”,设置编译选项为 “DebugGame Editor” 和“Win64”,同时将 “LandscapeMountains” 设为启动项,点击 “调试” -> “开始调试”,或者直接点击 “本地Windows调试器”,这时会自动打开虚幻引擎的关卡编辑器。此时,虚幻引擎编辑器右下角出现了“新插件可用”的提示,说明虚幻引擎已经能够识别到AirSim 插件了。
  2. 设置游戏模式为AirSim: 在关卡编辑器中,将右侧 “世界场景设置” 中的 “游戏模式重载” 设置为“AirSimGameMode”,点击 “保存当前关卡”。
  3. 运行: 点击绿色三角开始仿真
在这里插入图片描述


至此 AirSim 插件已经加载到虚幻引擎场景工程中了。

3 撰写python控制程序

3.1 参考教程

宁子安教程:airsim详细教程(四) - 控制四旋翼起飞和降落(airsim api)

3.2 内容梳理

安装好python的运行环境,主要使用conda虚拟环境的python解释器,pycharm充当编辑器的作用。使用AirSim官方提供的python API,与无人机建立联系,控制无人机的起飞和降落。

3.3 步骤总结

  1. 安装Anaconda并创建环境: 创建虚拟环境,并在该环境中安装必需的包
 pip install msgpack-rpc-python pip install airsim 
  1. 安装pycharm: 安装了社区版,是免费的,目前功能够用。
  2. 创建工程: pycharm中创建一个新的python工程,解释器选择上面新建的conda环境中的python解释器:conda的安装路径\envs\airsim\python.exe
  3. 创建python文件: 在新建的python工程中新建一个python File,将下面的代码复制进去:
import airsim ​ # 与 AirSim 仿真器建立连接,并且返回句柄 client = airsim.MultirotorClient() client.confirmConnection() ​ # 获得控制权 client.enableApiControl(True) ​ # 解锁无人机 client.armDisarm(True) ​ # Async函数在执行的时候会立即返回.此时有可能任务还没执行完。在后面加上.join(),就可以让当前函数执行完才执行下一行 client.takeoffAsync().join() client.landAsync().join() ​ # 上锁 client.armDisarm(False)# 释放控制权 client.enableApiControl(False)

python与AirSim的通信机制: AirSim API 使用的是 TCP/IP 中的 msgpack-rpc 协议,可以用两台不同的电脑来做仿真,一台跑 AirSim 和 Unreal(仿真),另一台跑 python程序(算法)。当 AirSim 开始仿真的时候,会打开 41451 端口,并监听这个端口的需求。python 程序使用 msgpack serialization 格式向这个端口发送 RPC 包,就可以与AirSim进行通信了。如果41451 端口已经被其他程序使用了,那么可以通过 settings 文件改变AirSim使用的端口号。使用这种网络通信协议的方式,可以将 AirSim 和 python程序隔离,互不干扰。所以不需要修改 AirSim 的任何源代码,就可以满足非常多的仿真需求;而且即使python程序中断了,AirSim 的仿真也可以继续进行。示例:一台跑仿真,一台跑python程序

server_ip ="192.168.0.10"# 示例 IP 地址 port =41451 client = airsim.MultirotorClient(ip=server_ip, port=port)

运行代码: 在右上角点击绿色三角形运行python程序,仿真中的四旋翼会先起飞到一定高度,然后降落。

在这里插入图片描述

4 注意事项

问题: 我发现进行仿真的时候,我的UE界面没有显示三个摄像头的画面,跟原教程截图的不一样。

在这里插入图片描述

解决方法: 修改settings.json 文件打开无人机的三个摄像头窗口

"SubWindows":[{"WindowID":0, "ImageType":0, "CameraName":"front_center", "Visible": true}, {"WindowID":1, "ImageType":3, "CameraName":"front_center", "Visible": true}, {"WindowID":2, "ImageType":5, "CameraName":"front_center", "Visible": true}]

其中,ImageType 的值表示图像类型:

在这里插入图片描述


CameraName的值表示是哪一个相机:

在这里插入图片描述


在这里插入图片描述

至此,AirSim 环境已成功安装,并实现了使用 Python 程序控制无人机的功能。这可以视作 AirSim 入门的“Hello World”示例,后续的算法迁移正在进行中…

Read more

【收藏必看】从“能说“到“能做“:一文看懂文心一言与实在Agent的本质区别

【收藏必看】从“能说“到“能做“:一文看懂文心一言与实在Agent的本质区别

人工智能的浪潮正以前所未有的速度重塑着各行各业。当大众还在惊叹于大型语言模型(LLM)生成文本、代码和图像的能力时,企业决策者们已经开始思考一个更深层次的问题:如何将这种强大的智能,从“对话框”中解放出来,真正嵌入到业务流程中,成为推动生产力变革的核心引擎?这不再是一个关于“能不能聊”的问题,而是关乎“能不能干”的现实挑战。正是在这一背景下,市场上涌现出两大主流路径的代表:以百度文心一言为首的通用大模型,和以实在智能旗下“实在Agent”为代表的AI Agent(智能体)。 对于许多正在进行AI选型的企业而言,困惑是显而易见的:文心一言知识渊博、应答如流,似乎无所不能;而实在Agent则声称能像“数字员工”一样自主执行任务。它们之间究竟有何本质区别?谁更能解决企业面临的实际痛点?本文将通过一场全面、深入的对比测评,从核心定位、功能深度、应用场景、商业价值及未来趋势等多个维度,为您拨开迷雾,找到最适合您企业的AI解决方案。 一、核心定位与技术分野:通用大模型与垂直领域Agent的本质差异 要理解两者的区别,首先必须明确它们的根本定位。这并非简单的功能多寡之别,

7D-AI系列:AI 编程 Spec Coding 完整详细的典型标准化工作流

文章目录 * 前言 * 一、核心前提:什么是「Spec(规格)」?Spec的核心要求 * ✅ Spec的定义 * ✅ Spec的核心要求(重中之重,决定代码质量) * ✅ Spec的常见载体(按优先级排序,工业界高频使用) * 二、Spec Coding 标准完整工作流(6个核心阶段) * ✅ 核心原则 * 阶段1:需求拆解 & 范围界定(前置准备,耗时占比:10%) * 阶段2:编写精准的结构化Spec(核心核心,耗时占比:30%,最关键) * 阶段3:AI 代码生成(核心提效环节,耗时占比:5%) * 阶段4:人工评审 + 静态校验(第一道质检,耗时占比:15%,过滤80%的问题) * 阶段5:自动化测试

人工智能:自然语言处理在社交媒体分析领域的应用与实战

人工智能:自然语言处理在社交媒体分析领域的应用与实战

人工智能:自然语言处理在社交媒体分析领域的应用与实战 学习目标 💡 理解自然语言处理(NLP)在社交媒体分析领域的应用场景和重要性 💡 掌握社交媒体分析的核心技术(如情感分析、话题检测、用户画像构建) 💡 学会使用前沿模型(如BERT、GPT-3)进行社交媒体文本分析 💡 理解社交媒体分析的特殊挑战(如数据量大、噪声多、实时性要求高) 💡 通过实战项目,开发一个社交媒体话题检测应用 重点内容 * 社交媒体分析的主要应用场景 * 核心技术(情感分析、话题检测、用户画像构建) * 前沿模型(BERT、GPT-3)在社交媒体分析中的使用 * 社交媒体分析的特殊挑战 * 实战项目:社交媒体话题检测应用开发 一、社交媒体分析的主要应用场景 1.1 情感分析 1.1.1 情感分析的基本概念 情感分析是对社交媒体文本中情感倾向进行分析和判断的过程。在社交媒体分析领域,情感分析的主要应用场景包括: * 品牌声誉管理:分析用户对品牌的情感倾向(如“正面评价”、“负面评价”

5大AI代码生成工具实测:GitHub Copilot竟输给国产黑马

5大AI代码生成工具实测:GitHub Copilot竟输给国产黑马

AI代码生成工具在软件测试领域的崛起 随着人工智能技术的飞速发展,AI代码生成工具已成为软件测试从业者的重要助手。这些工具不仅能自动生成单元测试、集成测试脚本,还能提升测试覆盖率和效率,减少人为错误。本次实测聚焦于5款主流工具:GitHub Copilot、Tabnine、Kite、DeepSeek-Coder(代表国产工具),以及Amazon CodeWhisperer。我们针对软件测试场景设计实验,从专业性、准确性和实用性角度进行深度评测。实测结果令人意外:长期被视为行业标杆的GitHub Copilot在多项测试指标中落后于国产黑马DeepSeek-Coder。本文将详细解析实测过程、数据对比,以及对测试工作的实际影响。 一、实测工具概览:五大AI助手简介 在深入实测前,先简要介绍参评的五款工具及其在测试领域的定位: 1. GitHub Copilot:由GitHub和OpenAI联合开发,支持多种语言(如Python、Java),以代码补全和函数生成为核心功能。在测试中常用于生成单元测试框架(如JUnit或Pytest脚本)。 2. Tabnine:基于深度学习模型