Featured image of post Simulink-PX4-WSL2仿真环境搭建

Simulink-PX4-WSL2仿真环境搭建

基于Simulink的PX4仿真系统搭建,以及在仿真上部署算法,或者硬件在环。

PX4-Simulink联合环境配置

参考如下教学:
PX4与Simulink联合仿真-入门篇
PX4与Simulink联合仿真-进阶篇
使用Pixhawk2.4.8基于Simulink进行入门级飞控算法自主开发的操作
基于Simulink的PX4飞控算法的开发实践(1.硬件支持包配置)
基于Simulink的ROS2下PX4无人机控制框架-入门篇

PX4版本:适配matlab 2022b的v1.12.3
Matlab版本:2022b
windows:Windows11家庭版
遇到的错误:在编译时一直提示找不到.px4文件的错误如下图:
错误1找不到px4文件
错误1找不到px4文件
直接放弃2022的了,改用2024的Matlab进行开发的尝试。

开发环境的配置1

更换各部件版本如下
电脑:LEGION Y7000P IRX9 LAPTOP
硬件:Intel(R) Core(TM) i7-14650HX 2.20 GHz + RTX4060 + 16GB
PX4版本:适配matlab 2024b的v1.14
Matlab版本:2024b
windows:Windows11专业版-24H2版本(现改的)
首先安装如下的几个必须的依赖,再安装这个工具箱。
1
安装的附加功能如下
1

WSL2的安装

1
此时在WSL中没有Ubuntu系统,需要安装一下22.04的ubuntu
不知道为啥这win11用wsl命令一直下载不下来,卡在0%半天不动。网上说是系统更新的原因。。。网上建议去手动下载,或者是Store里面下载,但是我Store也是打不开,所以手动下载地址如下:
下载地址:Manual installation steps for older versions of WSL 1
安装完后显示这个错误,是因为我的设置导致新应用安装到了D盘,需要更改以下Ubuntu的位置到C盘。
1
卸载重装一般是没用的,这个貌似是默认安装在你选择的默认安装位置,所以需要更改默认安装位置再安装或者是直接移动App。 1
1
卸载重装是不行的,需要选择移动到C盘才可以。。。
1
之后成功安装了Ubuntu系统
1
但是仍然打开工具箱后无法跳转到下一步,按照社区给的指示操作如下。
1
更改以下系统的类型到专业版,方便后续更改电脑的语言。
1
弄到这我也是服了,这b win11语言一直下载不下来,网上尝试了各种办法都特么不行。
然后重启了几次,显示更新xxx,结果重新打开matlab之后便可以进行到下一步了。。。。。我特么!
在这里怀疑一个很大的原因是没有设置默认WSL启动为ubuntu,可以按照matlab文档里面设置一下,就CMD一个命令。然后重启打开Matlab。
1
PS:折腾了半天,win11的语言包终于能下载了,不过也没用了。。。
1

开发环境的配置2

ok,过了第一步剩下的其实好说。
配置参考:https://blog.csdn.net/weixin_29062909/article/details/138366879

PX4源码下载

这里选择Python地址来验证。没有尝试过他的自动下载,也不建议自动。
1
1
这里去下载PX4的源码,2024B系列Matlab支持的是PX4 v1.14版本
1
这里与之前的2022版本的Matlab的UAV工具箱不同,固件要下载到WSL目录之下。

Cloning the firmware in WSL2 home directory is crucial. If you clone it outside of the WSL file system, then you will encounter slow execution issues and access right / permission errors. 在 WSL2 主目录中克隆固件至关重要。如果将其克隆到 WSL 文件系统之外,那么您将遇到执行缓慢的问题和访问权限/权限错误。

执行如下的命令以在WSL中下载固件。可能就是安装到C盘去了,作为我这个上古时代的电脑分盘使用者来说很不友好,弄得我很不爽。

1
2
3
4
5
6
mkdir mypx4
cd mypx4
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
git checkout v1.14.0 -f
git submodule update --init --recursive

