‹ Reports
The Dispatch

OSS Watchlist: px4/PX4-Autopilot


Executive Summary

The PX4 Autopilot Software project, managed by the PX4 organization, is a 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.

Recent Activity

Recent commits have been focused on enhancing various modules of the software:

Planned activities include further enhancements to MAVLink protocols, sensor drivers, and testing of newly introduced features.

Risks

Plans

Conclusion

The PX4 Autopilot Software project is robustly maintained with a clear focus on enhancing functionality and ensuring stability across various unmanned vehicle platforms. While the project benefits from active contributions and detailed documentation, the complexity of changes especially in critical systems like EKF2 underscores the need for rigorous testing and validation.

Quantified Commit Activity Over 6 Days

Developer Avatar Branches PRs Commits Files Changes
David Sidrane 1 2/1/0 3 25 1807
Daniel Agar 3 6/4/0 21 41 1190
vs. last report +2 +5/+3/= +19 +39 +1184
Peter van der Perk 1 1/2/0 1 1 57
vs. last report +1 +1/+1/= +1 +1 +57
Beat Küng 1 1/2/0 1 2 54
vs. last report +1 =/+1/= +1 +2 +54
Matthias Grob 1 0/0/0 3 5 40
Alex Klimaj 1 5/2/2 3 4 21
vs. last report +1 +3/+2/+2 +3 +4 +21
Julian Oes 1 1/0/0 1 1 2
Hamish Willee 1 0/1/0 1 1 2
vs. last report = -1/+1/= = = =
None (mtzm) 0 1/0/0 0 0 0
Mathieu Bresciani (bresch) 0 1/1/0 0 0 0
vs. last report -2 -3/-3/= -5 -8 -231
Daniel Mesham (DanMesh) 0 1/0/0 0 0 0
Alexis Guijarro (TOTON95) 0 1/0/0 0 0 0
Simone Ciresa (ciresimo) 0 1/0/0 0 0 0
Jukka Laitinen (jlaitine) 0 0/1/0 0 0 0
vs. last report = -1/+1/= = = =
murata,katsutoshi (muramura) 0 3/0/0 0 0 0
vs. last report -1 =/-1/= -1 -3 -30
Liu1 (cuav-liu1) 0 1/0/0 0 0 0
Roman Bapst (RomanBapst) 0 1/0/0 0 0 0
None (asimopunov) 0 1/0/0 0 0 0
vs. last report -1 +1/=/= -1 -7 -343

PRs: created by that dev and opened/merged/closed-unmerged during the period

Detailed Reports

Report On: Fetch commits



ANALYSIS OF PROGRESS SINCE LAST REPORT

Project Overview

The PX4 Autopilot Software project, managed by the PX4 organization, is a 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.

Recent Developer Activities

Since the last report 6 days ago, there has been significant activity within the PX4 Autopilot Software project. Key developers such as Beat Küng, Alex Klimaj, Daniel Agar, Peter van der Perk, Hamish Willee, Julian Oes, Matthias Grob, David Sidrane, and others have contributed to various aspects of the project. The changes include updates to MAVLink communication handling, enhancements in EKF2 modules, improvements in sensor drivers, and various code cleanups and optimizations.

Detailed Activity by Developer

Beat Küng

Alex Klimaj

Daniel Agar

  • Commits: 21 commits addressing various aspects of EKF2 module enhancements.
  • Features: Refactoring and optimization of EKF2 modules including mag fusion, bias estimators, and output predictors.
  • Files: Multiple files across src/modules/ekf2.
  • Collaborations: None specified.

Peter van der Perk

  • Commits: 1 commit adding a new option for SD card benchmarking.
  • Features: Added 'U' option for forcing byte alignment in SD card benchmarking.
  • Files: src/systemcmds/sd_bench/sd_bench.cpp
  • Collaborations: Co-authored by David Sidrane.

Hamish Willee

  • Commits: 1 commit expanding descriptive strings in LogMessage.msg.
  • Features: Enhanced clarity in log messages.
  • Files: msg/LogMessage.msg
  • Collaborations: None specified.

Julian Oes

  • Commits: 1 commit skipping submodule checks in CLion.
  • Features: Improved developer experience in CLion by skipping unnecessary checks.
  • Files: Not specified in detail.
  • Collaborations: None specified.

Matthias Grob

  • Commits: 3 commits focused on EKF2 module improvements related to mag control merging.
  • Features: Integration tests adjustments and cleanup of legacy mag flags.
  • Files: Multiple files across src/modules/ekf2.
  • Collaborations: None specified.

David Sidrane

  • Commits: 3 commits with significant changes across multiple files related to NuttX updates and backports.
  • Features: Backported various improvements including support for MMCSD_MULTIBLOCK with preflight.
  • Files: Multiple files across NuttX configuration and board-specific directories.
  • Collaborations: None specified.

