迅翼SwiftWing | ROS 固定翼开源仿真平台正式发布!

news2025/1/16 12:34:38

经过前期内测调试,ROS固定翼开源仿真平台今日正式上线!现平台除适配PX4+ROS环境外,也已实现AP+ROS环境下的单机飞行控制仿真适配。欢迎大家通过文末链接查看项目地址以及具体使用手册。

1 平台简介

ROS固定翼仿真平台旨在实现固定翼无人机决策、规划和控制仿真,区别于传统基于Matlab/Simulink的仿真方案:

  • 高度封装:平台将基础无人机控制算法封装为可复用的类,从而有效简化了开发流程。同时,对各类基础数据的获取进行了封装,确保了数据访问的便捷性和一致性,极大提升了开发效率和数据处理的稳定性。

  • 分层解耦:基于模块化的分层架构设计,平台实现了规划层与控制层的解耦,省去了底层控制器设计和动力学建模的复杂过程。用户只需专注于上层控制算法的编写,避免了繁琐的底层细节,降低了开发门槛,提升了开发效率,为用户提供了更为流畅和高效的仿真体验。

  • 验证迅速:用户无需接触底层 PX4 控制逻辑,只需通过封装好的类接口读取状态数据并发送控制指令。同时,底层控制机型可灵活切换,使得验证过程更为迅速和高效,极大提升了开发和测试的便捷性。

2 技术框架

我们对整体架构进行了二次修改,完善了整体仿真流程,也简化了仿真二次开发流程,对于新手上手更加友好。
整体架构基于模块化设计,将仿真功能拆分为3个ROS功能包:uav_controller、single_demo、multi_demo,以提高系统的可扩展性以及可维护性。

  • uav_controller 功能包封装了固定翼和垂直起降无人机的底层控制器,支持姿态、位置和速度的精准控制。功能包提供了基于状态机设计的单机控制节点文件,具备高度灵活性和可扩展性。通过启动该功能包中的单机控制节点,用户可以实现一键起飞无人机、接收外部控制指令以及切换飞行模式,为复杂飞行任务的实现提供了高效可靠的解决方案。
  • single_demo 功能包旨在为用户提供单机数据的实例化获取,是用户进行二次开发的主要入口和核心目录。该功能包包含了 spawn-uav.py 文件,封装了常用的 MAVROS 话题数据订阅逻辑。用户只需在主程序中导入 uav 类,即可通过调用其属性轻松获取无人机的状态数据,如位置、速度、姿态等。这种高度封装的设计,不仅降低了开发复杂度,还显著提升了数据获取的便捷性和开发效率,为用户的二次开发提供了强大的支持。
  • multi_demo 功能包提供了一个 leader-follower 集群控制框架的实例,支持灵活配置编队队形、领航者轨迹和跟随者数量。用户可以根据需求自由指定这些参数,从而实现高度可定制的集群控制方案。该实例具有良好的扩展性,便于用户在此基础上进行应用开发和功能拓展。
    整体架构如下:

整体流程为:

  • 从uav_controller中选择一款机型(固定翼、垂起),启动单机底层控制节点;
  • 在single_demo中编写自己的上层控制代码,启动上层控制节点;
  • 仅需一条roslaunch指令,即可开启仿真。

这样架构下,用户只需要专心编写自己的上层控制代码,底层控制节点可切换、可扩展。

3. demo演示

我们已经实现一些可供大家快速上手的demo演示:

  • 基于导航向量场方法的轨迹跟踪方法
    • demo演示:圆形轨迹

    • demo演示:螺旋上升

    • demo演示:斜圆轨迹

  • 基于无奇异点导航向量场方法的轨迹跟踪方法
    • demo演示:李萨如曲线

    • demo演示:多项式轨迹(多项式轨迹,轨迹可自定义)

  • 基于LQR控制器的多机leader-follower编队飞行控制
    • demo演示(折线轨迹,轨迹可自定义)

4. 后续进展

后续计划:

  • 添加多机混合机型编队仿真;
  • 适配AP+ROS2以及PX4+ROS2;
  • 添加视觉、激光雷达等其他传感器支持。

5. 附录

项目地址:
https://gitee.com/swiftwing007/swiftwing-simulation
https://github.com/SwiftWing001/swiftwing-simulation
使用文档:
https://swiftwing001.github.io/swiftwing-simulation-tutorial/

END

后续会陆续带来规划、控制相关的文章、仿真分享。
迅翼SwiftWing致力于固定翼技术共享,汇聚固定翼领域技术极客,推动固定翼技术持续创新!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2277534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IOS界面传值-OC

1、页面跳转 由 ViewController 页面跳转至 NextViewController 页面 &#xff08;1&#xff09;ViewController ViewController.h #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend ViewController.m #import "ViewController.h" …

用 Python 自动化处理日常任务

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

Linux:地址空间(续)与进程控制

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《Linux&#xff1a;地址空间与进程控制》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff0…

链家房价数据爬虫和机器学习数据可视化预测

完整源码项目包获取→点击文章末尾名片&#xff01;

亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?

三防笔记本是什么意思&#xff1f;和普通笔记本的优势在哪里&#xff1f; 在现代社会中&#xff0c;笔记本电脑已经成为人们工作和生活中不可或缺的一部分。然而&#xff0c;在一些特殊行业或环境中&#xff0c;普通笔记本电脑由于其脆弱性和对环境条件的敏感性&#xff0c;往…