这里出现了个没有分支的错误,我们创建一个。不创建也问题不大,这里官方文档中并没有这一步。
git switch -c <v1.14>
1
接下来就是漫长的下载submodule时间。。。。
下载完成后,对上面的硬件设置窗口,点击下一步。 在文件资源管理器中,可以找到Linux的地址,一般是home下,找到地址复制过去。验证。ok!
1

PX4 ToolChain下载以及编译程序

https://www.mathworks.com/help/releases/R2024b/uav/px4/ug/setup-px4-toolchain-wsl.html
1
跟着官网教程进入目录 运行脚本下载即可。这些都是前人为我们铺好的路。
此处时间较长可以给自己弄杯咖啡等着。。。。
1
下面检验下工具链的安装是否正确。
在PX4-Autopilot目录下运行了make px4_fmu-v3_default
出现了在ubuntu配置时以前遇到过的缺少STM32在Linux下开发工具的错误。
之前的解决方法:编译时报错:The CMAKE_CXX_COMPILER arm-none-eabi is not a full path and was not found in the PATH.的问题解决方法
重启之后,之前的错误居然没了。成功编译。
这里与我之前ubuntu下配置一样。我不禁思考我在配置ubuntu时,是不是重启一下也能解决呢?
1

配置引导页面

重启之后,这个导引窗口也没了安装工具链那一步了。
让我们确认
1
翻译如下:
应该是问你是否要自己设计控制器,自己要设计控制器的话,勾选,后续可能需要自己搭建。
我们此处选项勾选。不勾选的以后再试试。
1
下一步,选择我们的F427老爷飞控。
1

应该是选自启动脚本。第一个是选择在PX4自身中的默认启动脚本。第二个是选择在SD卡中的用户编辑的脚本。
CSDN博主说选择第二个较为繁琐,那我们选第一个。
1
确定QGC地面站的位置 1
这一步,应该是让我们在QGC中选择鸡架,先下一步吧。Mavlink还没连接上应该也选择不了。
1
1
编译工程。我们勾选删除所有目标xxxx。 我们之前人工make构建了一次,这里再点一次,直接秒成功了。可能是检测到了之前构建产生的px4文件。
1
1
再次在matlab中构建,依然成功。
1
这里叫我们测试硬件连接。这里我拿之前焊的PX4进行连接。
1
连接上之后烧录固件。如果开着QGC,需要关掉。否则串口占用没法下载
1
1
Matlab页面显示下载烧录完成。
1
可以验证以下陀螺仪加速度数据。可以看到我这里能正常读取数据。
1
1

获取陀螺仪数据的Simulink实例程序

官方教程地址:Getting Started with Connected I/O for PX4 Host Target
这可以作为我们的第一个开发程序。
在simulink建模中,模型设置,按照官方给出的指导设置如下。
1
Simulink建立一个这样的简单读取数据的模型。
1
可以看到可以成功读取到数据,仿真10秒。之前我没动,后面动了两下。实在是太开心了。
1
再来一张吧
1

配合可视化平台进行仿真

根据教程PX4与Simulink联合仿真-入门篇
我们新建一个控制电机PWM的模型如下图所示:
首先创建一个开关,连接PWM模块的解锁端口。并将开关的模块同Const模块连接起来,使得打开开关,值为1,否则为0。
1
设置数据类型。前两个设置为布尔类型,后面的CH通道的PWM输入设置为uint16类型。
1
设置硬件参数,如下图所示。配合jMAVSim进行可视化仿真。另外,仿真运行时间设置为无穷,即设置为inf。
1

进入Ubuntu终端,运行jmavsim可视化仿真程序。
1

jmavsim程序已经启动。Simulink中点击Run In IO 即可开始。此处JmavSim自动关闭的话需要再执行命令将其打开,自动关闭是因为缺少自动启动的脚本导致的。
1

Licensed MIT OR GPL3.0 WHATEVERS ON GITHUB_PAGE SHOW YOU