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

2024-06-04 2035阅读

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

    • 安装UAV Toolbox Support Package for PX4 Autopilots硬件支持包
    • 安装WSL2(Windows Subsystem for Linux 2)
    • 安装WSL2后Matlab仍卡在配置WSL2页面的解决方法1
    • 安装WSL2后Matlab仍卡在配置WSL2页面的解决方法2
    • 安装Python 3.8.2
    • 下载PX4源码
    • 下载完PX4源码后Matlab配置页面验证报错找不到文件夹路径的解决办法
    • 安装PX4 Toolchain工具链
    • 选择使用或禁用PX4源码中的控制模块
    • 选择PX4硬件并设置构建对象
    • 选择启动脚本的形式
    • 编译PX4固件
    • Matlab配置页面编译PX4固件报错找不到文件夹路径的解决办法
    • 连接PX4硬件

      本篇文章介绍如何搭建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,点击【附加功能】中的【获取附加功能】。

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

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

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

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

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

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

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

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

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

      安装WSL2(Windows Subsystem for Linux 2)

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

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

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

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

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

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

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

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

      wsl --install
      

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

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

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

      我这里默认安装的是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。

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

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

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

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

      修改电脑的语音为英语。

      在资源管理器地址栏输入%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】。

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

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

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

      下载PX4源码

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

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

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

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

      打开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飞控算法】搭建PX4联合Matlab和Simulink进行飞控算法设计的仿真环境 第17张

      安装PX4 Toolchain工具链

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

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

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

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

      打开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联合Matlab和Simulink进行飞控算法设计的仿真环境 第20张

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

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

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

      选择启动脚本的形式

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

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

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

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

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

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

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

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

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

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

      编译PX4固件

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

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

      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联合Matlab和Simulink进行飞控算法设计的仿真环境 第26张

      连接PX4硬件

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

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

      点击【Upload Firmware】烧录固件。

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

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

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

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

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

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


      参考资料:

      UAV Toolbox Support Package for PX4 Autopilots


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]