草庐IT

6款常见的无人机仿真开发平台(附超详细特点功能对比)

飞思实验室 2024-05-03 原文

随着无人机与无人集群的快速发展,开发者对于无人机系统仿真测试环境的需求也日渐显现。本文整理了几款常见的无人机仿真平台,旨在为开发者提供一款更为易用、通用且真实可靠的平台。

无人机与无人集群的研制应用快速发展,无人机系统研制过程中试验成本高,空域申请难,测试稳定性低及危险性高等缺点严重限制了无人机集群算法验证的飞行测试工作。无人机系统仿真测试环境应运而生,研究者仅需将无人机研究工作中的实验和算法迭代部分放在仿真环境中,充分验证后再进行实际的飞行测试,可以很大程度上降低研制的成本和风险,有效缩短研制进程。

本文将对比几款常见的无人机仿真平台,旨在为开发者提供一款更为易用、通用且真实可靠的平台,使其专注于算法研究工作,检验理论成果,提升实验效率,大大推动开发人员进入领域研究进程,加速教学、科研的进度。

常见的无人机仿真平台

01

X-Plane无人机仿真平台

X-Plane是一款由Laminar Research开发的仿真平台,针对包括Windows、Linux和MacOS在内的多种操作系统具有特定的构建方式。

该平台有适用于 Android,iOS 和WebOS的移动版本。X-Plane包含许多商用、军用等飞机,场景使用地球大部分地区的真实贴图。具有一种插件设计类型的架构,允许用户创建其他模块,从而扩展了模拟器的功能。X-Plane采用在Plane Maker中创建的几何形状来显示无人机的飞行方式。使用一种工程机制将无人机分为小部分,并找出对每个部分起作用的力。该模拟器可以可视化作用在无人机上的不同作用力和无人机飞行路径等,并且还可以确定飞行故障,其仿真平台采用的是UDP通讯协议。

02

FlightGear开源多平台飞行模拟器

 FlightGear是一个开源的多平台飞行模拟器,由FlightGear项目从1997年开始实施,并且一直在持续开发中。

该模拟器具有针对各种操作系统(例如 Windows,Mac,OS,Solaris)以及各种Linux发行版(例如Ubuntu和Debian)的特定构建。FlightGear代码是根据GNU通用公共许可证发行的。必须通过外部3D建模应用程序创建UAV模型,并使用XML文件说明各种UAV功能。由于为多飞机环境开发了多人协议,因此FlightGear可以在本地网络上使用。此外,在多种情况下针对多种模式初始化的不同的多种无人机可以在周围环境中进行协调和通信,此功能可用于空中交通管制或编队飞行模拟。

03

Gazebo 机器人仿真平台

Gazebo 机器人仿真平台是南加州大学 Andrew Howard 博士和他的学生Nate Koenig 开发的一款满足各种条件下在室外环境中模拟机器人的平台。

Willow Garage 的工程师 John Hsu 将ROS和PR2集成整合进了 Gazebo 中,使 Gazebo 成为 ROS环境中主要工具之一。直到2012年,Gazebo从 williow Garage 中脱离并有开源机器人基金会(Open Source Robotics Foundation (OSRF))进行管理与开发。目前 Gazebo 是智能机器人领域应用较为广泛的仿真平台之一,具有多样的物理引擎、传感器模型和 3D场景等模块化设计,同时也具有模拟一般机器人连接部件和关节结构,如复杂的机械手臂或双足机器人。虽然Gazebo 功能丰富,但场景搭建与渲染部分已落后于当代发展,很难创建无人机仿真所需的与现实视觉环境相似的大型场景。

04

JMavSim四旋翼无人机仿真平台

JMavSim是一个用于与PX4固件驱动的四旋翼无人机仿真平台。具有四旋翼无人机通信 MAVlink 接口,并与PX4 固件和 ROS 平台集成在一起,其图像界面由 Java3d设计而成,使用UDP通信协议进行通信。更侧重于飞控相关算法的测试与验证。但是没有办法在仿真环境中添加传感器和检测障碍物,也不能模拟无人机物理特性。

05

AirSim无人机驾驶自动控制仿真平台

AirSim是由微软(Microsoft)于2017年开发的一个基于虚幻引擎Unreal Engine 4的无人机驾驶自动控制仿真平台。

具有高还原度的物理引擎和逼真的视觉场景两大特点,其物理引擎可支持主流无人机协议(如 MavLink)的高频实时硬件在环(HITL)的仿真。同时支持无人机类型、飞控和通信协议的拓展性更新与修改,适用于 pixhawk 飞控及PX4 固件,同时具备普通相机,立体相机,激光雷达,全球定位系统,IMU,磁力计等传感器。不仅可以使用C++和python代码来控制无人机,还可以使用PX4的飞行器遥控器。

06

飞思无人系统仿真开发平台

