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

导读

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“找到。

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第1张图片

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模块库介绍及各个模块的使用说明

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第2张图片

图 Simulink PSP工具箱展示

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第3张图片

图 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消息名称和数据。

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第4张图片

图 用于消息读写的uORB 模块

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第5张图片

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

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第6张图片

图 uORB write模块配置界面

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第7张图片

图 uORB 消息文件

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第8张图片

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

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第9张图片

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第10张图片

 

图 Pixhawk参数读取例程

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第11张图片

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

4.2电机PWM模块

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

 

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第12张图片

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

4.3 遥控器输入模块

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

 

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第13张图片

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

4.4蜂鸣器模块

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第14张图片

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

 

4.5 RGB_LED模块

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第15张图片

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

4.6 传感器组合模块

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

 

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第16张图片

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

4.7姿态数据模块

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第17张图片

 

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

4.8 GPS数据模块

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第18张图片

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

 

4.9 电池数据模块

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第19张图片

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

PART

05

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

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

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

平台使用篇 | RflySim平台Simulink-PSP工具箱使用简介_第20张图片

图 . 控制器连接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才能上传并烧录。

你可能感兴趣的:(平台使用篇,无人系统仿真开发平台,无人系统,无人机教学,飞思实验室)