平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介

news2024/11/24 20:41:15

导读

Pixhawk Pilot Support Package (PSP,自驾仪支持包)工具箱是Mathworks公司官方为Pixhawk推出的一个工具箱。本篇围绕RflySim平台Simulink-PSP工具箱使用进行详解。

RflySim平台Simulink-PSP工具箱使用简介

PSP工具箱

Pixhawk Pilot Support Package (PSP,自驾仪支持包)工具箱是Mathworks公司官方为Pixhawk推出的一个工具箱。该工具箱能在Simulink中利用嵌入式代码产生器(Embedded Coder)将Simulink模型自驾仪算法自动编译和部署到Pixhawk硬件系统中。

在安装完工具箱后,可以在Simlink的浏览器中找到一个名为"Pixhawk Target Blocks"的模块。实际上,这个模块在PSP工具箱中生成的算法代码会被嵌入到我们的PX4软件系统中,并创建一个名为"px4_simulink_app"的独立模块。这个模块是独立运行的,不会影响PX4系统中的本地控制模块的运行。它与其他模块并行运行。这样一来,我们可以替换掉PX4的自定义滤波器和姿态控制器等原生模块。本节具体例程均可在平台安装目录下的“C:\PX4PSP\RflySimAPIs\Exp02_FlightControl\e0-PlatformStudy“找到。

图片

PART

01与Pixhawk自驾仪系统关系

1) Pixhawk自驾仪系统的软硬件结构包括:硬件系统(类似于电脑主机)+PX4自驾仪软件系统(类似于主机上运行的操作系统和应用程序)的构架方式。

2) 整个PX4自驾仪软件系统可以分为若干个小模块,每个模块独立运行(多线程并行),各个模块通过uORB消息模块的订阅与发布功能实现数据的传输与交互。

3) Simulink生成的代码部署到PX4自驾仪软件之后,不会影响原生PX4自驾仪软件的运行,而是新增一个名为“px4_simulink_app”的独立模块(独立线程)并行于其他模块运行。

4) 由于原生PX4控制算法可能需要访问和“px4_simulink_app”同样的硬件输出资源,这会产生读写冲突。因此,平台一键部署脚本提供了自动屏蔽PX4原生固件对执行器的选项,以确保只有“px4_simulink_app”模块能够输出电机控制量。

PART

02

主要功能

1) 能在Simulink中对不同的飞机模型和自驾仪算法进行仿真和测试,并能自动将算法部署到Pixhawk自驾仪中;

2) 工具箱提供了一些实用实例,包括灯光控制、遥控器数据处理和姿态控制器等;

3) 工具箱中提供了很多接口模块,用于访问Pixhawk的软硬件组件;

4) 能自动记录传感器、执行机构以及自己部署进去的控制器的飞行数据;

5) 能订阅和发布uORB话题消息。PX4自驾仪软件的所有数据都暂存在一个uORB消息池中,通过uORB订阅功能可以从消息池中读取感兴趣的话题,通过uORB发布功能可以特定的话题发布到消息池中供其他模块使用。

PART

03

代码生成与部署过程

1) PSP工具箱将在Simulink中设计的控制算法生成C代码;

2) 将该代码导入到PX4自驾仪的源代码中,生成一个“px4_simulink_app”独立运行的程序;

3) PSP工具箱调用编译工具将所有代码编译为“.px4” 的PX4自驾仪软件固件文件;

4) 将得到的固件下载到Pixhawk自驾仪中并烧录,由Pixhawk自驾仪执行带有生成的算法代码的PX4软件。

PART

04

Pixhawk Target Blocks模块库介绍及各个模块的使用说明

图片

图 Simulink PSP工具箱展示

图片

图 PSP工具箱传感器和执行器接口库示意图

如上图,在Simulink的库浏览器中可以找到Pixhawk Target Blocks模块库。本套课程主要使用到的模块包括传感器和执行器的接口库,以及uORB消息读取和写入模块。