飞思无人系统仿真开发平台是在北航可靠飞行控制组提出的RflySim仿真框架的基础上开发的一体化无人机系统仿真开发平台,专为无人平台控制系统开发、大规模集群协同、人工智能视觉等前沿研究领域研发的一套高可信度的无人控制系统开发、测试与评估平台。

相对于其他平台,RflySim主要有以下特点:

①无人机物理特性仿真还原度高。

其开发者均为无人机研究团队,具有丰富的无人机领域研究经验;

②易用性。

一键安装、一键代码生成、一键固件部署、一键软硬件在环仿真和快速实飞,将MBD理念应用于整个开发流程,开发者只需具备基础的Simulink(或Python)知识,即可快速将自己的算法经过层层验证并应用于真机上,使其更专注于算法的开发与测试;

③完全分布式构架。

所有应用软件都可以在同一台或多台电脑上多开,并且各个应用之间可以通过UDP网络相互收发消息,这种分布式的构架非常适合于大规模带视觉的无人机集群仿真测试;

④支持多种机型仿真。

支持小车、固定翼、垂直起降飞行器(VTOL)等多种机型。用户可以在Simulink中根据规范的接口搭建机架模型,然后自动生成DLL文件用于HIL仿真。实验平台能被拓展到任意无人系统中;

⑤支持无人机集群仿真。

在同一局域网下,开发者可以使用CopterSim连接多个Pixhawk进行硬件或软件在环仿真。同时,还可以使用Simulink或者C++程序控制飞行器,控制指令会由Mavlink协议经过串口(数传)或者网络(WIFI)发送给Pixhawk;

⑥提供高逼真的3D视景。

提供源码和教程帮助开发者在虚幻4 (Unreal Engine 4 ,UE4)中搭建高度逼真的3D场景,用于室内外环境仿真或者基于视觉算法的开发;场景支持物理碰撞引擎,全球地形和地图,OSGB+Cesium倾斜摄影视景地图导入,自定义GPS坐标,任意多窗口切换观察,RGB、深度、灰度、IMU、激光雷达等传感器数据输出,支持共享内存或者UDP图片直发指定IP地址,可用于机载计算机硬件在环SLAM仿真。

⑦支持基于视觉的控制。

基于UE4的三维视景平台还支持视角切换功能,可以方便地获取到多个视角的图像数据。还支持通过共享内存的方式在Simulink、Python、C/C++等代码平台中实时获取到图像数据并进行处理,处理得到的视觉数据可以通过UDP再返回给CopterSim或者Simulink控制,形成带有视觉的硬件在环仿真闭环。

⑧支持多种故障注入。

可实现的故障类型包括模型故障、通信故障和环境故障等。

效果展示:

软件在环仿真

自动代码生成

硬件在环仿真

带安全防护的真机实验

一键连接PX4的集群软件在环仿真

一键安装与部属

基于UE4的室内硬件在环仿真

无人车的室外硬件在环仿真场景

集群控制和硬件在环仿真

基于视觉的一键穿环控制例程

电机失效故障硬件在环仿真

Simulink控制集群飞机室内飞行实验

各平台特性对比

有关6款常见的无人机仿真开发平台(附超详细特点功能对比)的更多相关文章

  1. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  2. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  3. ruby - 将对象设置为 nil 是否很常见? - 2

    我正在构建一个应用程序,想知道是否将未使用的对象设置为nil是生产级编码中的常见做法。我知道这只是垃圾收集器的提示,并不总是处理对象。 最佳答案 根据这个thread如果您使用完一个成员对象,将其设置为nil将引发被引用对象被垃圾回收。如果它是局部变量,方法exit将做同样的事情。也就是说,如果您要求将成员显式设置为nil,我会质疑您的设计。 关于ruby-将对象设置为nil是否很常见?,我们在StackOverflow上找到一个类似的问题: https://

  4. ruby - 变量赋值后的 if 语句 - 有多常见? - 2

    我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby

  5. ruby-on-rails - rails 功能测试 - 2

    在Rails自动生成的功能测试(test/functional/products_controller_test.rb)中,我看到以下代码:classProductsControllerTest我的问题是:方法调用products()在哪里/如何定义?products(:one)到底是什么意思?看代码,大概意思是“创建一个产品”,但是它是如何工作的呢?注意我是Ruby/Rails的新手,如果这些是微不足道的问题,我深表歉意。 最佳答案 如果您查看test/fixtures文件夹,您会看到一个products.yml文件。这是在您创建

  6. ruby-on-rails - 功能测试 Authlogic? - 2

    在我的一些Controller中,我有一个before_filter检查用户是否登录?用于CRUD操作。application.rbdeflogged_in?unlesscurrent_userredirect_toroot_pathendendprivatedefcurrent_user_sessionreturn@current_user_sessionifdefined?(@current_user_session)@current_user_session=UserSession.findenddefcurrent_userreturn@current_userifdefine

  7. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  8. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  9. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  10. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

随机推荐