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文件的错误如下图:
直接放弃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版本(现改的)
首先安装如下的几个必须的依赖,再安装这个工具箱。
安装的附加功能如下
WSL2的安装
此时在WSL中没有Ubuntu系统,需要安装一下22.04的ubuntu
不知道为啥这win11用wsl命令一直下载不下来,卡在0%半天不动。网上说是系统更新的原因。。。网上建议去手动下载,或者是Store里面下载,但是我Store也是打不开,所以手动下载地址如下:
下载地址:Manual installation steps for older versions of WSL
安装完后显示这个错误,是因为我的设置导致新应用安装到了D盘,需要更改以下Ubuntu的位置到C盘。
卸载重装一般是没用的,这个貌似是默认安装在你选择的默认安装位置,所以需要更改默认安装位置再安装或者是直接移动App。
卸载重装是不行的,需要选择移动到C盘才可以。。。
之后成功安装了Ubuntu系统
但是仍然打开工具箱后无法跳转到下一步,按照社区给的指示操作如下。
更改以下系统的类型到专业版,方便后续更改电脑的语言。
弄到这我也是服了,这b win11语言一直下载不下来,网上尝试了各种办法都特么不行。
然后重启了几次,显示更新xxx,结果重新打开matlab之后便可以进行到下一步了。。。。。我特么!
在这里怀疑一个很大的原因是没有设置默认WSL启动为ubuntu,可以按照matlab文档里面设置一下,就CMD一个命令。然后重启打开Matlab。
PS:折腾了半天,win11的语言包终于能下载了,不过也没用了。。。
开发环境的配置2
ok,过了第一步剩下的其实好说。
配置参考:https://blog.csdn.net/weixin_29062909/article/details/138366879
PX4源码下载
这里选择Python地址来验证。没有尝试过他的自动下载,也不建议自动。
这里去下载PX4的源码,2024B系列Matlab支持的是PX4 v1.14版本
这里与之前的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盘去了,作为我这个上古时代的电脑分盘使用者来说很不友好,弄得我很不爽。
|
|
这里出现了个没有分支的错误,我们创建一个。不创建也问题不大,这里官方文档中并没有这一步。
git switch -c <v1.14>
接下来就是漫长的下载submodule时间。。。。
下载完成后,对上面的硬件设置窗口,点击下一步。
在文件资源管理器中,可以找到Linux的地址,一般是home下,找到地址复制过去。验证。ok!
PX4 ToolChain下载以及编译程序
https://www.mathworks.com/help/releases/R2024b/uav/px4/ug/setup-px4-toolchain-wsl.html
跟着官网教程进入目录 运行脚本下载即可。这些都是前人为我们铺好的路。
此处时间较长可以给自己弄杯咖啡等着。。。。
下面检验下工具链的安装是否正确。
在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时,是不是重启一下也能解决呢?
配置引导页面
重启之后,这个导引窗口也没了安装工具链那一步了。
让我们确认
翻译如下:
应该是问你是否要自己设计控制器,自己要设计控制器的话,勾选,后续可能需要自己搭建。
我们此处选项勾选。不勾选的以后再试试。
下一步,选择我们的F427老爷飞控。
应该是选自启动脚本。第一个是选择在PX4自身中的默认启动脚本。第二个是选择在SD卡中的用户编辑的脚本。
CSDN博主说选择第二个较为繁琐,那我们选第一个。
确定QGC地面站的位置
这一步,应该是让我们在QGC中选择鸡架,先下一步吧。Mavlink还没连接上应该也选择不了。
编译工程。我们勾选删除所有目标xxxx。
我们之前人工make构建了一次,这里再点一次,直接秒成功了。可能是检测到了之前构建产生的px4文件。
再次在matlab中构建,依然成功。
这里叫我们测试硬件连接。这里我拿之前焊的PX4进行连接。
连接上之后烧录固件。如果开着QGC,需要关掉。否则串口占用没法下载
Matlab页面显示下载烧录完成。
可以验证以下陀螺仪加速度数据。可以看到我这里能正常读取数据。
获取陀螺仪数据的Simulink实例程序
官方教程地址:Getting Started with Connected I/O for PX4 Host Target
这可以作为我们的第一个开发程序。
在simulink建模中,模型设置,按照官方给出的指导设置如下。
Simulink建立一个这样的简单读取数据的模型。
可以看到可以成功读取到数据,仿真10秒。之前我没动,后面动了两下。实在是太开心了。
再来一张吧
配合可视化平台进行仿真
根据教程PX4与Simulink联合仿真-入门篇
我们新建一个控制电机PWM的模型如下图所示:
首先创建一个开关,连接PWM模块的解锁端口。并将开关的模块同Const模块连接起来,使得打开开关,值为1,否则为0。
设置数据类型。前两个设置为布尔类型,后面的CH通道的PWM输入设置为uint16类型。
设置硬件参数,如下图所示。配合jMAVSim进行可视化仿真。另外,仿真运行时间设置为无穷,即设置为inf。
进入Ubuntu终端,运行jmavsim可视化仿真程序。
jmavsim程序已经启动。Simulink中点击Run In IO 即可开始。此处JmavSim自动关闭的话需要再执行命令将其打开,自动关闭是因为缺少自动启动的脚本导致的。