PX4归纳整理
dayL_W
热爱编程、热爱生活、热爱运动
展开
-
Pixhawk系统架构介绍
前段时间导师叫我做扑翼无人机,工程上需要实现的,能够通过程控飞起来,感觉难度挺大。先从研究PX4开始,打算一步步理解透整个PX4的框架,机型的适配、旋翼、固定翼的姿态控制,新机型的添加等等。不知道能不能做成,这里先立个flag吧。 这篇文档是我课程作业的一个报告,包含4个方面,硬件架构分析,Linux开发环境搭建,软件架构分析,源代码分析等。由于源代码比较庞杂,这里简要分析下飞机...原创 2018-07-09 21:15:58 · 44102 阅读 · 14 评论 -
PX4-小型固定翼滑跑起飞问题分析
自动起飞过程中经常出现往一边偏的问题,无法很好的到达takeoff点。参考代码:src/modules/fw_pos_control_l1/FixedwingPostionControl.cpp 中 control_takeoff 函数结合航点到达判定函数src/modules/navigator/mission_block.cpp可能还需要结合自动起飞代码src/modules/f...原创 2019-09-27 13:18:30 · 1657 阅读 · 0 评论 -
PX4-航点到达判定代码分析
这里主要分析源代码https://github.com/PX4/Firmware/blob/master/src/modules/navigator/mission_block.cpp里面的is_mission_item_reached 判断航点是否到达的代码,代码分析如下:航点到达判断当飞行器的高度误差小于爬升高度误差时进入航点飞行模式航点到达判断流程如下所示:1、如果为特殊...原创 2019-09-25 23:57:58 · 1308 阅读 · 3 评论 -
PX4使用WIFI模块
PX4支持WIFI模块作为数传工具,官网上也提供了教程,但是不注意细节也很容易失败。以下是我的经验以及教训。配置环境飞控:pixhawk v2,烧录PX4 v1.8.2的固件地面站:QGC 3.5.2wifi模块:市面上最常见的8针ESP8266模块操作系统:Win 10参考资料[1]https://docs.px4.io/master/en/telemetry/es...原创 2019-05-18 14:19:21 · 3682 阅读 · 3 评论 -
吴恩达直升机控制系列论文笔记
参考论文:Learning vehicular dynamics, with application to modeling helicopters.2005.nips。这篇论文在不知道直升机空气动力学模型的情况下,根据直升机的飞行数据,采用机器学习的方法学习到了直升机的运动模型。Autonomous helicopter flight via Reinforcement Learning....原创 2019-01-20 16:43:24 · 2917 阅读 · 0 评论 -
PX4子模块不一致的问题
PX4新代码改变了很多东西,同时子模块改变也挺大的。将主代码切换到较老版本时会发生子模块版本不符合的情况,这时候需要注意,切换后需要同步下子模块make cleangit checkout <whatever tag>git submodule update --init --recursivegit submodule sync --recursivegit submo...原创 2018-12-30 16:12:17 · 727 阅读 · 0 评论 -
PX4例程学习
PX4的源代码中提供了一些学习例程,对于PX4的二次开发非常有用。现在学习下,应该有很多能够运用上的东西。例程的目录位于Firmware\src\examples目录下,每个目录是独立的应用程序,包含需要用到的源代码和CMake文件。CMake的写法在每个样例中有一个CMakeLists.txt文件,对于每个样例都需要这样一个文件来把程序编译进可执行程序中,如下:px4_add_mo...原创 2018-12-11 16:48:20 · 4922 阅读 · 1 评论 -
PX4-固定翼的姿态控制
下面分析代码的版本是v1.8.21 参数介绍固定翼中有很多参数,理解这些参数的含义非常重要FW_AIRSPD_TRIM 巡航状态下的空速 15m/sFW_AIRSPD_MIN 最小空速 10m/sFW_AIRSPD_MAX 最大空速 20m/sgspd_scaling_trim FW_R_TC 外环控制器的比例参数,这只是一个初始值FW_RR_P 内环控制器的比例参数...原创 2018-12-20 23:18:49 · 5556 阅读 · 0 评论 -
PX4着陆检测
为什么要着陆检测对于开发一款飞控而言,起飞和落地的检测是必不可少的,甚至占有举足轻重的地位。比如,飞控内部起飞前控制器的一些初始化设置,落地及时自动加锁等功能都必须要基于这个功能,如果出现判定不准确或者误判的情况,会导致炸鸡的风险。在PX4的代码中着落检测和起飞检测写在了一起,判断函数为_get_landed_state(),如果飞机当前在地面上(还没有起飞或者已经着陆),则返回true,如果...原创 2018-12-09 15:56:27 · 1847 阅读 · 0 评论 -
PX4中混控器Mixer的分析
PX4架构保证了核心控制器中不需要针对机身布局做特别处理。混控指的是把输入指令(例如:遥控器打右转)分配到电机以及舵机的执行器(如电调或舵机PWM)指令。对于固定翼的副翼控制而言,每个副翼由一个舵机控制,那么混控的意义就是控制其中一个副翼抬起而另一个副翼落下。同样的,对多旋翼而言,俯仰操作需要改变所有电机的转速。将混控逻辑从实际姿态控制器中分离出来可以大大提高复用性。1 控制流程一个特定的...原创 2018-12-06 23:22:48 · 9505 阅读 · 9 评论 -
PX4添加一个新的机型
有时候自己定义了一个新的固定翼或者选择,PX4没有对应的机型,这时候需要添加一个新的飞机类型。添加飞机的说明官网上有说明,https://dev.px4.io/en/airframes/adding_a_new_frame.html#add-new-airframe-to-qgroundcontrol。不过官网上有些细节没有提到,很容易添加失败。步骤和官网上也差不多。我在总结一下步骤及容易出现...原创 2018-12-06 23:12:17 · 3251 阅读 · 2 评论 -
PX4启动脚本分析
启动脚本是一个神奇的东西,它能够识别出你对应的飞机类型,加载对应的混控器,选择对应的姿态、位置估计程序以及控制程序,初始化你需要的驱动程序。下面来分析下。图片总结启动代码的分析必定少不了这张图,不知道是谁整理出来的,非常棒!下面的分析会结合源代码rcS以及这张图进行。图片可能有点大,可以保存图片到本地仔细研究。代码分析启动脚本位于Firmware\ROMFS\px4fmu_...原创 2018-12-06 22:28:40 · 2535 阅读 · 1 评论 -
PX4日志生成及查看
Pixhawk的飞行日志由固件中的sd2log模块记录在SD卡的log文件中,目前版本的格式为*.px4log(曾经是*.bin),根据sd2log的设置不同,包含飞行日志的文件夹的名字可能是sess***或者具体日期时间启动日志PX4中日志有时不随系统启动,需要在地面站中通过sdlog2命令启动日志记录,参数如下:sdlog2 {start|stop|status|on|off} [...原创 2018-12-05 19:20:29 · 8095 阅读 · 0 评论 -
PX4编译问题总结
PX4在变编译的时候总会碰到很多问题。有些问题根据提示就可以解决,有些问题却有点麻烦。1 找不到python jinja2模块CMake Error at /usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138 (message): couldn't find python module jinja2: ...原创 2018-07-10 10:18:49 · 4668 阅读 · 0 评论 -
PX4-编译错误
子模块不一致问题PX4不同版本使用不同版本的子模块,在切换分子的时候如果子模块没有对应更改会出现,子模块不一致问题。如下所示******************************************************************************** IF YOU DID NOT CHANGE THIS FILE (OR YOU DON'T KN...原创 2019-09-28 10:15:05 · 1557 阅读 · 0 评论