The PX4 Autopilot Software project is an advanced flight control system designed for drones and other unmanned vehicles, managed by the PX4 organization. It supports a variety of airframes and is compatible with multiple operating systems. The project is characterized by its active development and contributions from a global developer community, aiming at continuous improvement and expansion of features.
The PX4 Autopilot Software project is on a strong developmental trajectory with active contributions aimed at refining its capabilities. While the project demonstrates robust efforts towards system enhancement, it faces challenges related to safety issues and sensor integration that require immediate attention. Addressing these risks is crucial for maintaining the reliability and safety of the system in diverse operational environments.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Eric Katzfey | ![]() |
1 | 1/4/0 | 3 | 21 | 1123 |
vs. last report | = | -5/+1/= | = | +16 | +1111 | |
Daniel Agar | ![]() |
2 | 2/2/0 | 4 | 18 | 234 |
Hamish Willee | ![]() |
1 | 0/1/0 | 1 | 4 | 10 |
vs. last report | -1 | -1/=/= | -4 | -1 | -18 | |
Konrad | ![]() |
1 | 1/0/0 | 1 | 2 | 7 |
vs. last report | = | =/-1/= | = | = | -25 | |
Jaeyoung Lim | ![]() |
1 | 1/1/0 | 1 | 1 | 1 |
Beniamino Pozzan | ![]() |
1 | 1/1/0 | 1 | 1 | 1 |
Mathieu Bresciani (bresch) | 0 | 0/2/0 | 0 | 0 | 0 | |
vs. last report | -1 | =/+1/= | -1 | -1 | -2 | |
David Sidrane (davids5) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | = | +1/-1/= | = | = | = | |
Silvan Fuhrer (sfuhrer) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | -1 | -1/-3/= | -4 | -4 | -18 | |
Jacob Dahl (dakejahl) | 0 | 1/1/0 | 0 | 0 | 0 | |
vs. last report | -1 | -1/=/= | -2 | -3 | -3 | |
murata,katsutoshi (muramura) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | = | =/=/= | = | = | = | |
None (asimopunov) | 0 | 2/0/0 | 0 | 0 | 0 | |
Tero Salminen (t-salminen) | 0 | 1/0/0 | 0 | 0 | 0 | |
Sergei Grichine (slgrobotics) | 0 | 0/1/0 | 0 | 0 | 0 | |
vs. last report | = | -1/+1/= | = | = | = | |
None (chfriedrich98) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
The PX4 Autopilot Software project, managed by the PX4 organization, is a versatile and sophisticated flight control system designed for drones and other unmanned vehicles. It supports a wide range of airframes and is compatible with multiple operating systems including Linux, NuttX, and MacOS. The project is under active development with contributions from a global community of developers focused on continuous improvement and feature expansion.
Since the last report 7 days ago, there has been a flurry of activity within the PX4 Autopilot Software project. Key developers such as Daniel Agar, Eric Katzfey, Hamish Willee, Beniamino Pozzan, Jaeyoung Lim, Konrad Rudin, and others have contributed to various aspects of the project. The changes include updates to drivers, enhancements in EKF2 modules, documentation updates, and improvements in logging and testing frameworks.
pr-ekf2_drag_fusion_wind_dead_reckon
and add_minimum_position_change_required_for_changed_home
.manual-setpoint-buttons
focusing on integrating MAVLink buttons in manual control setpoint topic.The recent activities in the PX4 Autopilot Software project demonstrate a robust effort towards refining the software's capabilities, particularly in enhancing platform compatibility and optimizing performance for new hardware support. The ongoing developments in areas such as real-time operating system support, sensor integration, flight control algorithms, and documentation indicate a strong trajectory towards advanced functionalities for unmanned aerial vehicles.
Future efforts will likely continue to focus on enhancing platform compatibility, optimizing performance for new sensor hardware, improving safety features in flight control algorithms, and updating documentation to reflect the latest changes in the software architecture.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Eric Katzfey | ![]() |
1 | 1/4/0 | 3 | 21 | 1123 |
vs. last report | = | -5/+1/= | = | +16 | +1111 | |
Daniel Agar | ![]() |
2 | 2/2/0 | 4 | 18 | 234 |
Hamish Willee | ![]() |
1 | 0/1/0 | 1 | 4 | 10 |
vs. last report | -1 | -1/=/= | -4 | -1 | -18 | |
Konrad | ![]() |
1 | 1/0/0 | 1 | 2 | 7 |
vs. last report | = | =/-1/= | = | = | -25 | |
Jaeyoung Lim | ![]() |
1 | 1/1/0 | 1 | 1 | 1 |
Beniamino Pozzan | ![]() |
1 | 1/1/0 | 1 | 1 | 1 |
Mathieu Bresciani (bresch) | 0 | 0/2/0 | 0 | 0 | 0 | |
vs. last report | -1 | =/+1/= | -1 | -1 | -2 | |
David Sidrane (davids5) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | = | +1/-1/= | = | = | = | |
Silvan Fuhrer (sfuhrer) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | -1 | -1/-3/= | -4 | -4 | -18 | |
Jacob Dahl (dakejahl) | 0 | 1/1/0 | 0 | 0 | 0 | |
vs. last report | -1 | -1/=/= | -2 | -3 | -3 | |
murata,katsutoshi (muramura) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | = | =/=/= | = | = | = | |
None (asimopunov) | 0 | 2/0/0 | 0 | 0 | 0 | |
Tero Salminen (t-salminen) | 0 | 1/0/0 | 0 | 0 | 0 | |
Sergei Grichine (slgrobotics) | 0 | 0/1/0 | 0 | 0 | 0 | |
vs. last report | = | -1/+1/= | = | = | = | |
None (chfriedrich98) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
Issue #23035 - RC signal lost results in actuators stuck at last commanded position, which is critical for safety during manual control loss scenarios.
Issue #23034 - Random thrust issues when optical flow is enabled but not providing data, affecting vehicle behavior in Position mode.
Issue #23033 - Tailsitter transitions cause throttle spikes and jumps, needing refinement for smoother transitions.
Issue #23032 - EKF2 enhancements to consider drag fusion as aiding for wind dead reckoning, enhancing system robustness.
Issue #23030 - Challenges with altitude control using only Tfmini, indicating potential integration or configuration issues.
Issue #23029 - Mode switch from Hold to an unassigned mode triggers unwanted mode changes, potentially leading to crashes.
Issue #23025 - Home position changes on ground after minimum displacement, improving the robustness of home position accuracy.
Issue #23024 - Rover ackermann module added, enhancing control capabilities for specific vehicle configurations.
Issue #23023 - New ST IIS2MDC Magnetometer driver integration, expanding hardware support.
Issue #23021 - Testing NuttX with IMXRT DMA preflight Support, indicating ongoing improvements in system capabilities.
The recent activity in the PX4 Autopilot project includes significant bug fixes, feature additions, and enhancements aimed at improving hardware compatibility, system stability, and operational safety. Critical issues like actuator behavior on RC signal loss and unexpected mode changes due to unassigned modes are being addressed to enhance reliability and safety. The introduction of new modules like the Rover ackermann and updates to existing systems like EKF2 indicate ongoing efforts to refine the system’s capabilities and support a broader range of applications and hardware configurations.
The pull request addresses the issue of thrust spikes during the transition modes of a tailsitter VTOL (Vertical Take-Off and Landing) aircraft. These spikes can destabilize the aircraft during critical phases of flight.
Throttle Spikes Fix:
Throttle Ramps:
Differential Throttle Handling:
Clarity and Maintainability:
B_TRANS_THRUST_BLENDING_DURATION
for time durations makes the code easier to modify and understand.Robustness:
Testing:
The pull request is well-crafted with clear descriptions of the problem and solution. The changes are targeted and address the issue effectively without introducing unnecessary complexity. The addition of throttle ramping and careful handling of controller output transitions should significantly improve the stability and safety of tailsitter VTOL operations during mode transitions.
In the past week, there has been a significant amount of activity in the PX4/PX4-Autopilot repository. A total of 14756 pull requests have been closed, with many addressing critical bug fixes, feature enhancements, and code maintenance tasks. Below is a detailed analysis of notable changes and their implications.
#23010: [flash savings] remove lis2mdl and pga460 from kconfig
#23002: Update NuttX
#22997: Move Voxl from microdds client to uxrce dds client
#22996: Enabled voxl2-slpi dsp_sbus driver in build
#22990: drivers: broadcom AFBR fix close to ground false readings
#22988: Send mavlink manual control buttons field in manual control input topic
#22987: drivers: rc_input fix auto scan
rc_input
where auto scan was not functioning correctly.The recent activity in the PX4/PX4-Autopilot repository shows a robust effort towards improving system performance, reliability, and feature set. The updates span across various aspects of the system including hardware support, sensor accuracy enhancements, communication protocol updates, and more efficient resource usage.
The developers are actively addressing both new feature integrations and bug fixes, which is crucial for maintaining the reliability and performance expected by end-users. This activity also indicates a strong community and developer engagement aimed at continuously evolving the platform to meet emerging needs in drone technology.
The pull request (PR) under review is from the PX4/PX4-Autopilot repository, specifically addressing enhancements in the Extended Kalman Filter (EKF2) module. The PR aims to improve the dead reckoning capabilities of unmanned aerial vehicles (UAVs) by utilizing drag fusion as a form of air data aiding.
src/modules/ekf2/EKF/ekf_helper.cpp
src/modules/ekf2/test/test_EKF_gps.cpp
Clarity and Maintainability
vel_pos_aiding
, opt_flow_aiding
, air_data_aiding
) which enhance readability and maintainability.Functionality
Testing
Best Practices
#if defined(...)
) for optional features like optical flow and airspeed aids configurability and helps in maintaining platform-specific adaptations without cluttering the codebase.Documentation
Robustness
The PR introduces a meaningful enhancement to the EKF2 module by allowing drag fusion to contribute to dead reckoning capabilities. This change could significantly benefit UAV operations in challenging environments. The code modifications are implemented cleanly and thoughtfully with attention to detail in handling various data sources. Additional tests targeting the new functionality would further solidify confidence in these changes. Overall, this PR is a positive contribution to the PX4 Autopilot project.
The source code provided is part of the PX4 Autopilot project, specifically from the EKFGSF_yaw.cpp
file which handles yaw estimation using an Extended Kalman Filter (EKF) with a Gaussian Sum Filter (GSF). This module is crucial for accurate heading estimation, which is fundamental for navigation and control in UAVs.
Modularity and Clarity:
predict()
, fuseVelocity()
, ahrsPredict()
, and updateEKF()
clearly delineate different phases of the EKF processing pipeline.Naming Conventions:
ahrsPredict()
suggests it is related to AHRS (Attitude and Heading Reference System) predictions.Use of Data Structures:
matrix::
) is extensive, facilitating complex mathematical operations involved in EKF computations. This use of specialized libraries for linear algebra operations ensures efficiency and correctness.Error Handling:
delta_ang_dt
is greater than a small epsilon before division).PX4_ISFINITE()
for guarding against non-finite numbers in calculations shows attention to robust error handling.Efficiency:
Maintainability:
CONSTANTS_ONE_G
for gravitational acceleration makes the code more readable and easier to modify, as these values are defined at the beginning of the file.Robustness:
Potential Areas for Improvement:
The EKFGSF_yaw.cpp
file demonstrates a high standard of software engineering practices appropriate for critical systems like UAV flight control. It exhibits clear structuring, effective use of advanced programming constructs, and attention to detail in handling numerical computations securely and efficiently. However, like any complex system, continuous improvement in testing, error handling, and documentation would further enhance its robustness and maintainability.