Conclusions and Future Directions

The recent activities in the PX4 Autopilot Software project demonstrate a robust effort towards refining the software's capabilities, particularly in enhancing MAVLink communication protocols, improving estimator checks, adding new hardware support through drivers, optimizing performance for different unmanned vehicle types, and streamlining the development environment. Future efforts will likely continue to focus on these areas while also addressing any emerging needs based on community feedback and technological advancements.

Report On: Fetch issues



Summary of Recent Changes in PX4 Autopilot Project

Notable Open Issues

  1. Issue #23092: [Bug] Airspeed selector invalidating data - This issue involves the airspeed selector flagging the airspeed data as invalid during flight, which doesn't occur consistently but has significant implications for flight safety and performance.

  2. Issue #23091: TECS: addition of pitch in turns based on load factor - This proposal aims to adjust pitch during turns to maintain altitude more effectively, which could enhance the efficiency and stability of fixed-wing aircraft during maneuvers.

  3. Issue #23090: Add separate vertical velocity limits for manual modes - This issue addresses the need for separate ascent and descent speed limits in manual flight modes to prevent rapid descents that could lead to hard landings or other safety issues.

  4. Issue #23089: Added RTL and Land to modes that can be ignored for RC loss failsafe - This change proposes allowing RTL and Land modes to ignore RC loss, enhancing operational flexibility and safety during critical phases of flight.

  5. Issue #23088: check if bson document size is set to zero and set to decoded size - This technical issue involves ensuring the BSON document size matches the decoded size, which is crucial for data integrity and system reliability.

  6. Issue #23087: Tools: skip submodule check in CLion - A minor but useful improvement for developers using CLion, simplifying the development process.

  7. Issue #23086: mRo Control Zero Classic: Enable GPS2 port by default - This enhancement ensures that the secondary GPS port is enabled by default on the mRo Control Zero Classic, improving out-of-the-box functionality for users requiring dual GPS setups.

Recently Closed Issues

  1. Issue #23082: ekf2: start organizing aid sources - Organizational changes to enhance code clarity and maintainability.

  2. Issue #23081: sensors/vehicle_angular_velocity: silence gyro selection fallback warning - Minor fix to reduce unnecessary warnings, improving the user experience during debugging.

  3. Issue #23079: drivers/ins/vectornav: add missing sensor_gps velocity magnitude - A fix that ensures complete data capture from VectorNav sensors, enhancing data accuracy.

  4. Issue #23078: drivers/ins/vectornav: minor fixes - Continued improvements to VectorNav sensor integration.

  5. Issue #23076: ARK Pi6X: add IIS2MDC Mag and update EKF delays - Hardware support enhancements for the ARK Pi6X board, improving sensor compatibility and performance.

  6. Issue #23075: sd_bench: make sure that unaligned is really unaligned - Ensures more accurate benchmarking of SD card performance, particularly in testing alignment impacts on speed.

  7. Issue #23074: Enable Pixhawk to Receive MAVLink v2 Framed Messages - Addressing compatibility issues with MAVLink v2 messages, which are crucial for advanced communications and features in UAV systems.

Summary

The recent activity in the PX4 Autopilot project includes significant updates aimed at improving system capabilities such as data handling, sensor integration, and flight mode enhancements. Notable open issues involve enhancements to airspeed handling, pitch adjustments during turns, separate vertical velocity limits in manual modes, and improvements in failsafe operations during RTL and landing phases. The project also continues to see robust activity in addressing various minor fixes and updates, indicating active maintenance and incremental improvements across various modules of the system.

Report On: Fetch PR 23091 For Assessment



PR #23091

Overview

This pull request introduces a new parameter for controlling pitch during turns based on the load factor in fixed-wing aircraft, specifically targeting standard VTOL configurations. The motivation behind this change is to address the observed drop in altitude during turns, aiming to maintain a more consistent flight level without excessively increasing throttle.

Changes

  • File Modifications: Adjustments were made in several files within the TECS (Total Energy Control System) library and the fixed-wing position control module.
    • TECS.cpp and TECS.hpp: Added a new term in the pitch control computation that accounts for the load factor. This term adjusts the pitch to increase the angle of attack during turns, compensating for the reduced lift.
    • FixedwingPositionControl.cpp and FixedwingPositionControl.hpp: Integration of the new TECS modifications into the fixed-wing control logic, including updating parameter handling.
    • fw_path_navigation_params.c: Definition of a new parameter (FW_T_RLL2PTCH) that allows tuning of the new pitch adjustment feature.

