迅翼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.mzph.cn/pingmian/67262.shtml

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

相关文章

【计算机网络】深入浅出计算机网络

第一章 计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成一种重要的信息服务基础设施 CNNIC 中国互联网网络信息中心 因特网概述 网络、互联网和因特网 网络(Network)由若干结点(Node)和连接这些结点的链路…

【linux】vi编辑文件及readonly文件修改读写权限方法

板端vi修改文件: 1、vi 文件路径 vi mnt/eol/config/oem_eol.xml2、按 i进入修改状态,此时可以修改配置文件 3、按 esc退出修改状态,并按:wq!保存 问题:readonly文件无法直接vi修改 方案: 1、mount -o remount /rw…

Vue.js组件开发-使用地图绘制轨迹

在Vue.js中开发一个组件来展示地图并绘制轨迹,可以使用诸如Leaflet.js、Mapbox GL JS或百度地图等地图库。这些库提供了丰富的API来创建和定制地图,以及绘制路径、标记和其他地图元素。 示例: 1. 安装Leaflet.js 首先,需要安装…

计算机网络八股文学习笔记

总结来自于javaguide,本文章仅供个人学习复习 javaguide计算机网络八股 文章目录 计算机网络基础网络分层模型OSI七层模型TCP/IP四层模型 HTTP从输入URL到页面展示到底发生了什么?(非常重要)HTTP状态码HTTP Header中常见的字段有哪些?HTTP和HTTPS有什么区别?(重要)HTTP/1.0和…

测试模型安全的手段

1. 指令劫持(Instruction Hijacking) 定义: 通过嵌入特殊指令或诱导性的提示,使模型执行与设计目标不符的任务。例如,将模型从安全模式切换到非安全模式,或使其输出敏感内容。 实现方式: 在…

QT Quick QML 实例之椭圆投影,旋转

文章目录 一、前言二、演示三、部分代码与分析 QML 其它文章请点击这里: QT QUICK QML 学习笔记 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 一、前言 此 Demo 主要用于无人机吊舱视角的模拟&#xf…

Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)

MySQL是一种广泛使用的关系型数据库管理系统(RDBMS),其体系结构设计旨在提供高效的数据存储、查询处理和事务管理。MySQL的体系结构可以分为多个层次,每个层次负责不同的功能模块。 MySQL的体系结构主要由以下几个部分组成&#…

【人工智能】用Python进行对象检测:从OpenCV到YOLO的全面指南

对象检测是计算机视觉领域的核心任务之一,广泛应用于视频监控、自动驾驶、智能安防等多个场景。随着深度学习技术的发展,基于传统方法的对象检测逐渐被基于神经网络的先进模型所取代。本文将系统地介绍如何使用Python进行对象检测,重点探讨了…

农业4.0背后的智慧引擎:机器学习助力精准农事决策

农业4.0背后的智慧引擎:机器学习助力精准农事决策 在21世纪的科技浪潮中,农业作为人类生存和发展的基石,正经历着前所未有的变革。从传统的农耕文明到现代化的机械农业,再到如今智能化的农业4.0时代,每一步都凝聚着科…

Spring Boot 项目启动后自动加载系统配置的多种实现方式

Spring Boot 项目启动后自动加载系统配置的多种实现方式 在 Spring Boot 项目中,可以通过以下几种方式实现 在项目启动完成后自动加载系统配置缓存操作 的需求: 1. 使用 CommandLineRunner CommandLineRunner 是一个接口,可以用来在 Spring…

【SpringSecurity】SpringSecurity安全框架登录校验流程与登录配置示例

文章目录 SpringSecurity安全框架登录校验流程登录配置示例 SpringSecurity安全框架 Security 是一个能够为基于 Spring 的应用程序提供认证、授权以及保护免受攻击的安全框架。它是 Spring 生态系统的一部分,与 Spring 框架无缝集成。这些框架帮助开发者实现认证&…

dockerfile1.0

docker的数据卷 docker file ------------- 自动自定义镜像 docker的数据卷: 容器与宿主机之间,或者容器和容器之间的数据共享(目录) 创建容器的时候,通过指定目录,实现容器于宿主机之间,或…

晨辉面试抽签和评分管理系统之九:随机编排考生的分组(以教师资格考试面试为例)

晨辉面试抽签和评分管理系统(下载地址:www.chenhuisoft.cn)是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

PythonQT5打包exe线程使用

打包: pyinstaller --noconsole --onefile test.py–noconsole 表示不需要打开命令行 修改:test.spec 一般项目里面需要用的资源文件,比如lib、png、exe等。 需要单独修改spec文件 pathex[.],binaries[(D:/test.png, .),(D:/simsun.ttc, .…

List 接口的实现类

在 Java 中,List 是一个非常常用的接口,提供了有序、可重复的元素集合。List 接口有多个实现类,每个实现类都有其特定的特性和适用场景。以下是 Java 中主要实现了 List 接口的类及其详细介绍。 1. 常见的 List 实现类 1.1 ArrayList 简介&…

信号与系统初识---信号的分类

文章目录 0.引言1.介绍2.信号的分类3.关于周期大小的求解4.实信号和复信号5.奇信号和偶信号6.能量信号和功率信号 0.引言 学习这个自动控制原理一段时间了,但是只写了一篇博客,其实主要是因为最近在打这个华数杯,其次是因为在补这个数学知识…

Qt之http客户端类

一、HTTP客户端类功能: 1、POST请求发送: 支持发送JSON格式的数据自动处理请求头设置提供上传进度监控、 2、GET请求发送: 简单的GET请求实现支持下载进度监控 3、状态监控: 通过信号槽机制监控上传/下载进度错误处理和状态回调 /…

解决winodws server iis 下的php mkdir(): Permission denied 问题

这个问题报错原因是权限不够,解决办法如下: 1.在php安装目录下,打开配置文件php.ini 把upload_tmp_dir 前面的分号去掉。 2.给上传的文件夹添加权限 在网站的相应目录,比如目录为tmp,添加IUSR用户,并给所…

如何在本地部署大模型并实现接口访问( Llama3、Qwen、DeepSeek等)

如何在本地部署大模型并实现接口访问( Llama3、Qwen、DeepSeek等) 如何在本地部署大模型并实现接口访问( Llama3、Qwen、DeepSeek等)模型地址模型下载模型部署指定显卡运行app.py 运行环境requirements 调用接口代码调用 结语 如何…

数据库增量备份和全量备份

数据库增量备份和全量备份 1.修改配置 首先打开配置文件my.ini 添加以下配置 #log-bin"JSSM-20230617FY-bin" log-bin"mysql-bin"# Server Id. server-id1#指令指定写入二进制日志的事件格式 binlog_formatMIXED添加完之后对MySQL服务进行重启 重启之后…