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

经过前期内测调试,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.rhkb.cn/news/2237.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言数据结构与算法(排序)详细版

大家好,欢迎来到“干货”小仓库!! 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!无人扶我青云志,我自踏雪至山巅!!&am…

微信小程序获取openid

2025年1月15日: 注意:其中appid,secret,还有服务器网址都按自己实际的填写 1、先在云服务器上安装nodejs,然后写个get接口: const express require(express); const app express();app.get(/getOpenid,(req,res)&…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析: 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数,使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

FPGA工程师成长四阶段

朋友,你有入行三年、五年、十年的职业规划吗?你知道你所做的岗位未来该如何成长吗? FPGA行业的发展近几年是蓬勃发展,有越来越多的人才想要或已经踏进了FPGA行业的大门。很多同学在入行FPGA之前,都会抱着满腹对职业发…

vscode的安装与使用

下载 地址:https://code.visualstudio.com/ 安装 修改安装路径(不要有中文) 点击下一步,创建桌面快捷方式,等待安装 安装中文插件 可以根据自己的需要安装python和Jupyter插件

懒饭 3.0.2 | 谷歌版纯净无广告教做菜软件

这款教做菜的软件是谷歌版,提供了一个纯净无广告的学习环境。即使没有会员,普通版也足够满足日常使用需求。软件内含分类和排行榜功能,支持搜索,教程形式多样,包括文字和视频,是学习烹饪技巧、追女朋友的好…

【数模学习笔记】插值算法和拟合算法

声明:以下笔记中的图片以及内容 均整理自“数学建模学习交流”清风老师的课程资料,仅用作学习交流使用 文章目录 插值算法定义三个类型插值举例插值多项式分段插值三角插值 一般插值多项式原理拉格朗日插值法龙格现象分段线性插值 牛顿插值法 Hermite埃尔…

计算机二级-Java系列(Java的特点)

java语言的特点 简单,面向对象,分布式,结构中立,可移植性,解释执行,健壮,安全,高性能,多线程和动态。 Java具有面向对象的三个基本特性为:封装,…

【Vue3 入门到实战】1. 创建Vue3工程

目录 ​编辑 1. 学习目标 2. 环境准备与初始化 3. 项目文件结构 4. 写一个简单的效果 5. 总结 1. 学习目标 (1) 掌握如何创建vue3项目。 (2) 了解项目中的文件的作用。 (3) 编辑App.vue文件,并写一个简单的效果。 2. 环境准备与初始化 (1) 安装 Node.js 和 …

vim使用指南

🏝️专栏:计算机操作系统 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 一、Vim 的基本概念 1.Vim 的主要模式: 1.1普通模式 (Normal Mode) 1.2插入…

TCP-IP详解卷 TCP的超时与重传

TCP-IP详解卷1-21:TCP的超时与重传(Timeout and Retransmission) 一:介绍 1: 与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。 即:TCP每发送一个报文段,就对此报文段设置…

卷积神经02-CUDA+Pytorch环境安装

卷积神经02-CUDAPytorch环境安装 在使用Python进行pytorch的使用过程中遇到各种各样的版本冲突问题,在此进行记录 0-核心知识脉络 1)根据自己电脑的CUDA版本安装对应版本的Pytorch,充分的使用GPU性能2)电脑要先安装【CUDA ToolKi…

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…

为深度学习创建PyTorch张量 - 最佳选项

为深度学习创建PyTorch张量 - 最佳选项 正如我们所看到的,PyTorch张量是torch.Tensor​ PyTorch类的实例。张量的抽象概念与PyTorch张量之间的区别在于,PyTorch张量为我们提供了一个可以在代码中操作的具体实现。 在上一篇文章中,我们看到了…

RabbitMQ(四)

SpringBoot整合RabbitMQ SpringBoot整合1、生产者工程①创建module②配置POM③YAML④主启动类⑤测试程序 2、消费者工程①创建module②配置POM③YAML文件内配置: ④主启动类⑤监听器 3、RabbitListener注解属性对比①bindings属性②queues属性 SpringBoot整合 1、生…

项目练习:若依管理系统字典功能-Vue前端部分

文章目录 一、情景说明二、若依Vue相关代码及配置1、utils代码2、components组件3、api接口代码4、Vuex配置5、main.js配置 三、使用方法1、html部分2、js部分 一、情景说明 我们在做web系统的时候,肯定会遇到一些常量选择场景。 比如,性别:…

【 PID 算法 】PID 算法基础

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

微信小程序原生与 H5 交互方式

在微信小程序中,原生与 H5 页面(即 WebView 页面)之间的交互通常有以下几种方式: 1. 使用 postMessage 进行通信 微信小程序的 WebView 页面和原生小程序页面可以通过 postMessage 来进行数据传递。 WebView 页面向原生小程序发…

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

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

音频语言模型与多模态体系结构

音频语言模型与多模态体系结构 多模态模型正在创造语言、视觉和语音等以前独立的研究领域的协同效应。这些模型使用通用架构,将每种模式视为不同的“token”,使它们能够以一种与人类认知非常相似的方式联合建模和理解世界。 ​ ​可以将多模态分为两个主要领域:输入空间(…