Commit Graph
48371 Commits
Author SHA1 Message Date
Balduin 933d2d263d ControlAllocator: new unified battery scaling
Works by scaling the _mix matrix in the pinv conntrol allocator. This is
architecturally a bit ugly, but I think is a reasonable solution
considering the alternatives and their drawbacks:

Current version (in rate control modules):
 + simple
 - Relies on FW/VTOL proxy to determine which directions of
   thrust/torque need battery scaling
 - introduce battery scaled thrust / torque commands that are not
   physical thrust and torque but

Also modifying the torque / thrust setpoint like currently but inside of
the allocator (this one could actually reasonably work as well,
consider)
 + minimal functional change w.r.t. before, addresses the issue of
   confusing scaled and unscaled torque/thrust setpoints
 - FW/VTOL distinction gets hairier.
     - Currently we have separate scaling implementations for MC (->
       scale all thrust and torque commands, reasonably assuming that
       all rotors are driven by the same battery) and FW (-> scale only
       forward thrust). If we move it into the allocator,
     - In the allocator we get either one torque sp (MC or FW, from the
       rate controllers) or two (VTOL, from VTOL attitude controller).
       In the VTOL case, we have 0 = MC and 1 = FW. To replicate the
       previous logic, we have to separate these setpoints again into
       clear MC and FW components.

Instead modifying the effectiveness matrix through
ActuatorEffectivenessRotors
 + VERY clean and physically consistent, the scale enters by modifying
   the thrust coefficient, 1:1 modelling the decreased effectiveness of
   the rotor in both thrust and torque, in one single place
 - Does not work because the normalizeControlAllocationMatrix reverts
   the scaling effect that entered through the effectivenss matrix.
   Getting it to work would require reworking this scaling from the
   ground up or removing it entirely

Modifying only the motor outputs after the allocator
 + again very simple, does not care about FW/VTOL, we just do it for all
   the rotors
 - Introduces wrong actuator limits: Allocator assumes that rotors
   saturate based on a model unaware of battery scale, but because after
   the allocator we scale (increase) the commands, the actual saturation
   happens earlier.