这里提到的所有PSP工具箱传感器和执行器接口模块在底层均是通过uORB消息的读写来实现的。理论上通过uORB消息的读写,我们可以获取并改变自驾仪内的所有消息和中间变量,实现更高级的控制器功能。因此掌握该模块的使用,我们拥有更大的权限与自由度,使得实现更为复杂的功能称为可能。更多使用教程可以参考https://dev.px4.io/master/en/middleware/uorb.html

4.1 uORB模块 

通过下图所示的uORB模块可以从PX4自驾仪软件中读取或发送uORB消息,其中PX4自驾仪支持的所有uORB消息类型可以在本平台安装目录(默认路径是“C:\PX4PSP”)下的“Firmware\msg”目录中查看。双击“uORB write”模块可以打开uORB消息配置界面,在其中可以选择发送的uORB消息名称和数据。

图片

图 用于消息读写的uORB 模块

图片

图 uORB 写接口模块参数设置框

点击图“uORB write”模块配置界面中的“Open .msg file”按钮可以打开选定的uORB消息文件(见图 uORB 消息文件);点击按钮“Open .msg folder”打开消息目录(见图 uORB 模块参数设置框“Open .msg folder”按钮弹出框)。

图片

图 uORB write模块配置界面

图片

图 uORB 消息文件

图片

图 uORB 模块参数设置框“Open .msg folder”按钮弹出框

uORB写操作有两个模块可以选择,下图带后缀“_dai”的模块允许发送基于某uORB消息基类(例如actuator_controls)的扩展消息(例如, actuator_controls_0)。

图片

为了方便调参与测试,PSP工具箱还提供了访问Pixhawk内部参数的方法,这样可以在飞行测试实验中,通过地面站软件来修改Simulink生成控制器参数,而不需要在Simulink中修改后再生成代码。使用时需要将参数声明函数放入Simulink的菜单栏的“File”–“Model Properities”-“Callbacks” -“InitFcn” 中。

图片

 

图 Pixhawk参数读取例程

图片

图 Pixhawk参数读取的Simulink初始脚本设置

4.2电机PWM模块

通过这个模块可以发送PWM信号到PX4IO的输出端口以控制电机转动,可以选择PWM的更新率及输入通道。

 

图片

图.电机PWM输出模块及其参数设置框

4.3 遥控器输入模块

通过这个模块可以选择接收遥控器的通道数量,以及其他的一些信息。每个选项的含义可点击对话框的“help”按钮查看或者查阅官方PDF文档。

 

图片

图 遥控器输入模块及其参数设置框

4.4蜂鸣器模块

通过这个模块可以控制蜂鸣器在特定的事件发出特定的音调。

图片

图蜂鸣器模块及其参数设置框

 

4.5 RGB_LED模块

通过这个模块可以控制LED灯闪烁的模式和颜色。如下图所示,模块接收两个输入,一个是模式(Mode),另一个是颜色(Color),可用模式和可用颜色可以点击对话框的“help”按钮查看。

图片

图多彩LED灯模块及其参数设置框

4.6 传感器组合模块

通过这个模块可以获取Pixhawk中可用的传感器数据,然后这些数据可以用于控制模型的设计。可获取的数据包括磁力计、加速度计、陀螺仪、气压计和时间戳。

 

图片

图传感器数据组合模块及其参数设置框

4.7姿态数据模块

该模块提供了经过滤波的姿态数据(欧拉角和四元数),通过复选框可以勾选想要输出的姿态数据。

图片

 

图 姿态模块及其参数设置框

4.8 GPS数据模块

通过这个模块可以获取Pixhawk的GPS数据,它是通过订阅uORB话题“vehicle_gps” 实现的,所以在实际运行时需要保证Pixhawk上插入GPS模块才能获取正确数据。

图片

图 GPS数据模块及其参数设置框

 

4.9 电池数据模块

通过这个模块可以获取电池的实时数据,它也是通过订阅uORB话题“battery_status” 实现的,所以在实际运行时需要保证Pixhawk上插入电源模块才能获取正确数据。

图片

图 电池数据模块及其参数设置框

PART

05

Simulink配置实现PSP工具箱自动代码生成

1) 控制器代码生成前的准备工作