Code Quality Assessment

  • Clarity and Maintainability: The changes are well-documented within the code through comments, making it easier to understand the purpose and mechanism of the new feature. The use of a separate parameter for pitch adjustment (FW_T_RLL2PTCH) enhances modularity and allows easy tuning without affecting other systems.
  • Robustness: The implementation includes checks and balances by separating the computation of additional throttle and pitch adjustments, ensuring that these controls do not interfere with each other directly.
  • Parameter Use: The introduction of FW_T_RLL2PTCH is a thoughtful choice, providing flexibility to users or developers to enable or disable this feature based on their platform's needs. The parameter's range and default value seem reasonable but would benefit from real-world testing to fine-tune.
  • Testing: The developer has conducted preliminary tests in SITL (Software In The Loop), which is appropriate for initial validation. However, further testing in real flight conditions is rightly suggested to fully validate and refine the feature.

Recommendations for Improvement

  1. Extended Testing: As noted by the developer, real-world testing is crucial. It would be beneficial to test across different VTOL configurations and scenarios to gather comprehensive performance data and ensure there are no unforeseen impacts on flight stability.
  2. Documentation: Enhancing the user documentation to include guidance on how to use and adjust the new FW_T_RLL2PTCH parameter will be critical for adoption and correct usage of this feature.
  3. Safety Checks: Considering additional safety checks or constraints within the code to prevent extreme pitch commands that could potentially lead to stalls or other hazardous situations, especially under unusual flight conditions.

Conclusion

The pull request is well-crafted with a clear focus on enhancing flight performance during turns by compensating for altitude loss due to reduced lift. The changes are isolated, minimizing impact on existing functionalities while providing significant benefits under specific flight dynamics. With thorough testing and documentation, this feature could be a valuable addition to the PX4 autopilot capabilities for fixed-wing aircraft, particularly VTOLs.

Report On: Fetch pull requests



Summary of Recent Activity in PX4/PX4-Autopilot Repository

Overview

In the past few days, there has been a significant amount of activity in the PX4/PX4-Autopilot repository, with several pull requests (PRs) being merged and closed. Notably, there were no PRs that were closed without being merged.

Notable Merged Pull Requests

  • #23057: sensors/vehicle_angular_velocity: silence gyro selection fallback warning (PX4_WARN -> PX4_DEBUG)

    • Summary: This PR silences a warning related to gyro selection fallback, changing it from a warning to a debug message to reduce noise in the logs.
    • Impact: Reduces unnecessary warnings for users, making log files cleaner and easier to analyze.
  • #23070: ekf2: GPS yaw only invalidate yaw_align if stopping due to fusion failure

    • Summary: This PR changes the behavior of the EKF2 module to only invalidate yaw alignment if the GPS yaw fusion stops due to a fusion failure.
    • Impact: Improves the robustness of yaw alignment in the presence of intermittent GPS yaw data.
  • #23075: sd_bench: make sure that unaligned is really unaligned

    • Summary: Ensures that memory used in benchmarks/tests is truly unaligned when required, addressing potential issues in performance measurements.
    • Impact: Ensures more accurate benchmarking and testing of SD card performance, particularly in scenarios requiring unaligned memory access.
  • #23076: ARK Pi6X: add IIS2MDC Mag and update EKF delays

    • Summary: Updates board defaults for EKF delay parameters on the ARK Pi6X board and adds support for the IIS2MDC magnetometer.
    • Impact: Enhances sensor support and timing accuracy on the ARK Pi6X board, improving overall system performance and sensor data reliability.
  • #23078: drivers/ins/vectornav: add missing sensor_gps velocity magnitude

    • Summary: Adds a missing calculation for the velocity magnitude in the VectorNav INS driver.
    • Impact: Ensures complete and accurate GPS velocity information is available from VectorNav sensors, enhancing navigation capabilities.

Summary

The recent activity primarily involved merging improvements and bug fixes that enhance system stability, usability, and developer experience. These changes are crucial for maintaining the reliability and performance expected by end-users and developers alike. There were no significant issues with PRs being closed unmerged, indicating a healthy workflow in the repository management.

Report On: Fetch PR 23090 For Assessment



PR #23090

Overview

This pull request introduces new parameters for setting separate vertical velocity limits in manual flight modes (Altitude and Position) for multicopters. The changes are primarily within the MulticopterPositionControl and FlightModeManager modules, affecting how vertical velocities are handled and constrained.

Code Changes

  • New Parameters: Two new parameters (MPC_Z_V_MAN_UP for ascent and MPC_Z_V_MAN_DN for descent) have been added to allow configuration of vertical speed limits in manual modes.
  • Parameter Constraints: Checks are added to ensure these new parameters do not exceed the global maximum vertical speeds (MPC_Z_VEL_MAX_UP and MPC_Z_VEL_MAX_DN). If they do, they are set to the global limits, and appropriate warnings are logged.
  • Velocity Handling in Flight Tasks: Modifications in FlightTaskManualAltitude ensure that the new parameters are used to constrain vertical velocities. The task now checks against these new limits instead of the global maximums when calculating velocity setpoints.
  • Publishing Vehicle Constraints: A change in FlightModeManager.cpp ensures that empty vehicle constraints are published when no flight task is active, which helps maintain expected behavior across different flight modes.

