【开发环境-PX4飞控算法】搭建PX4联合Matlab和Simulink进行飞控算法设计的仿真环境

本篇文章介绍如何搭建PX4+Matlab+Simulink飞控算法设计联合仿真环境,提供了如何安装所有所需软件的教程。

环境:

MATLAB : R2024a

UAV Toolbox Support Package for PX4 Autopilots : 24.1.1

WSL2 Ubuntu :22.04 LTS

Windows :Windows 10 22H2

Python: 3.8.2

PX4 :1.14.0

安装UAV Toolbox Support Package for PX4 Autopilots硬件支持包

打开Matlab,点击【附加功能】中的【获取附加功能】。

在这里插入图片描述

搜索并安装UAV Toolbox Support Package for PX4 Autopilots硬件支持包。

在这里插入图片描述

在弹出的页面中点击【安装】按钮。

在这里插入图片描述

登陆MATLAB账号后按提示完成安装,最后可以点击【立即设置】进入配置页面。

在这里插入图片描述

也可以点击【稍后设置】,之后通过【管理附加功能】中的UAV Toolbox Support Package for PX4 Autopilots硬件支持包右侧的设置按钮进入。

在这里插入图片描述

安装WSL2(Windows Subsystem for Linux 2)

进入Matlab配置页面后需要先安装WSL2(Windows Subsystem for Linux 2),WSL2可以在Windows计算机上开发PX4飞控。
在这里插入图片描述

点击上方的【link】按钮进入安装教程。

在这里插入图片描述

确保在BIOS中启用了计算机的虚拟化功能。它通常分别被称为“虚拟化技术”、“英特尔VT-x”或“AMD-V”。

以管理员身份打开Windows命令提示符。可以通过在Windows搜索中输入【cmd】,单击【以管理员身份运行】。

在这里插入图片描述

在Windows命令提示符下执行以下命令以安装WSL2。

wsl --install

在这里插入图片描述

安装完成后,重新启动计算机,重启后需要设置Ubuntu系统的名称和密码。

在这里插入图片描述

我这里默认安装的是Ubuntu 20.04版本,但是安装帮助中建议是使用22.04版本,所以我使用以下命令进行升级。

sudo apt update

sudo apt full-upgrade

sudo do-release-upgrade

还需要安装LSB模块。

sudo apt-get install lsb

之后在Matlab配置页面点击下方的【link】按钮进入配置教程,主要讲解了如何启动WSL2。

在这里插入图片描述

安装WSL2后Matlab仍卡在配置WSL2页面的解决方法1

官方给出的解决方法如下:

在这里插入图片描述

修改电脑的语音为英语。

在资源管理器地址栏输入%temp%进入,如果有有个名为MW_px4_WSL_distribution.txt的文件,删除它。

再次进入UAV Toolbox Support Package for PX4 Autopilots硬件支持包的配置页面即可。

安装WSL2后Matlab仍卡在配置WSL2页面的解决方法2

在安装完WSL2后,打开Matlab,点击【附加功能】中的【获取附加功能】,通过UAV Toolbox Support Package for PX4 Autopilots硬件支持包右侧的设置按钮重新进入,但是仍然是配置WSL2的页面。

通过单步执行代码发现是软件包内部有一行写错了,位置是C:\ProgramData\MATLAB\SupportPackages\R2024a\toolbox\target\supportpackages\px4+codertarget+pixhawk+hwsetup\WindowsHardwareModule.m文件的第156行。

% If for some reason, we are unable to determine the
% version, set the version as WSL not installed
if installedWSLversion ~= 1 && installedWSLversion ~= 2
    installedWSLversion = 0;
end

installedWSLversion = 0改为installedWSLversion = 2即可。

之后在Matlab命令行中运行命令生成P代码。

pcode WindowsHardwareModule.m

执行完之后再次进入UAV Toolbox Support Package for PX4 Autopilots硬件支持包的配置页面即可。

安装Python 3.8.2

如果没有安装Python 3.8.2,点击【Next】-【Install】安装Python 3.8.2,安装完毕后点击【Next】。

在这里插入图片描述

如果安装了Python 3.8.2,勾选【I have already installed Python 3.8.2】,点击【Next】,选择Python 3.8.2安装位置点击【Validate】进行验证,点击【Next】。

在这里插入图片描述

下载PX4源码

之后需要在WSL2中下载PX4 v1.14.0版本的源码。

在这里插入图片描述

点击上方的【link】按钮进入安装教程。

在这里插入图片描述

打开WSL2,到达用户目录下。

cd ~

从官网下载最新版本源码固件。

git clone https://github.com/PX4/PX4-Autopilot.git --recursive

clone成功之后,进入PX4-Autopilot文件夹中。

cd PX4-Autopilot

PX4-Autopilot里面就是PX4的源码,但是它依赖了很多其他的库,所以此时不完整还不能用,我们需要更新他的依赖。

git submodule update --init --recursive

下载完PX4源码后Matlab配置页面验证报错找不到文件夹路径的解决办法

下载完PX4源码后,在Matlab配置页面这里点击【Validate】会报错找不到文件夹路径。

通过单步执行代码发现是软件包内部有两处写错了。

位置C:\ProgramData\MATLAB\SupportPackages\R2024a\toolbox\target\supportpackages\px4+codertarget+pixhawk+hwsetup\WindowsHardwareModule.m文件的第84行。