在Simulink中设计一个控制器,并进行软件在环仿真验证;将通过验证的控制器复制到一个新的Simulink文件中;n将控制器的输入输出口与PSP工具箱模块库中的输入(传感器、遥控器)和输出(电机PWM、LED灯和蜂鸣器)接口进行连接。这样连接后就组成了一个完整的例程。

图片

图 . 控制器连接PSP接口模块

2) 选择目标硬件

为了让Simulink根据目标硬件编译和组建模型,需要点击Simulink的“设置”按钮进行相应的设置。在弹出的模型配置页面,在“Hardware Implementation”标签页的“Hardware Board”下拉框中设置硬件板卡为“Pixhawk PX4”。

3) 编译与固件生成

点击Simulink的“编译” 按钮,再点击Simulink的“诊断”按钮

4) 编译过程与结果

一次成功的编译过程在“Diagnostic Viewer”窗口中可以看到编译进度条完成,同时显示“Successfully generated all binary outputs”消息。此外,在编译完成之后,Simulink会自动弹出“Code Generation Report”代码生成文档。

5) 固件的上传

MicroUSB线将Pixhawk与电脑连接;对于MATLAB 2017b~2019a,点击Simulink菜单栏【Code】-【PX4 PSP:Upload code to Px4FMU】将代码上传进入飞控;对于MATLAB 2019b及更高版本,在MATLAB的“命令行窗口”输入“PX4Upload”命令来下载固件。注意看窗口提示,有时需要重新插拔Pixhawk才能上传并烧录。

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

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

相关文章

显卡水洗充新、冒牌作坊彻底凉凉,1500万销量团伙被一锅端

上一轮显卡挖矿潮自 2020 年底开始,直到 2022 年底尾声,历时两年左右。 在这一波矿潮冲击过后,大量水洗、二手矿卡横行,显卡市场可谓一片混乱。 翻新、杂牌显卡厂商表示:就挺突然的,感觉人生到达了巅峰&a…

某奇艺缺陷书写规范及缺陷严重程度划分

目录 一、最基本的要求: 二、Bug标题 三、复现步骤 四、描述 五、期望结果 六、实际结果 七、附件 八、备注 九、Bug定级(优先级) Bug书写规范: 一、最基本的要求: 1、Bug内所有的文字表述要通顺&#xff0c…

最新!王中林院士再获全球大奖:“开创让西方跟随的研究领域”

最新!王中林院士再获全球大奖:“开创让西方跟随的研究领域” 北京时间7月6日下午17:00,2023年度“全球能源奖”(Global Energy Prize)揭晓,中国科学院北京纳米能源与系统研究所首席科学家王中林院士因发明摩…

Debug Stable Diffusion webui

文章目录 SD前期预备一些惊喜TorchHijackForUnet Txt2Img 搭配 Lora 使用单独运行 txt2img.py获取所有资源代码地址参数sd model 主程序代码地址参数(同上)模型InferenceLORA应用重构并使用LORA模型用Lora重构后的网络 做 sampler后处理 以下内容是最近的学习笔记,如…

Microsoft发布用于 AutoML 算法和训练的 NNI v1.3

将传统的机器学习方法应用于现实世界的问题可能非常耗时。自动化机器学习 (AutoML) 旨在改变这种状况——通过对原始数据运行系统流程并选择从数据中提取最相关信息的模型,使构建和使用 ML 模型变得更加容易。 为了帮助用户以高效和自动的方…

Redis 九种数据类型的基本操作

一、redis9种数据类型的基本操作 ①key操作 #查找所有的key 127.0.0.1:6379> keys * 1) "pop" 2) "mylist" 3) "lpl" 4) "myset" #设置key的过期时间 返回1表示执行成功,0表示失败,出现问题 127.0.0.1:6379…

【Spring Boot Admin】介绍以及使用

介绍 概述 Spring Boot Admin是一个监控工具,旨在以一种漂亮且易于访问的方式可视化Spring Boot Actuators提供的信息。 主要功能点 显示应用程序的监控状态应用程序上下线监控查看 JVM,线程信息可视化的查看日志以及下载日志文件动态切换日志级别Http…

【C++】入门基础2

