Commit Graph
100 Commits
Author SHA1 Message Date
Matthias GrobandHamish Willee 63ec2f0406 docs/safety: clarification for position loss in manual position controlled flight
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-08 09:41:52 +02:00
Matthias Grob e0cdcdb436 Remove COM_POSCTL_NAVL
In an effort to reduce configuration space.
I've not seen use for this option.
If a pilot flies manually in position mode he has some visual reference of the vehicle and can do better than an autonomous mode without position reference.
Also by now we have nudging in Descend mode so the pilot can still give input and the only difference is it automatically goes down instead of the pilot having to descend by stick to land.
2025-09-08 09:41:52 +02:00
Matthias Grob 887ca6d497 ManualControlSelector: address invalid prioritized input and don't check if sample is from the future 2025-07-31 11:34:53 +02:00
Matthias Grob 461433d7f6 ManualControlSelector: is InputValid refactor with switch case for code readability 2025-07-31 11:34:53 +02:00
Matthias Grob a09352c079 ManualControl: add option to prioritize RC or MAVLink but with fallback 2025-07-31 11:34:53 +02:00
Matthias Grob b876aa5b45 ManualControlSelector: robust timeout check 2025-07-31 11:34:53 +02:00
Matthias GrobandJacob Dahl 6cf494dde1 Publish RTCM stream telemetry also for UAVCAN GNSS receivers (#25315)
* uavcan gnss: publish rtcm instance and injection rate

* GPS drivers minor refactor (#25316)

* GPS drivers: adhere to message name based variable naming convention

* uavcan gnss: use matrix norm calculation

* GPS drivers: rate naming refactor and robust timeout checks

---------

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-07-29 09:55:21 -08:00
Matthias Grob 79b46e08a8 Rename manual_lockdown to kill for clarity 2025-07-28 17:07:08 +02:00
Matthias Grob 32531c870e px4io: terminated -> termination
fogotten to allign completely in the last step
2025-07-28 17:07:08 +02:00
Matthias Grob 359cad3636 Add back original quadrotor X unit test cases from old multirotor mixer 2025-07-28 14:10:50 +02:00
Matthias Grob 88460db44a ControlAllocationSequentialDesaturation: improve unit test fixture in terms of parameter update and defaulting to no airmode 2025-07-28 14:10:50 +02:00
Matthias Grob 40e1e82cb0 ControlAllocationSequentialDesaturationTest: convert existing unit test cases to improved fixture 2025-07-28 14:10:50 +02:00
Matthias Grob a80e89255c ControlAllocationSequentialDesaturation: adopt improved unit test fixture
This makes it much easier to go through allocation secnarios in one line with comprehensive numbers.
2025-07-28 14:10:50 +02:00
Matthias Grob cd1bac0a55 ControlAllocationSequentialDesaturation: add unit tests 2025-07-28 14:10:50 +02:00
Matthias Grob 53efcbd2c2 control_allocation: Consistently replace with ActuatorVector alias for readability 2025-07-28 14:10:50 +02:00
Matthias Grob 6a3a0d136b ActuatorEffectiveness: add comments to EffectivenessUpdateReason
from information previously only available in the commit message.
2025-07-28 14:10:50 +02:00
Matthias Grob 37899269a8 control_allocator: fix PID dependency definition 2025-07-28 14:10:50 +02:00
Matthias Grob ef6866cd08 ControlAllocationSequentialDesaturationTest: fix include instead of duplicating definitions 2025-07-28 14:10:50 +02:00
Matthias Grob 4b4cc2164c Revert "Remove inclusion of rotors in library to enable test (#24286)"
This reverts commit f7dadd9b89.
2025-07-28 14:10:50 +02:00
Matthias Grob 930c0451b5 ActuatorEffectivenessRotorsTest: add Hexarotor X 2025-07-28 14:10:50 +02:00
Matthias Grob b9f7b8f705 commander failsafe: never override user intended termination + unit test 2025-07-28 11:36:21 +02:00
Matthias Grob 972acf0203 commander params: disable remaining flight time failsafe by default
Currently if you configure a battery capacity the battery library calculates a remaining flight time and you by default get an RTL when the flight time - return time is running out.

Since the state of charge threshold based battery failsafes `COM_LOW_BAT_ACT` are disabled by default I was asked to also disable the flight time based failsafe to be consistent.
2025-07-28 10:37:43 +02:00
Matthias Grob 200be07021 action_request: rename ACTION_TERMINATE to ACTION_TERMINATION for clarity 2025-07-25 13:01:25 -06:00
Matthias Grob 9d75bdbe62 IO: rename FORCE_FAILSAFE to TERMINATION for clarity 2025-07-25 13:01:25 -06:00
Matthias Grob 7fe78e184e Rename force_failsafe to termination for clarity 2025-07-25 13:01:25 -06:00
Matthias Grob 34dacffc4a Commander: shell command commander termination instead of lockdown on for clarity 2025-07-25 13:01:25 -06:00
Matthias Grob 539ef8b0d1 PositionControlTest: Additional test case velocity setpoint with invalid states (#25286) 2025-07-25 09:04:56 +02:00
Matthias Grob dbc36c9e3d commander params: Further clarify termination vs kill 2025-07-23 11:13:11 +02:00
Matthias Grob 6c5c88f72e Commander: only trigger MAVLink parachute on termination
This can now be tested using the new termination RC switch.
2025-07-23 11:13:11 +02:00
Matthias Grob 52e8a0a0db Add RC termination switch 2025-07-23 11:13:11 +02:00
Matthias Grob f9b811b0c5 Commander: add option to ignore manual control loss in external modes 2025-07-15 13:08:18 +02:00
Matthias GrobandHamish Willee 7d33df4650 Doc Orbit: update and clarify configurability and behavior around limits (#25208)
* Doc Orbit: update and clarify configurability and behavior around limits

* run prettier

* Fix up link to table

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-07-15 12:29:29 +10:00
Matthias Grob a4115db669 FlightTaskOrbit: replace hardcoded 10m/s maximum speed with multicopter speed configuration (#25192) 2025-07-10 11:16:11 -08:00
Matthias Grob 140b426720 stylecheck script: improve bash consition because of error iwth newer terminal versionsstylecheck script: improve bash condition to avoid error with newer terminal versions (#25193) 2025-07-10 10:59:19 -08:00
Matthias Grob daa491dc19 rc_update: make payload power switch an optional 3-way switch
to support 3 different power states for the payload.
2025-06-30 16:50:28 +02:00
Matthias Grob 1bccd5557a rc_update: add unit tests for two way payload power switch
with the intention to extend it to an optional 3 way switch.
2025-06-30 16:50:28 +02:00
Matthias Grob 8e7c2ed440 rc_update: allow payload power switch to be used for other boards than ARK FPV 2025-06-30 16:50:28 +02:00
Matthias Grob 64b92e46f8 rc_update: follow parameter member naming convention for payload power switch mapping 2025-06-30 16:50:28 +02:00
Matthias Grob fc3fd43fc7 rc_update: specify 2 decimal places for all float threshold parameter metadata 2025-06-30 16:50:28 +02:00
Matthias Grob 2bc04f91f8 docs: fix all end of file newlines
Note: Some files are autogenerated and I did not yet
go through each source of generation to fix it there.
Instead I adjusted the filter to only exclude those
such that we can fix things in steps.
2025-06-26 11:03:23 -07:00
Matthias Grob e9bac962ab docs index: fix special character encoding to be UTF-8 2025-06-26 11:03:23 -07:00
Matthias Grob bb6d43d5e3 uavcan battery: add support for cuav::equipment::power::CBAT message
emitted by e.g. uavcan Tattu batteries.
2025-06-25 21:11:23 +02:00
Matthias Grob 30d4ff3c6c uavcan battery: fix battery_status.scale, time_remaining and timestamp
- timestamp was 0 if uavcan::BatteryInfo was received before uavcan::BatteryInfoAux
- scale was not set as unknown (-1) even though it is since it's never updated
- time_remaining was not initialized correctly and could sometimes be 0
  unexpectedly which causes the drone to failsafe because there's reportedly no flight time left
2025-06-25 21:11:23 +02:00
Matthias Grob eccfb18b51 battery_status message: remove serial_number which is now in battery_info message 2025-06-17 09:05:22 +02:00
Matthias Grob 1d86ede6c6 msg translations: sort headers alphabetically 2025-06-17 09:05:22 +02:00
Matthias Grob 84ce7d2fc6 cyphal: switch to battery_info.serial_number 2025-06-17 09:05:22 +02:00
Matthias Grob a18453d632 uavcan battery: switch to battery_info.serial_number 2025-06-17 09:05:22 +02:00
Matthias Grob 3ec684153a batmon: switch to battery_info.serial_number 2025-06-17 09:05:22 +02:00
Matthias Grob 2237bfa9a9 smbus_sbs: switch to battery_info.serial_number 2025-06-17 09:05:22 +02:00
Matthias Grob 7895976a17 batt_smbus: switch to battery_info.serial_number 2025-06-17 09:05:22 +02:00
Matthias Grob d7ab21b8d6 Add battery_info message with serial number compatible with UAVCAN, MAVLink and drivers
I'm starting the separate battery info message because no char[32] should be published and logged
at high rate and we need a separate battery info message for static information as discussed.
2025-06-17 09:05:22 +02:00
Matthias Grob 6b2b20bd6e imu_gyro_parameters: lower default angular acceleration filter from 30Hz to 20Hz
to avoid noise getting into the derivative term of the PID rate control loop on integration flights.
2025-06-12 17:15:12 +02:00
Matthias Grob c7ef12545c mc_att_control_params: lower default roll and pitch attitude gains from 6.5 to 4
6.5 is a relatively high value that was used mostly on smaller, low inertia vehicles ~250-500mm diagonal. There it works great but on larger, higher intertia vehicles this leads to problems.
2025-06-05 19:28:53 +02:00
Matthias Grob fdc4766da6 Make sure vehicle_thrust_setpoint is always published before vehicle_torque_setpoint
After f0b05ea7cf
the control allocator only has a callback on the torque setpoint and even though this should work
I'm paranoid and would like to avoid surprises by always publishing the thrust before torque
then the samples that were published together are also allocated together.
2025-06-05 08:46:30 +02:00
Matthias Grob 84cb748080 esc_calibration: simplify the logic and consider battery only connected if there's no message timeout and the connected flag is set 2025-06-04 17:11:33 +02:00
Matthias Grob 7e055656b0 uavcan esc: translate temperature field from Kelvin to Celsius 2025-06-04 16:44:16 +02:00
Matthias Grob ce9bb0dc6b multicopter defaults: use PX4 default <2g ublox GNSS dynamic model also for multirotors
It currently defaults to 1g for multirotors, which works in most cases. However, during extended high-acceleration flight (e.g. in Stabilized mode), the limited dynamic model can upset the EKF, causing repeated resets due to data inconsistencies. Recovery is sometimes quick but can also be too slow to maintain position after high acceleration flight. This issue was observed on an 850mm vehicle, not a racer.
2025-05-27 15:27:32 +02:00
Matthias Grob a9f7f00844 batteryCheck: refine low battery reporting sevirity
To make sure QGC also shows a box and reads out for "low battery"
and make events and mavlink_log reports consistent.

Low - Critical
Critical - Critical
Emergency - Emergency
2025-05-21 16:08:27 +02:00
Matthias Grob 30df381f0e multicopter_autonomous_params: adjust yaw acceleration and maximum rate for exclusive use with HeadingSmoothing 2025-05-21 13:25:46 +02:00
Matthias Grob a8f5b6dc1b FlightTaskOrbit: also use HeadingSmoothing to avoid steps during the approach 2025-05-21 13:25:46 +02:00
Matthias Grob 70ad2e6fe5 FlightTaskAuto: Smooth yaw follow-up, bring back necessary previous yaw setpoint and reset smoothing when yaw is not locked 2025-05-21 13:25:46 +02:00
Matthias Grob 0b3fc0a62d SIH: add Hexacopter X
to enable easy simulation of a motor failure.
2025-05-20 13:23:08 +02:00
Matthias Grob df65e5bced docs events_interface: fix entire paragraph being declared code by accident (#24860) 2025-05-16 08:40:21 +10:00
Matthias GrobandHamish Willee 406f0bb470 Fix cellular_status message definition (#24662)
* msg: fix cellular_status definition

12 * Update msg/CellularStatus.msg

* cellular_status: remove confusing reference to roaming

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-05-08 15:07:11 +02:00
Matthias Grob 87db286a88 pps_capture_params: clarify description (#24641) 2025-05-07 11:15:20 +10:00
Matthias Grob 8e89906b9a docs: update link to navigator's publish_vehicle_command function 2025-04-25 15:32:47 +02:00
Matthias Grob dfed3970d4 navigator: use reference instead of pointer to pass the vehicle command to publish 2025-04-25 15:32:47 +02:00
Matthias Grob 672d228d79 navigator: fill vehicle_command with float literals and comment what they stand for 2025-04-25 15:32:47 +02:00
Matthias Grob da870c4dce navigator: refactor vcmd -> vehicle_command 2025-04-25 15:32:47 +02:00
Matthias Grob 176783dbcb navigator: clarify publish_vehicle_command() comment 2025-04-25 15:32:47 +02:00
Matthias Grob f07ddda344 navigator: refactor publish_vehicle_cmd() -> publish_vehicle_command() 2025-04-25 15:32:47 +02:00
Matthias Grob 5f34474ecb FlightTaskAuto: clean up parameter description and internal variable naming 2025-04-25 15:32:47 +02:00
Matthias Grob 9eaec534ab mc_att_control_main: fix check for hover thrust estimate update (#24750) 2025-04-22 15:53:51 -08:00
Matthias Grob 9404783c99 EKF2: more accurate unaided yaw calculation
to fix the yaw unlocking in StickYaw
when giving a lot of roll and pitch input
2025-04-22 15:55:38 +02:00
Matthias Grob d514cb4903 mc_att_control: use StickYaw class for Stabilized
to make yawing including reset and drift handling consistent with
Altitude and Position mode.
2025-04-22 15:35:26 +02:00
Matthias Grob 174147208e Move StickYaw class into a globally available library 2025-04-22 15:35:26 +02:00
Matthias Grob fa3f255301 SIH: write out vehicle types for clarity (#24731) 2025-04-16 14:03:34 +02:00
Matthias Grob 45d7f707d7 mc_att_control: remove useless subscription
added in 28fa044386
#19633
2025-04-04 13:23:49 +02:00
Matthias Grob ddb9a5d0b9 gz_plugins: do not look for gz-transport12 (Gazebo garden) (#24633)
this tries to build the plugins and breaks the SITL build if you have
Gazebo garden isntalled even if you're not trying to simulate with
Gazebo.
2025-03-28 10:11:56 -08:00
Matthias Grob a048a8e8a0 mavlink_receiver: refactor manual_control.throttle extraction to exactly match MAVLink output 2025-03-21 11:44:51 +01:00
Matthias Grob faf4114a09 gz_bridge: add a localhost GZ_IP to avoid multicasting all messages to all networks 2025-03-18 10:52:34 +01:00
Matthias Grob 40c26e7880 17002_flightgear_tf-g2: translate FW_THR_CRUISE to FW_THR_TRIM (#24523)
See 461d0561b8
2025-03-17 17:18:46 +01:00
Matthias Grob f69361f742 vtol_type: remove unused variable and function for deceleration pitch integral (#24419)
This functionality was moved to FlightTaskTransition and the variable was forgotten in 079b756f1b
2025-02-26 13:37:21 +01:00
Matthias Grob ed9111ec49 Remove obstacle avoidance test with Gazebo classic and ROS 1 2025-02-18 14:33:16 +01:00
Matthias Grob 0b370ab5d3 Remove obstacle avoidance MAVLink Heartbeat check 2025-02-18 14:33:16 +01:00
Matthias Grob 4c2e69b2e6 estimatorCheck: only warn about GPS in modes that require a position but fail all modes if GPS required by configuration 2025-01-30 18:45:10 +01:00
Matthias Grob f142363575 HealthAndArmingChecks: allow to warn in certain modes and fail arming checks in other modes
Previously it was only possible to warn in all modes and fail none or fail and warn in certain modes.
2025-01-30 18:45:10 +01:00
Matthias Grob 7e47605871 batteryCheck: separate event messages for low, critical and emergency battery states 2025-01-29 15:32:47 +01:00
Matthias GrobandHamish Willee 165f644580 control_allocator: fix typo and use [0,1] instead of [0%, 100%] in slew rate description
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-01-27 08:43:11 +01:00
Matthias Grob c1cab2d4e0 control_allocator: add unit for slew rate and reword description 2025-01-27 08:43:11 +01:00
Matthias Grob af062c85eb Revert "FLightTaskAuto: limit nudging speed based on distance sensor"
This reverts commit 97cb933cff.
2025-01-21 09:59:47 +01:00
Matthias Grob f693fab7c8 rc_update params: remove comment about default static mixing
Was added back in 2014:
7441efde47
2025-01-17 08:18:42 +01:00
Matthias Grob e01fef755a Control allocation: make heli rpm control an optional build flag disabled by default
to save flash.
The rpm capture dirver is also disabled on default releases
2025-01-15 14:35:35 +01:00
Matthias Grob bc92008885 RpmControl: Better consider the case where there's no rpm measurement (anymore) 2025-01-14 14:55:34 +01:00
Matthias Grob b584f8381c Helicopter defaults: don't auto disarm so quickly after spoolup 2025-01-14 14:55:34 +01:00
Matthias Grob 5e2848312d Commander: start timer for auto disarm after spoolup 2025-01-14 14:55:34 +01:00
Matthias Grob 2506bd3b5d RpmControl: simplify the entire control logic 2025-01-14 14:55:34 +01:00
Matthias Grob 1c4325db6d RpmControl: split into cpp source file fixing includes 2025-01-14 14:55:34 +01:00
Matthias Grob 2772ae7e0e RpmControl: maximum rpm outliers are now caught by RpmCapture 2025-01-14 14:55:34 +01:00
Matthias Grob ddd410e9d8 RpmControl: remove status message because it by now only contains redundant information 2025-01-14 14:55:34 +01:00