搭建PX4联合Matlab和Simulink进行飞控算法设计的仿真环境
搭建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。
安装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 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】进行编译。
连接PX4硬件
之后需要连接PX4硬件并烧录固件,需要提前用数据线插好飞控板到飞控板上再点击【Next】进入测试连接界面,我这里是COM14端口。点击【Upload Firmware】烧录固件。在弹窗中点击【确定】,然后重新插拔一次飞控板的连接数据线。耐心等待一段时间后显示烧录成功,点击【Next】。到这里所有的硬件设置就已经都完成了。
参考资料:UAV Toolbox Support Package for PX4 Autopilots