2026-01-15 17:34:17 +01:00
Balduin 57fec74311 SpacecraftRateControl: Remove old battery scaling 2026-01-15 16:49:34 +01:00
Balduin cc7b4890b5 FixedwingRateControl: Remove old battery scaling 2026-01-15 16:49:34 +01:00
Balduin e578e3dda1 MulticopterRateControl: Remove old battery scaling 2026-01-15 16:49:31 +01:00
jmackay2andjmackay2 e371c4edd9 Fix the test data matrix script (#24745)
Co-authored-by: jmackay2 <jmackay2@gmail.com>
2026-01-13 13:47:24 -09:00
Matthias Grob 473ef5fd06 uavcan: esc: fix actuator test on uavcan ESCs that consume ArmingStatus (#26255)
* uavcan esc: remove unused includes

* uavcan arming_status: disarm when terminated

To stay consistent with kill.

* uavcan: publish armed during actuator tests to make it possible spinning motors
2026-01-13 10:57:54 -09:00
Phil-Engljaehringer 46d9b14ba0 Feat: Add driver for TMP102 temperature sensor for Skynode-N (#26241)
* feat: added driver for tmp102 temperature sensor

* style: removed new line

* style: adjusted date in header

* style: removed duplicated logging

* fix: moved start-up command from rc.board_sensors to rc.sensors

* style: used consexpr for expected config reg value

* feat: added retry logic to probe function

* style: added _ as prefix to global variable

* style: used make format

* fix: corrected temperature calculation

* fix: mask AL-bit in probe function

* style: removed header files from CMakeLists

* style: used correct english in comments

* refactor: return error right after failure

* style: moved init call to correct place

* fix: corrected temperature calculation (again)

* refactor: removed _curr_pr variable => always have to set PR to desired register on read

* fix: add multi logged topic
2026-01-12 18:42:51 +01:00
Balduin 66e21497a6 FwLateralLongitudinalControl: publish flight phase also if unknown, and with limited rate (#26251)
* FwLateralLongitudinalControl: publish uknown flight phase if TECS not running

* FwLateralLongitudinalControl: publish flight phase with lower rate

For this we store the new flight phase in a local variable, which is
returned by tecs_update_pitch_throttle (but initialised outside to
unknown in case TECS does not run).
2026-01-12 15:30:26 +01:00
Matthias Grob de49edc428 failsafe web simulation: end user friendly mode names + add Altitude cruise and External 1 2026-01-12 11:30:07 +01:00
Matthias Grob b5846fd8c2 Commander: unify RC loss and data link exception options 2026-01-12 11:30:07 +01:00
Silvan ec6dd286fc Commander: COM_RCL_EXCEPT consider all auto modes triggered by action in bit 1
Signed-off-by: Silvan <silvan@auterion.com>
2026-01-12 11:30:07 +01:00
Hamish Willee cf50ecf41b Split out PX4 v1.17 release note (#26225) 2026-01-10 14:06:19 +11:00
Jaeyoung Lim 9fe69d4f33 Make flap slew rate configurable (#26240)
* Make flap slew rate configurable

* Dynamically update params
2026-01-09 06:37:34 -08:00
fakerrorandV f4247aee58 rover_mecanum: enable yaw control via MAVLink SET_POSITION_TARGET commands (#26218)
* rover_mecanum: enable yaw control via MAVLink SET_POSITION_TARGET commands

* Maintain the original judgment conditions

---------

Co-authored-by: V <null>
2026-01-09 08:08:53 -05:00
Beniamino Pozzan ec8f34325e chore(rCS posix): move param override through env var after airframe selection (#26193)
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2026-01-09 12:15:45 +01:00
Matthias Grob 0e615816b3 commander/failsafe: fix user takeover not possible in fallback Land action when configured RTL is not possible 2026-01-09 10:10:23 +01:00
Matthias Grob 4cf4f82233 failsafe unit test: add cases for 1 allow taking over from degraded failsafes 2 not cause immediate takeover when failsafe happens because of mode switch
The first test makes sure the user can take over when an RTL failsafe was triggered but degraded to a Land.

The second test rules out the easiest fix of removing the condition `_selected_action == selected_action` which causes the problem for test one but is there for a reason.
2026-01-09 10:10:23 +01:00
mengchaoheng 5f83c186ee Checks for identical parameter changes 2026-01-09 08:53:09 +01:00
Hamish Willee e761297003 Fixed Wing Loiter Modes - Orbit and Figure 8 (#26194) 2026-01-09 17:12:43 +11:00
Alex Klimaj 27181619fc Update GPS submodule (#26238) 2026-01-08 10:24:28 -09:00
Patrik Dominik Pordi 210239324d Added ARK G5 and G5 Heading RTK GPSs (#26154) 2026-01-09 05:59:09 +11:00
Mathieu Bresciani c71e2d41d6 Fixedwing: Fix circular landing when global origin is not set (#26223)
When not specified by navigator, the center of the landing orbit is set
to the current position when landing is triggered.
2026-01-08 14:44:00 +01:00
mahima-yoga 7c318a3296 MulticopterPositionControl: prevent velocity integrator filling up from stale acceleration setpoints
When position control is disabled, clear the setpoint properly to prevent stale values. This fixes a bug where switching to position mode in the same control loop as a hover thrust estimate update could fill up the velocity integrator.
2026-01-08 11:16:52 +01:00
Julian Oes 0375f1a6f0 airframes: don't mess with logging profile (#26234)
I don't think we should change the logging profile based on the type of
airframe configured. Instead, this is an option you set based on the
phase of development/testing you're in.

This came up because the KakuteH7v2 which is 4050 by default would log
excessively which is not a good idea with only 128 MB flash storage.
2026-01-07 20:31:52 -09:00
0ef4f1b7bd Add uxrce dds flow control flag (#26209)
* added flow control bitfield

* shortened to 16 char param name length

* refactored changes for uxrce flow control param

* reverted additions to docs

* Update src/modules/uxrce_dds_client/module.yaml

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

---------

Co-authored-by: minotico <81227020-minotico@users.noreply.github.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-01-07 16:59:03 -09:00
Erkki Eilonen 598066653a cmake: set CMAKE_CXX_STANDARD 17 to match code assumptions (#25767)
Usage of std::in_place_t implies C++17
2026-01-07 16:56:16 -09:00
86e1356e0a Extend SENS_GPS_PRIME usage for UAVCAN GNSS devices (#26126)
* UAVCAN: extent SENS_GPS_PRIME usage to UAVCAN GNSS devices

* use convenience function

Co-authored-by: Matthias Grob <maetugr@gmail.com>

* Update src/drivers/uavcan/sensors/gnss.cpp

Co-authored-by: Øyvind Taksdal Stubhaug <o_github@oystub.com>

* Apply suggestion from @MaEtUgR

Co-authored-by: Matthias Grob <maetugr@gmail.com>

* Fix type casting in GPS prime range check

* reverted parameter default

* UAVCAN: fix and improve device_id logic (#26135)

* UAVCAN: extent SENS_GPS_PRIME usage to UAVCAN GNSS devices

* use convenience function

Co-authored-by: Matthias Grob <maetugr@gmail.com>

* Update src/drivers/uavcan/sensors/gnss.cpp

Co-authored-by: Øyvind Taksdal Stubhaug <o_github@oystub.com>

* Apply suggestion from @MaEtUgR

Co-authored-by: Matthias Grob <maetugr@gmail.com>

* Fix type casting in GPS prime range check

* UAVCAN: fix and improve device_id logic

* Added bus information to more UAVCAN drivers

* Fix device_id registration in UavcanBarometerBridge

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
Co-authored-by: Øyvind Taksdal Stubhaug <o_github@oystub.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
Co-authored-by: Øyvind Taksdal Stubhaug <o_github@oystub.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2026-01-07 10:19:07 -09:00
Balduin 450cf79fc8 FwLateralLongitudinalControl: Publish flight phase (#26219)
* FwLateralLongitudinalControl: publish flight phase

* FwLateralLongitudinalControl: consolidate hrt_absolute_time calls

* FwLateralLongitudinalControl: Name time variables correctly

* FwLateralLongitudinalControl: pass current time as argument rather than class member

* FwLateralLongitudinalControl: use local position timestamp
2026-01-07 11:10:38 +01:00
Claudio Chies 1ff36422c9 docs: UAVCAN asset tracking (#26152) 2026-01-07 14:46:15 +11:00
Nick 38b6a9abf3 pwm: Add PWM center support to Wheel and Gimbal (#26211)
* Add Wheel and Gimbal support to PWM center

* Document Center feature for PWM Gimbal
2026-01-06 18:05:35 +01:00
MDLZCOOL 819c783b6c px_uploader.py: optimize crc32 calculation using zlib (#26205)
Replaces the legacy pure-Python lookup table CRC32 implementation with the built-in `zlib.crc32`.

The previous implementation relied on a manual loop over bytes, which was inefficient for large firmware files (taking ~0.5s for 2MB on modern CPUs). The new implementation reduces this to ~1ms.

Implementation details:
- Removed the hardcoded `crctab` array to clean up the code.
- Adjusted `zlib` initial state (0xFFFFFFFF) and final XOR operations to ensure bit-perfect compatibility with the specific CRC32 variant expected by the PX4 bootloader.

Benchmark (2MB firmware):
- Legacy: ~0.48s
- zlib:   ~0.001s
2026-01-06 17:36:44 +13:00
Silvan Fuhrer 14558e9304 rangefinder: remove unused class member (#26212)
Signed-off-by: Silvan <silvan@auterion.com>
2026-01-05 17:46:59 -09:00
Jacob Dahl 6bc24c8cd1 msg: VehicleCommandAck: bump queue length from 4 to 8 (#26217) 2026-01-06 14:07:53 +13:00
Alex Klimaj d8220d4948 logger: add logger_status topic to default topics (#26197) 2026-01-05 10:50:03 -09:00
PX4 Build BotandCrowdin Bot 435040f2d5 New Crowdin translations - zh-CN (#26203)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-05 08:08:48 +11:00
PX4 Build BotandCrowdin Bot dad58f31a6 New Crowdin translations - ko (#26201)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-05 08:08:39 +11:00
PX4 Build BotandCrowdin Bot 6ecbfb2262 New Crowdin translations - uk (#26202)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-05 08:08:30 +11:00
Pedro Roque 9563f4c8c6 fix: move required dds ip to hardware, leave default on sim (#26190) 2026-01-03 21:00:25 +01:00
Jacob Dahl cea6c10864 tools: check_submodules: remove user prompt and continue with build 2026-01-02 10:37:49 -07:00
Hamish Willee 1e34c80115 Minor link fix (#26196) 2026-01-02 17:50:17 +11:00
PX4 Build BotandCrowdin Bot 076b673977 New Crowdin translations - zh-CN (#26180)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-02 17:37:12 +11:00
PX4 Build BotandCrowdin Bot 00f2c149d1 New Crowdin translations - uk (#26179)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-02 17:31:03 +11:00
PX4 Build BotandCrowdin Bot e370d15c72 New Crowdin translations - ko (#26146)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-02 17:29:23 +11:00
Julian Oes aa850d5c1c mavlink: don't send out GPS_GLOBAL_ORIGIN too early (#26115)
This prevents PX4 from sending out the GPS_GLOBAL_ORIGIN message
immediately when a SET_GPS_GLOBAL_ORIGIN message arrives.

Instead, we apply the new origin in the EKF, and only then send out
the new origin, which is much more intuitive and doesn't confuse a user
of the API.
2025-12-30 07:31:00 +13:00
Tom Willow 1e618a7eb0 gps: use UTC timestamp when GPS fixed (#26127) 2025-12-26 15:50:37 -09:00
Jacob Dahl f46fd89057 gz_bridge: GZGimbal: fix frame flags (#26172) 2025-12-24 12:42:30 -08:00
Pedro Roque 33c7eed5f1 feature: add ATMOS dual actuation model (#26088)
* init: working towards dual-action ATMOS

* fix: update gz sim to latest

* fix: add motor number max fitting Actuator

* fix: revert non-necessary changes

* fix: ensure esc count does not exceed maximum number of ESCs

* feat: update gz to latest, includes ATMOS dual action

* fix: restore dds_topics

* fix: update gazebo model commit
2025-12-23 22:38:58 -08:00
Hamish Willee 96f428b683 docs: Update metadata (#26167) 2025-12-24 14:57:46 +11:00
PX4 Build BotandCrowdin Bot 722133f79a New Crowdin translations - uk (#26147)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-24 11:08:37 +11:00
PX4 Build BotandCrowdin Bot 66c5644f1b New Crowdin translations - zh-CN (#26158)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-24 11:08:31 +11:00