引用 概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间 类型& 引用变量名(对象名) 引用实体; 注意:引用类型必须和引用实体是…

PC微信 3.9.6 正式版终于来,大家一起来看看更新的功能

目录 PC微信 3.9.6 内测官方更新日志 1、微信接收的文件可自行设置是否只读 2、聊天记录搜索功能优化 3、微信群搜索群成员功能优化 4、优化多个显示器DPI 5、公众号图片消息优化 6、视频号直播工具升级 PC微信使用小技巧 1、放松一下,刷刷朋友圈 2、电脑…

【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权

一、API接口文档平台 使用API接口文档不经可以很好的的维护接口数据,还给测试人员的接口测试工作带来了便利; 我们可以在全局配置文件中添加路由路径生成接口文档 1、使用docs接口文档维护接口 1.1在全局配置文件里指定用于支持coreapi的Schema # 指…

ChatGPT统计“一到点就下班”的人数

ChatGPT统计“一到点就下班”的人数 1、到点下班 Chatgpt统计各部门F-D级员工到点下班人数占比,是在批评公司内部存在到点下班现象。 根据图片,该占比的计算方法是:最后一次下班卡在17:30-17:40之间,且1-5月合计有40天以上的人…

flutter开发实战-RepaintBoundary实现Widget截图功能

flutter开发实战-RepaintBoundary实现Widget截图功能 在开发中,遇到需要使用截图,像iOS可以截图UIView获取到UIImage,在flutter中可以使用RepaintBoundary实现截图功能 相机拍摄的图片: RepaintBoundary截图后的图片 一、Re…

Windows安装postgresql时,启动报1053错误

用SQL shell 连接时显示拒绝连接,是因为postgreSql没有启动。 点击“服务”启动却报 1053错误 点击postgreSql服务,选择 登录-》选择本地系统账户,方可启动服务

CSS中display属性的inline-block导致布局错位问题

HTML部分代码 <div class"header_wrap"><ul><li><a href"#">首页</a></li><li>新闻</li><li>角色</li><li>世界</li><li>漫画</li><li>漫画</li><l…

【个人笔记】Linux查询系统日志的命令journalctl

目录 查询系统日志的工具journalctljournalctl常用命令 查询系统日志的工具journalctl 从2012年开始&#xff0c;大部分linux发行版本开始从传统的systemv 初始化系统移植到一个叫做systemd的全新系统。systemd用来启动系统并管理进程。systemd包含了一个叫做journalctl的辅助…

前端 | ( 十二)CSS3简介及基本语法(中)| 变换、过渡与动画 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 系列笔记&#xff1a; 【HTML4】&#xff08;一&#xff09;前端简介【HTML4】&#xff08;二&#xff09;各种各样的常用标签【HTML4】&#xff08;三&#xff09;表单及HTML4收尾…

【MyBatis-Plus 进阶学习笔记】

MyBatis-Plus 进阶学习笔记记录 一、 MyBatis Plus 七大功能0. 数据准备1. 逻辑删除2. 自动填充2.1 优化1 自动填充 有的类没有更新和创建时间字段2.2 优化2 自己设置时间时填充自己设置的&#xff0c;不设置时自动填充 3. 乐观锁插件 注&#xff1a;wrapper不能服用4. 性能分析…

SQL-每日一题【610.判断三角形】

题目 表: Triangle 写一个SQL查询&#xff0c;每三个线段报告它们是否可以形成一个三角形。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例 1: 解题思路 前置知识 CASE函数 CASE具有两种格式&#xff0c;简单CASE函数和CASE搜索函数。这两种方式&#xff0c;大部分…

SIGIR 2023 | 语音让对话推荐更easy,火山语音联合新加坡科学研究院发布业内首个语音对话推荐数据集

近年来&#xff0c;推荐系统在工业界取得了巨大成功&#xff0c;甚至成为互联网发展中不可或缺的增长引擎&#xff0c;基于此研究者们也在积极探索推荐系统的新形态&#xff0c;其中对话推荐系统&#xff08;Conversational Recommender System&#xff0c;简称CRS&#xff09;…

leetcode做题笔记37

编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 数独部分…