通过proto文件构建 完整的 gRPC 服务端和客户端案例

基础教程-简单案例&#xff08;快入入门java-grpc框架&#xff09; 参考官方入门案例教程&#xff1a;里面我看proto编译&#xff0c;其实直接用maven就能直接将.proto文件编译成java代码。快速入门 | Java | gRPC 框架https://grpc.org.cn/docs/languages/java/quickstart/ …

UML系列之Rational Rose笔记九:组件图

一、新建组件图 二、组件图成品展示 三、工作台介绍 最主要的还是这个component组件&#xff1b; 然后还有这几个&#xff0c;正常是用不到的&#xff1b;基本的使用第四部分介绍一下&#xff1a; 四、基本使用示例 这些&#xff0c;主要是运用package还有package specifica…

K8S 节点选择器

今天我们来实验 pod 调度的 nodeName 与 nodeSelector。官网描述如下&#xff1a; 假设有如下三个节点的 K8S 集群&#xff1a; k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8…

c++领域展开第十二幕——类和对象(STL简介——简单了解STL)超详细!!!!

文章目录 前言STL简介什么是STLSTL的版本STL的六大组件STL的重要性如何学习STL 总结 前言 上篇博客我们了解了初阶的模版函数&#xff0c;以及有关的一些使用方法。 今天我们来了解了解STL库的有关知识 跟我一起上车吧 STL简介 什么是STL STL&#xff1a;是C标准库的重要组成…

Onedrive精神分裂怎么办(有变更却不同步)

Onedrive有时候会分裂&#xff0c;你在本地删除文件&#xff0c;并没有同步到云端&#xff0c;但是本地却显示同步成功。 比如删掉了一个目录&#xff0c;在本地看已经删掉&#xff0c;onedrive显示已同步&#xff0c;但是别的电脑并不会同步到这个删除操作&#xff0c;在网页版…

科研绘图系列:R语言绘制微生物物种系统发育树(phylogenetic tree)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍构成要素有根树与无根树构建方法应用领域说明的问题教程加载R包数据下载导入数据数据预处理系统发育树可视化准备画图数据1. 构建基础系统发育树 `p1`2. 添加条形图 `p2`3. 添加热图…

1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)

目录 01. Java中的集合体系 02. 单列集合体系​ 1. Collection系列集合的遍历方式 &#xff08;1&#xff09;迭代器遍历&#xff08;2&#xff09;增强for遍历​编辑&#xff08;3&#xff09;Lambda表达式遍历 03.List集合详解 04.Set集合详解 05.总结 Collection系列…

微信小程序:跨页面数据修改全攻略

一、引言 在微信小程序开发中&#xff0c;常常会遇到需要在不同页面之间修改数据的情况。比如在商品详情页添加商品到购物车后&#xff0c;购物车页面需要实时更新商品数量和总价&#xff1b;在用户设置页面修改了个人信息&#xff0c;首页的用户信息展示区域也需要同步更新。…

寒假第一次牛客周赛 Round 76回顾

AC数&#xff1a;2&#xff08;A、C&#xff09; B 思路&#xff1a; 等价于求&#xff1a; 数量最多的字符 #include<stdio.h> int main() {int n,num;int a[26]{0};//用于存储字母 a 到 z 的出现次数。scanf("%d",&n);char s[n];scanf("%s",s)…

【 PID 算法 】PID 算法基础

一、简介 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&#xff09;、Differential&#xff08;微分&#xff09;的缩写。也就是说&#xff0c;PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。 顾名思义&#xff0c;…

Ubuntu打开文件夹不显示文件

1.情况介绍 使用ubuntu打开文件夹不显示文件夹里面的内容&#xff0c;而是直接打开了资源查看器。 2.解决办法 命令行安装nautilus sudo apt-get install nautilus

java.text.SimpleDateFormat (日期)

前言&#xff1a; 小编最近让流感折磨的快嘎啦&#xff0c; 呜呜呜&#xff0c;拖更了俩天&#xff0c; 从明天开始我们继续日更&#xff01;&#xff01;&#xff01;&#xff01; 我们一直都是以这样的形式&#xff0c;让新手小白轻松理解复杂晦涩的概念&#xff0c; 把Ja…

游戏市场成果及趋势

2024 年的游戏行业发展情况如何&#xff1f;这是一个既关系到开发商&#xff0c;又关系到玩家的问题&#xff0c;而市场分析师可以为我们揭晓答案。下面&#xff0c;就让我们来看看分析师给出的结论以及他们对未来趋势的预测。 玩家 自 2021 年起&#xff0c;全球平均游戏时间…

Java版-oracle数据库连接测试工具-Maven配置JDBC

一、目标: 1)数据迁移方案,原RAC,新RAC 2)关闭原RAC环境,修改新RAC环境的IP=原RAC环境的IP,优点:所有的应用端不用修改数据库连接字符串。 3)测试工具目标: 3.1 Java程序,运行后cmd窗口, 3.2 链接原RAC数据库IP,每2秒查询并显示数据; 3.3 关闭/断掉原RAC服务器,…

微信小程序实现个人中心页面

文章目录 1. 官方文档教程2. 编写静态页面3. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/ 2. 编写静态页面 mine.wxml布局文件 <!--index.wxml--> <navigation-bar title"个人中心" ba…