Code Quality Assessment

  1. Clarity and Maintainability: The code changes are clear and localized to specific functionalities related to vertical velocity handling. The use of parameters is consistent with the existing codebase, making the changes easy to understand.
  2. Robustness: The addition of parameter constraints checking enhances the robustness by preventing configuration values that could lead to unsafe flight conditions.
  3. Documentation and Comments: Inline comments and parameter descriptions are sufficient to understand the changes. However, detailed documentation in the user guide or developer documentation should be updated to reflect these new parameters and their usage.
  4. Impact on Existing Functionality: The changes are backward compatible as they introduce new functionalities without altering the existing behaviors unless the new parameters are explicitly set by the user.

Overall Assessment

The pull request is well-crafted with clear, concise code changes that adhere to the project's coding standards and practices. It introduces useful functionality that provides finer control over drone behavior in manual flight modes, which can enhance user experience and safety during operations. The implementation checks for parameter limits add a layer of safety that prevents misconfiguration.

Given the scope and impact of the changes, this PR should undergo thorough testing, especially in real-world flight conditions, to validate the behavior under various scenarios before merging into the main branch.

Report On: Fetch Files For Assessment



Analysis of Source Code Files

1. src/modules/ekf2/EKF/mag_control.cpp

This file is part of the PX4 Autopilot's Extended Kalman Filter (EKF) module, specifically handling magnetometer control logic. Given its critical role in flight stability and navigation, the recent significant changes warrant a thorough review to ensure reliability and accuracy.

Key Points:

  • Functionality: The file likely contains functions that manage how the EKF module processes magnetometer data. This includes data validation, fusion into the state estimate, and possibly handling different operational modes (e.g., GPS-denied environments).
  • Risks: Any errors in this logic could lead to incorrect attitude estimation, which is critical for stable flight. It’s important to ensure robust error handling and testing, especially given recent significant changes.
  • Maintenance: Look for clear documentation on the changes made, adherence to coding standards, and comprehensive unit tests covering new logic.

2. src/modules/sensors/vehicle_angular_velocity/VehicleAngularVelocity.cpp

This file deals with the sensor selection logic for estimating vehicle angular velocity, a fundamental component for flight dynamics and control systems.

Key Points:

  • Functionality: Manages the acquisition of angular velocity data from gyroscopes or other relevant sensors, applying necessary transformations and filters.
  • Risks: Incorrect sensor data handling or sensor fusion errors can lead to inaccurate angular velocity estimation, impacting the control system's response and potentially leading to unstable flight dynamics.
  • Maintenance: Ensure that recent modifications are well-documented. The code should include error handling for sensor failures or noisy data. Unit tests should validate the sensor selection and data processing logic.

3. src/systemcmds/sd_bench/sd_bench.cpp

This file contains utilities for benchmarking the SD card's performance on the PX4 platform, which is crucial for diagnosing storage performance issues that could affect logging quality or even overall system performance.

Key Points:

  • Functionality: Provides a command-line interface to perform read/write speed tests on an SD card using various block sizes and settings (e.g., synchronization after each block).
  • Structure: The code structure involves command-line argument parsing, performing sequential write/read tests, and calculating performance metrics.
  • Risks: While primarily a diagnostic tool and not part of the flight software stack, bugs or crashes in this tool could lead to misleading diagnostics or failure in benchmarking under certain edge cases.
  • Maintenance: The utility should handle all possible edge cases like permission issues, non-existent paths, or unsupported SD card properties. It should also provide clear output that can be easily interpreted for diagnostics.

General Recommendations

  • Testing: For all files, especially those affecting flight control algorithms like EKF and sensor modules, rigorous testing is essential. This includes unit tests, integration tests, and hardware-in-the-loop simulations to ensure real-world reliability.
  • Documentation: Updates and changes should be clearly documented not only within the code (via comments) but also in project documentation files or change logs. This is crucial for maintaining long-term maintainability.
  • Code Reviews: Given the critical nature of these components, regular code reviews should be enforced, particularly focusing on any changes made recently in these areas.
  • Performance Metrics: For diagnostic tools like sd_bench, ensuring accuracy in performance metrics is key. Consider adding more detailed logging around performance tests to aid in deeper diagnostics when needed.

Overall, while each file serves a different purpose within the PX4 ecosystem, they all require high standards of reliability and clarity given their impact on either flight performance or system diagnostics.