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

news/2025/1/18 1:37:39/

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

相关文章

算法面试准备 - 手撕系列第一期 - Softmax

算法面试准备 - 手撕系列第一期 - Softmax 目录 算法面试准备 - 手撕系列第一期 - SoftmaxSoftmax原理图Softmax实现代码 - 复杂版和简单版本(推荐简单版本)参考 Softmax原理图 Softmax原理图 Softmax实现代码 - 复杂版和简单版本(推荐简单版本) 方法一:循环计算 …

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答: 问:《汽车维护与修理》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《汽车维护与修理》级别? 答:国家级。主管单位:中国汽车维修行业协会 …

黑马linux笔记(03)在Linux上部署各类软件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ

文章目录 实战章节:在Linux上部署各类软件tar -zxvf各个选项的含义 为什么学习各类软件在Linux上的部署 一 MySQL数据库管理系统安装部署【简单】MySQL5.7版本在CentOS系统安装MySQL8.0版本在CentOS系统安装MySQL5.7版本在Ubuntu(WSL环境)系统…

【Linux】--- 进程的等待与替换

进程的等待与替换 一、进程等待1、进程等待的必要性2、获取子进程status3、进程等待的方法(1)wait()函数(2)waitpid函数 4、多进程创建以及等待的代码模型5、非阻塞接口 轮询 二、进程替换1、替换原理2、替…

SQL语言的计算机基础

以SQL语言的计算机基础为名 引言 在当今的信息化时代,数据被认为是新的石油,而处理和管理这些数据的能力已经成为一项至关重要的技能。关系型数据库管理系统(RDBMS)是存储和管理数据的主要方式,其中结构化查询语言&a…

工业视觉5-工业视觉选型

工业视觉5-工业视觉选型 任务分析三、知识准备问答四、相机选型五、总结 任务分析 重点明确任务要求 例子: 检测任务类型 外观检测:检查产品表面是否有划痕、污渍、缺陷等。例如,在电子元件生产中,需要检测芯片表面的瑕疵&…

Docker 部署 Typecho

1. 官网 https://typecho.org/插件 & 主题 https://github.com/typecho-fans/plugins https://typechx.com/ https://typecho.work/2. 通过 compose 文件安装 github官网: https://github.com/typecho/Dockerfile 新建一个目录,存放 typecho 的相…

如何使用Ultralytics训练自己的yolo5 yolo8 yolo10 yolo11等目标检测模型

Ultralytics正在以惊人的速度吸收优秀的CV算法,之前Ultralytics定位于YOLOV8,但逐渐地扩展到支持其他版本的YOLO,最新版本的ultralytics全面支持yolo5 yolo7 yolo8 yolo9 yolo10 yolo11,包含模型的训练、验证、预测、部署等。毫无…