workflowObject.Px4_Base_Dir = ['\\wsl.localhost\', distributionName , strrep(workflowObject.Px4_Base_Dir, '/', filesep)];

\\wsl.localhost\改为\\wsl$\即可。

之后在Matlab命令行中运行命令生成P代码。

pcode WindowsHardwareModule.m

位置C:\ProgramData\MATLAB\SupportPackages\R2024a\toolbox\target\supportpackages\px4+codertarget+pixhawk+hwsetup\HardwareInterface.m文件的第111行。

workflowObject.Px4_Simulink_Module_Dir =fullfile(workflowObject.Px4_Base_Dir,'src','modules','px4_simulink_app');

改为:

workflowObject.Px4_Simulink_Module_Dir =[workflowObject.Px4_Base_Dir,'\src\modules\px4_simulink_app'];

之后在Matlab命令行中运行命令生成P代码。

pcode HardwareInterface.m

之后再次在Matlab配置页面点击【Validate】验证即可。

在这里插入图片描述

安装PX4 Toolchain工具链

之后需要在WSL2中下载安装PX4 Toolchain工具链。

在这里插入图片描述

点击【link】按钮进入安装教程。

在这里插入图片描述

打开WSL2,到达PX4源码目录下包含工具链设置脚本的文件夹。

cd ~/PX4-Autopilot/Tools/setup/

运行工具链设置脚本。

bash ./ubuntu.sh

各种依赖环境安装成功之后需要重启WSL系统。

选择使用或禁用PX4源码中的控制模块

之后需要选择使用或禁用PX4源码中的控制模块,如果需要在Simulink中设计飞行控制器算法并替换掉PX4源码中的控制器,那就勾选【Disable multi-copter and fixed-wing controller modules in PX4 Firmware】。

在这里插入图片描述

选择PX4硬件并设置构建对象

之后需要选择PX4硬件并设置构建对象,我这里选择的是【Pixhawk 6c】,构建对象选择【px4_fmu-v6c_default】。

在这里插入图片描述

选择启动脚本的形式

这里需要选择启动脚本的形式,可以选择源码中的rcS文件直接构建到飞控固件中,或者选择rc.txt文件放到SD卡中。

由于之前选择了禁用PX4源码中的控制模块,则在rc.txt文件中会禁用mc_pos_control位置控制模块和mc_att_control姿态控制模块,点击【Next】。

在这里插入图片描述

这里需要将生成的rc.txt文件拷贝到飞控板上的SD卡上。

在这里插入图片描述

点击【link】按钮进入教程。

在这里插入图片描述

在Matlab命令行中运行以下命令进入rc.txt文件所在位置。

cd (fullfile(codertarget.pixhawk.internal.getSpPkgRootDir,'lib','etc'))

在SD卡根目录下新建一个etc文件夹,然后将rc.txt文件拷贝到这个文件夹下,之后将SD重新插回飞控板即可。

编译PX4固件

之后需要编译PX4固件,点击【Build Firmware】进行编译。

在这里插入图片描述

Matlab配置页面编译PX4固件报错找不到文件夹路径的解决办法

通过单步执行代码发现是软件包内部有一处写错了。

位置C:\ProgramData\MATLAB\SupportPackages\R2024a\toolbox\target\supportpackages\px4+codertarget+pixhawk+hwsetup\WindowsHardwareModule.m文件的第303行。

firmwarePath = obj.convertWin2WSLPath(TargetDir);

改为:

firmwarePath = '~/PX4-Autopilot';

之后在Matlab命令行中运行命令生成P代码。

pcode WindowsHardwareModule.m

之后再次在Matlab配置页面点击【Build Firmware】编译即可,耐心等待一段时间后Matlab命令行显示编译完成。

Memory region         Used Size  Region Size  %age Used
        ITCM_RAM:          0 GB        64 KB      0.00%
           FLASH:     1838540 B      1920 KB     93.51%
       DTCM1_RAM:          0 GB        64 KB      0.00%
       DTCM2_RAM:          0 GB        64 KB      0.00%
        AXI_SRAM:       61480 B       512 KB     11.73%
           SRAM1:          0 GB       128 KB      0.00%
           SRAM2:          0 GB       128 KB      0.00%
           SRAM3:          0 GB        32 KB      0.00%
           SRAM4:          0 GB        64 KB      0.00%
          BKPRAM:          0 GB         4 KB      0.00%
[1084/1085] Generating ../../px4_fmu-v6c_default.bin
[1085/1085] Creating /home/hccwb/PX4-Autopilot/build/px4_fmu-v6c_default/px4_fmu-v6c_default.px4

在这里插入图片描述

连接PX4硬件

之后需要连接PX4硬件并烧录固件,需要提前用数据线插好飞控板到飞控板上再点击【Next】进入测试连接界面,我这里是COM14端口。

在这里插入图片描述

点击【Upload Firmware】烧录固件。

在这里插入图片描述

在弹窗中点击【确定】,然后重新插拔一次飞控板的连接数据线。

在这里插入图片描述

耐心等待一段时间后显示烧录成功,点击【Next】。

在这里插入图片描述

到这里所有的硬件设置就已经都完成了。


参考资料:

UAV Toolbox Support Package for PX4 Autopilots

  • 80
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后厂村路练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值