Compare commits

..

661 Commits

Author SHA1 Message Date
Hamish Willee
ea3f7bcfb2 Copilot Review instructions: Drivers 2026-02-11 10:45:28 +11:00
Eric Katzfey
64e3cb16fa Removed VOXL2_IO: tag from all voxl2_io debug messages as they are redundant 2026-02-10 15:45:40 -07:00
Eric Katzfey
77d8e4f213 VOXLPM: Updated driver to publish battery status at 20ms intervals. Changed printf to PX4_INFO. 2026-02-10 11:46:44 -07:00
Balduin
ecf8191aad Battery: Declare fault on overtemperature
If the measured temperature exceeds the fixed threshold of 100 degC, a
fault is declared, causing batteryCheck to show a failsafe warning to
the user.
2026-02-10 13:44:46 +01:00
Jacob Dahl
3fb1459c33
ManualControl: fix payload power switch state when mapped with RC (RC_MAP_PAY_SW) (#26357)
* ManualControl: Payload Power Switch: default PAYLOAD_POWER_EN false if RC_MAP_PAY_SW is configured. Apply initial switch state for Payload Power

* make format

* ManualControl: init power_en in init()

* ManualControl: Apply payload power state on first switch receipt if not armed

* simplfy

* fix idefs

* simplify
2026-02-09 21:36:35 -09:00
Jacob Dahl
ee196fadb8
gps: ubx: add output rate parameter (#26388)
* gps: ubx: add parameter to configure module measurement rate (GPS_UBX_RATE)

* gps: update submodule

* submodule
2026-02-09 22:49:40 -07:00
Julian Oes
fd9abf76fd Fixup docs 2026-02-10 15:47:31 +13:00
Julian Oes
a98d68f919 AirBrainH743: use /fs/flash instead of /fs/microsd 2026-02-10 15:47:31 +13:00
Julian Oes
7d2d85e6ac AirBrainH743: reformat littlefs if required 2026-02-10 15:47:31 +13:00
Julian Oes
34845a62b0 AirBrainH743: add external I2C
This is for future/later board revisions.
2026-02-10 15:47:31 +13:00
Julian Oes
7715a4ab4c AirBrainH743: configure for active buzzer
We can't use passive buzzers because the timer to drive the PWM would
conflict with the motor outputs M7 and M8.
2026-02-10 15:47:31 +13:00
Julian Oes
ea2ca45cf9 boards: add support for Gear Up AirBrainH743 2026-02-10 15:47:31 +13:00
Jacob Dahl
14864814ef
gps: ubx: added jamming sensitivity parameter (#26386)
* gps: ubx: added jamming sensitivity parameter GPS_UBX_JAM_DET

* submodule

* gps: submodule to main
2026-02-09 17:43:39 -09:00
Julian Oes
3a6a57bd45 kakuteh7v2: use /fs/flash instead of /fs/microsd 2026-02-10 15:23:51 +13:00
Julian Oes
e0af9f4ef4 boards: add NAND flash logging support to KakuteH7v2
- Initialize W25N01GV NAND flash on SPI1 with littlefs.
- Enable BOARD_SMALL_FLASH_LOGGING for small flash handling.
- Increase logger buffer size for flash write performance.
2026-02-10 15:23:51 +13:00
Julian Oes
0294d4a794 dataman: increase stack size for littlefs
Increase stack size when using littlefs filesystem, which requires
more stack space than traditional filesystems.
2026-02-10 15:23:51 +13:00
Julian Oes
d411e1c40d logger: increase stack size for littlefs 2026-02-10 15:23:51 +13:00
Julian Oes
833e4536b7 nuttx: add support for NAND flash
This cherry-picks upstream commits adding NAND flash support for the
Winbond W25N specifically W25N01GV chip.

NAND flash is used together with littlefs, hence I updated that to 2.5.1
to match upstream NuttX.
2026-02-10 15:23:51 +13:00
Eric Katzfey
1b7e12cf90 VOXL_ESC: bringing the driver up to date with ModalAI latest. Includes new open loop "PWM" command handling. 2026-02-09 16:38:53 -07:00
Eric Katzfey
aacb7e35dd For VOXL flight controllers, Use DSP clock directly on Posix for CLOCK_MONOTONIC 2026-02-09 15:22:36 -07:00
Eric Katzfey
1dbee4100a uORB: Added a new uorb_shutdown function that is called during normal shutdown procedures. It will only
call into a new UORB COMMUNICATOR ICHANNEL shutdown interface if it has been configured, otherwise it
does nothing. This allows ICHANNEL implementations to pass on a shutdown indication to a remote processor.
Implemented the shutdown interface in the muorb module for VOXL flight controllers.
2026-02-09 15:21:41 -07:00
Nick
dbb00d500f Update src/modules/commander/failure_detector/FailureDetector.cpp
Prevent Buffer overflow
2026-02-09 18:08:26 +01:00
Matthias Grob
61a8ae80a6 FailureDetector: implement upper and lower current limit with offset 2026-02-09 18:08:26 +01:00
Matthias Grob
f8329ff80d FailureDetector: rework motor status check 2026-02-09 18:08:26 +01:00
Matthias Grob
b4b1b44c6a FailureDetector: consistent timestamp naming 2026-02-09 18:08:26 +01:00
Matthias Grob
f5a56ae42f escCheck: rework online check to properly report offline ESCs
previous to this
09d79b221f274523349a029e63ab4462e41d0c1c
set `esc_online_flags` e.g. for UAVCAN ESCs which specific one is online and that then got compared to a mask where the first `esc_count` bits were set.

So if only ESC 5 is mapped and online you get the message "ESC 156 offline" because `esc_online_flags = 0b1000` gets compared to `online_bitmask = 0b1` based on `esc_count = 1` and the motor index is `esc[0].actuator_function = 0` wrapped using `0 - actuator_motors_s::ACTUATOR_FUNCTION_MOTOR1 + 1 = 156`.
2026-02-09 18:08:26 +01:00
Marco Hauswirth
c4535683a7 ekf2 unit-tests: adapt to strict GNSS checks on ground 2026-02-09 10:59:58 +01:00
Matthias Grob
f9cdd095b8 gnss_checks: always run strict checks on ground
With the goal to never take off if the GNSS solution is not fullfilling the configured requirements still not stopping to use it in case it degrades mid air.
2026-02-09 10:59:58 +01:00
Matthias Grob
61c990c5ee estimator_interface: remove unused getter 2026-02-09 10:59:58 +01:00
Beat Küng
8115cf2597 docs: update link for px4 ros2 interface lib python api docs 2026-02-09 10:03:55 +01:00
Eric Katzfey
eb43d21730 voxl2_io: Added UART passthru 2026-02-08 20:51:31 -07:00
Eric Katzfey
5e54d727fc voxl_esc: Limit frequency of UART passthru writes to 20Hz 2026-02-08 20:51:31 -07:00
Andrew Brahim
ecb222c7e7
uavcannode: implement hardpoint commands (#26334)
* implement cannode hardpoint commands

Signed-off-by: dirksavage88 <dirksavage88@gmail.com>

* Update src/drivers/uavcannode/Subscribers/HardpointCommand.hpp

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

* Update src/drivers/uavcannode/Subscribers/HardpointCommand.hpp

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

* add hardpoint sub to ark cannode, simplify handling of hardpoint broadcast

Signed-off-by: dirksavage88 <dirksavage88@gmail.com>

---------

Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2026-02-08 18:36:11 -09:00
Aaron1356
a5a7dd802c
[Feature] Adding I2C driver for the GRF250 and GRF500 models (#26425)
* Adding the GRF I2C driver

* I2C Driver Working

* Removing a lot of unnecessary code

* fixing names

* Changing the i2c Driver to be in the lightware laser

* remove the old driver

* formatting fix

* Adding Ligthware GRF to documentation
2026-02-06 15:26:13 -05:00
Silvan
7b72335876 UI: remove isAdvanced=false for Altitude Cruise
Signed-off-by: Silvan <silvan@auterion.com>
2026-02-06 18:13:36 +01:00
Beat Küng
446895fdc0 Revert "failsafe: prevent Hold when no action is taken (#26383)"
This reverts commit 40dc011d82f5b79c11718992200e60c8534929ca.

Not needed anymore
2026-02-06 13:00:08 +01:00
Beat Küng
3eb0255922 fix commander: do not trigger Hold (delay) when failsafe action is Warn
The new unit test failed before and passes with the fix.
2026-02-06 13:00:08 +01:00
Hamish Willee
271d3f01a3
Update mavlink/mavlink to latest[A (#26410) 2026-02-06 08:17:44 +13:00
Hamish Willee
e8fca6e991
uORB docs parser (#24977) 2026-02-05 17:58:45 +11:00
Beniamino Pozzan
de1314f995
docs: fix badge for UXRCE_DDS_FLCTRL (#26375)
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2026-02-04 09:40:32 +11:00
Julian Oes
1bfc0da258
[Sponsored by CubePilot] Get CI to pass all boards (#26402)
* kakutef7: try to save more flash
2026-02-03 16:46:36 -05:00
ch3at
41966774c2
docs: fix incorrect links in config/safety.md (#26355)
Fixed incorrect links to Acro mode
2026-02-03 20:38:43 +00:00
Jacob Dahl
82e3322e0c
vtxtable: fix KConfig type from string to bool (#26359) 2026-02-03 13:14:47 +13:00
PX4 Build Bot
e2e89def7e
New Crowdin translations - zh-CN (#26398)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-02-02 08:19:45 +11:00
PX4 Build Bot
d5c4ace615
New Crowdin translations - uk (#26397)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-02-02 08:19:19 +11:00
Levi Todes
390c9d6ccf
SHT3X driver: change state timer variable from uint32 to uint64. (#24264)
Prevents current behaviour of repeated entry into 'init' state
and associated log spamming after +-72 minutes.

Signed-off-by: LeTo37 <levitodes2019@u.northwestern.edu>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2026-01-31 17:57:39 -09:00
Jacob Dahl
63c4f4ac3e
uavcannode: publisher: Fix2: fix eph/epv off by sqrt bug (#26389) 2026-01-30 10:31:38 -07:00
Nick
40dc011d82
failsafe: prevent Hold when no action is taken (#26383) 2026-01-30 14:09:56 +01:00
Pernilla
8d97013822 Mavlink: increase stream rate of GIMBAL_DEVICE_ATTITUDE_STATUS 2026-01-30 13:06:58 +01:00
mahima-yoga
4e59a060a8 HomePosition: only set home position using GNSS if bit 0 in EKF2_GPS_CTRL is active
If the vehicle position is not set by GNSS, then the home position should not be either.
2026-01-30 11:20:34 +01:00
tompsontan
f8c1e8b81f
Improve QMC5883P magnetometer stability by optimizing OSR and ODR settings. (#26350) 2026-01-29 19:38:20 -09:00
Nick
6be1a14e06
docs: COM_FLTT_LOW_ACT default fixed (#26374) 2026-01-29 15:21:45 -09:00
Julian Oes
3075724f9e
jmavsim: update submodule (#26369)
This contains:
https://github.com/PX4/jMAVSim/pull/140

which updates dependencies and adds macOS arm64 support.
2026-01-30 10:19:38 +13:00
Eric Katzfey
e37a216393
QURT/SERIAL: Undo the breaking changes from commit 17f3db9231350caf86d9f0af6591f66044d9829c. (#26382)
A check was added for a non-existant parameter. This commit removes those.
2026-01-29 12:03:18 -09:00
Eric Katzfey
90fec17427
CRSF_RC: Replace strlcpy with strncpy and null termination. strlcpy is a BSD extension and is not part of standard C/C++. (#26381)
It's typically not available in glibc's <string.h>.
2026-01-29 12:02:36 -09:00
ttechnick
03264ce1a7 failsafe: prevent switch offboard -->pos without RC 2026-01-29 18:21:00 +01:00
Daniel Honies
ac4f419b50 Update 4004_gz_standard_vtol
VT_F_TRANS_THR at 0.3 always triggers front transition timeout as the vehicle does not accaelerate quickly enough. With the param set to 1.0 it works.
2026-01-29 18:07:32 +01:00
Phil-Engljaehringer
193a4478ed fix: adjusted probe function to new revision of TLA2528 (and add status function) 2026-01-29 18:04:25 +01:00
Phil-Engljaehringer
744548e9f2 fix: use correct address passed with -a flag 2026-01-29 18:03:04 +01:00
Beat Küng
b9bd820186 docs: mention python bindings in ros lib 2026-01-29 08:20:03 +01:00
Beat Küng
e0f1022681 ci: ignore python packages in px4-ros2-interface-lib
Due to build issues with very old ROS version
2026-01-29 08:20:03 +01:00
Hamish Willee
4c184f309c
docs: Max code line length 140 chars (#26368) 2026-01-29 13:43:22 +11:00
Sindre Meyer Hegre
adf1bab518
docs: add link to masther thesis for mc_nn_control (#26279) 2026-01-29 13:10:21 +11:00
Claudio Chies
f5c5f2ed8c
Update FLARM link to the correct product page (#26361)
* Update FLARM link to the correct product page

* Update docs/en/peripherals/adsb_flarm.md

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-01-29 12:48:30 +11:00
Julian Oes
09d3f05bcd
gazebo-classic: update for CI test fixes (#26335)
The fix:
https://github.com/PX4/PX4-SITL_gazebo-classic/pull/1084
seems to help with test failures locally.
2026-01-29 06:05:55 +13:00
Loic Fernau
b7d9876cd9
Added missing Defaults to VEHICLE_CMD_DO_SET_MODE (#26291)
* Added missing Defaults to VEHICLE_CMD_DO_SET_MODE

* Made Format
2026-01-29 05:36:21 +13:00
Julian Oes
bd6b0699cc Fetch metadata files from master not main
For flash constrained builds, the component metadata files are
downloaded directly from s3. For the main branch, these files are
currently still uploaded to master. Therefore, we also need to reference
master and not main.

This fixes the actuators tab in QQC for KakuteH743-Wing which is one of
the boards that did not exist in source when we briefly uploaded to main
before reverting back to master, presumably for QGC compatibility.
2026-01-28 09:43:28 +01:00
Jonas Eschmann
684ba28fbf
Update iframe source to fix mixed content warning (#26309) 2026-01-28 17:54:35 +11:00
Hamish Willee
1797ce4e88
Fix round trip hello_sky translation (#26360) 2026-01-28 16:59:40 +11:00
PX4 Build Bot
05517935dc
New Crowdin translations - ko (#26246)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-28 16:43:34 +11:00
PX4 Build Bot
4af33cef43
New Crowdin translations - uk (#26247)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-28 16:43:23 +11:00
PX4 Build Bot
c90095e8b4
New Crowdin translations - zh-CN (#26248)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-01-28 16:43:18 +11:00
Jacob Dahl
65cedc8bf8
px_uploader: add ARK PID/VIDs (#26358) 2026-01-27 15:38:30 -09:00
Matthias Grob
9be7585add
SagetechMXS: remove two unused subscriptions (#26356)
Randomly saw that there's a publication and subscription for the same topic and
it is in this case indeed useless.
2026-01-27 11:48:23 -09:00
tompsontan
2282330102
board:fixed ap-h743r1 bmi270 rotation; update internal mag rotation. (#26341) 2026-01-27 10:30:06 -09:00
Balduin
0676647d8a
ControlAllocator: Periodically spin MC motors to shed ice (#26322)
This feature periodically spins the unused motors on VTOL airframes, to
break off ice that has built up in the motor while it is still feasible
to do so. Each ice shedding event sends a motor ouput of 0.01 to the
unused motors for 2 seconds.

Configured by `CA_ICE_PERIOD`, the duration of the entire cycle. Set to
0 to disable.
2026-01-27 11:15:24 +01:00
Balduin
50bb31491b
AirspeedModule: Change to throttle without battery scaling (#26347)
rather than the vehicle_thrust_setpoint used previously, which includes
battery scaling which we don't want, neither for synthetic airspeed nor
for the airspeed validator.
2026-01-27 11:03:44 +01:00
Matthias Grob
cac3c3c133 boot script: start uavcan and zenoh before logger
because they publish optional topics which need to be advertised before logger starts otherwise they do not get logged!
2026-01-27 10:06:22 +01:00
Nick
c2490e01a5
tiny uavcan optimizations (#26344)
Reduce number of hrt_absolute_time() calls and node_id.get()
2026-01-27 09:06:18 +01:00
Marin D
01d8113f8b
modify: remove xtensa-tarfile after installation (#26326)
Signed-off-by: Marin Doetterer <marin@auterion.com>
2026-01-26 11:33:27 -09:00
Niklas Hauser
091ac918b1
[vtx] Remove unused uORB messages (#26345) 2026-01-26 11:31:55 -09:00
Niklas Hauser
c0c265cd1f [vtx] Add VTX driver with Tramp and SmartAudio support 2026-01-26 11:05:22 +01:00
Julian Oes
fad4450d7d
Jenkins: pin emscripten version (#26339)
This would match GitHub action and hopefully fix CI.
2026-01-25 12:56:17 -08:00
David Meng
1cfab8feb2
mavlink: odometry: Initialize the covariance matrix to 0 to prevent the entire matrix from becoming invalid after mavros performs coordinate transformation. (#26321) 2026-01-24 12:52:13 -09:00
Tarmo Tänav
e2864e521f
Fill TC_M0_ID in offboard thermal calibration script (#26290) 2026-01-23 15:47:27 -09:00
Julian Oes
9460625c99
Tools: rewrite uploader script (#26310)
* Tools: rewrite uploader script

This adds a script called px4_uploader.py which is a complete rewrite
using Claude Code of px_uploader.py.

The main improvements over the previous px_uploader.py script are:
- Separate smaller classes instead of one big uploader class.
- Easier debugging with --verbose or --debug flags.
- Nicer progress animation.
- No more hard to debug Exception swallowing over multiple levels.
- Auto-detection and looping of devices, removing the functionality from
  cmake.
- Auto-detection of PX4 devices by USB VID/PID.
- Add noninteractive mode
- Add JSON output mode
2026-01-24 11:09:17 +13:00
Silvan Fuhrer
32fc5cb5b9 RTL: only run initRtlMissionType() when new type is of any mission type
Otherwise it kills the mission when the type jumps from mission to Home.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2026-01-23 17:16:42 +01:00
Matthias Grob
7a6506f2dd rtl: redability suggestions from review, remove unused subscription 2026-01-23 17:16:42 +01:00
Silvan
a416437561 rtl: guard access of dynamically created _rtl_mission_type_handle behind if()
To avoid hard faults from NULL access.

Signed-off-by: Silvan <silvan@auterion.com>
2026-01-23 17:16:42 +01:00
Silvan
554b52c6a1 RTL: fix RTL_TYPE=2 with RTL_LAND_DELAY set to indefinitely wait
Signed-off-by: Silvan <silvan@auterion.com>
2026-01-23 17:16:42 +01:00
Silvan
fc992385a9 RTL: fix RTL_TYPE=2 stuck without valid mission
Signed-off-by: Silvan <silvan@auterion.com>
2026-01-23 17:16:42 +01:00
Silvan
0577a40440 RTL Direct: remove unnecessary sanitization
Signed-off-by: Silvan <silvan@auterion.com>
2026-01-23 17:16:42 +01:00
Matthias Grob
2239c10192 rtl: restructure findRtlDestination() to one flow 2026-01-23 17:16:42 +01:00
Matthias Grob
8117fce790 rtl: never set arbitrary yaw, initialize _destination and _last_position_before_link_loss with NAN 2026-01-23 17:16:42 +01:00
Matthias Grob
18c3d889fe rtl: keep rtl_status struct on stack 2026-01-23 17:16:42 +01:00
Matthias Grob
31c7d70342 rtl refactor: name destination "destination" 2026-01-23 17:16:42 +01:00
Matthias Grob
6386f10ba2 rtl: unify finding closest safe point and move finding the destination into the dedicated function returning the destination 2026-01-23 17:16:42 +01:00
Matthias Grob
deb9a1ad4e rtl: remove duplication for safe landing only in setRtlTypeAndDestination() 2026-01-23 17:16:42 +01:00
Matthias Grob
f685df32bc rtl refactor: make dependency of rtl_type in status clear 2026-01-23 17:16:42 +01:00
Matthias Grob
432b0e8c58 rtl: adhere to parameter member naming convention 2026-01-23 17:16:42 +01:00
Silvan
024b3d27ac RTL: add new RTL_TYPE to only allow returns to safe points or last link position
Do not allow RTL to Home or mission landings.

Signed-off-by: Silvan <silvan@auterion.com>
2026-01-23 17:16:42 +01:00
bresch
5d5e1db97f ekf2: update change indicator 2026-01-23 14:46:08 +01:00
bresch
d3da4fe608 ekf2 mag: clear mag_fault when healthy again 2026-01-23 14:46:08 +01:00
Jacob Dahl
76b58b6f0b
remove unused CTestConfig.cmake (#26333) 2026-01-22 15:07:38 -09:00
Atsunori Saito
75d7395daa
v6xrt: correct LED state read logic (#26316)
Move negation to return value instead of GPIO map argument for proper active-low handling.
2026-01-22 14:11:37 -09:00
David Meng
11f4d5c4e7
control_allocator: improve status output formatting (#26277) 2026-01-22 14:09:56 -09:00
Pernilla
522c15284f
Gimbal: (#26331)
* passing const reference instead to avoid the copy
* remove unused using declaration
2026-01-22 14:02:03 -09:00
Dmitry Ponomarev
93ab802202
add ability to control uavcan hardpoint by MAV_CMD_DO_GRIPPER (#19124)
* update uavcan hardpoint: add ability to use it via mavlink cmd and during mission and removed send_command() dedicated for usage via mavlink console

* uavcan hardpoint: allow gripper ID 0

---------

Co-authored-by: Andrew Brahim <35986980+dirksavage88@users.noreply.github.com>
2026-01-22 16:43:18 -05:00
Jacob Dahl
3381b270ea
uavcannode: add CANNODE_PUB_BAR and CANNODE_PUB_MAG parameters to optionally disable baro and mag data publication (#26324) 2026-01-22 09:59:59 -08:00
Julian Oes
aed8a78c1d
mavlink: accept broadcast commands (#26311)
I think - per MAVLink spec - PX4 ought to accept broadcast commands
which are aimed at system ID 0, so anyone/all.
2026-01-23 06:55:34 +13:00
Niklas Hauser
9cf07c2452 [logger] Ensure msg buffer is large enough for all uORB message headers 2026-01-22 17:58:04 +01:00
bresch
230276540f estimator_status_flags: remove useless logged flags
Those flags are not so useful for log analysis and can be found in the
aid_src topics
2026-01-22 17:58:04 +01:00
Silvan
52308735a7 px4/v6x: remove AUAV differential pressure to save flash
Signed-off-by: Silvan <silvan@auterion.com>
2026-01-22 15:14:54 +01:00
alexcekay
b1c2820d69 gps: update drivers submodule 2026-01-22 15:02:30 +01:00
alexcekay
1df5e62cc3 gps: fix rate reading on UART 2026-01-22 15:02:30 +01:00
bresch
2ad25570ee do not check pointer validity before deleting
Deleting a nullptr has no effect
(this addresses a clang-tidy error)
2026-01-22 10:03:24 +01:00
tompsontan
b8577c753f
board:changed ap-h743r1 dma allocation and internal mag to qmc5883p. (#26112)
*Mag Sensor changed in the docs and the board
*DMA Allocation changed for the board
2026-01-22 01:06:51 -05:00
Baardrw
c9e3118fea
Driver: fix mb12xx driver set address feature (#26282)
* fixed set_address function
2026-01-22 00:45:45 -05:00
William Reynaldi Solichin
55e0810d8d
Expose u-blox min elevation, min SNR and DGNSS timeout parameters RTK Fix Improvements (#25720)
* Exposing u-Blox min CNO, min elevation, and DGNSS timeout for RTK Fix Improvement

* update gps submodule

---------

Co-authored-by: Julian Oes <julian@oes.ch>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-01-21 14:50:36 -09:00
Alexander Lerach
4ac7853479
auterion autostarter: Added autostart for PWM_EXPANDER, generalized c… (#25925)
* auterion autostarter: Added autostart for PWM_EXPANDER, generalized code, renamed module

* auterion autostarter: Enable on v6s, robustify error handling

* review comments
2026-01-21 19:05:09 +01:00
Jacob Dahl
06db25c078
boards: remove CONFIG_COMMON_OPTICAL_FLOW from all non-CANnode hardware (#26315) 2026-01-21 10:51:09 -05:00
Eurus
5635d639fe
rtl_mission_fast: supplement to #24115 (#26199)
Co-authored-by: EurusAkai <1826983968@qq.com>
2026-01-21 09:49:31 +01:00
Jacob Dahl
bbce142129
boards: ark_pi6x: add rover target (#26296) 2026-01-20 13:35:42 -09:00
Julian Oes
475715818b
Tools: fix make format (#26298)
These two submodules were touched when they shouldn't be.
2026-01-19 17:23:06 -09:00
Julian Oes
02103b9100
mavlink: fix deadlock on USB disconnect/reconnect (#26297)
Commit 5fe82aa added mutex protection in ~Mavlink() to fix a race
condition when start_helper() deleted an instance without holding the
mutex. However, this caused a deadlock because stop_command() and
destroy_all_instances() already hold mavlink_module_mutex when calling
delete, and the mutex is non-recursive.

Fix by moving instance cleanup to the callers:
- All callers now hold the mutex and remove the instance from
  mavlink_module_instances BEFORE calling delete
- The destructor no longer touches mavlink_module_instances
- Event handoff remains in destructor (works because `this` is already
  removed from the list when destructor runs)

This hopefully fixes the original race condition while avoiding the
deadlock that caused USB mavlink to hang on reconnect.
2026-01-19 12:25:50 -09:00
mahima-yoga
25de111a4a FWModeManager: improve fixed-wing landing flare stability
- Ramp pitch_min and pitch_max from current pitch to flare minimum
- Ramp throttle from current setpoint to idle
2026-01-19 17:58:20 +01:00
mahima-yoga
9169f9cd44 Revert "FWModeManger: remove throttle spike during flaring by waiting with height rate change"
This reverts commit 259e7d1d5373dbad1ee27b1d72d1ae66394c4ea3.
2026-01-19 17:58:20 +01:00
Alexander Lerach
273766a4ea
drivers: auav, read sensor eeprom to get cal range (#26294)
* drivers: auav, read sensor eeprom to get cal range

* added review feedback
2026-01-19 15:21:18 +01:00
Ryan Johnston
f98fdbc452
FW Takeoff: fix loiter altitude not set in some cases
* Fix Takeoff mode to respect MIS_TAKEOFF_ALT

Takeoff mode never transitions to hold after takeoff alt.

* style: run make format
2026-01-16 17:32:15 +01:00
jonas
edc2536bdd move EKF2 ring buffer to the lib folder 2026-01-16 11:51:37 +01:00
Silvan
e90f8b500f v5: remove UUV to save flash
Signed-off-by: Silvan <silvan@auterion.com>
2026-01-16 11:33:45 +01:00
Pernilla
fbdc31b60c gimbal: add filter 2026-01-16 11:33:45 +01:00
Pernilla
392002f671 gimbal-bug-fix: store angle setpoints for next iteration 2026-01-16 11:33:45 +01:00
Pernilla
c0c7f6ec40 gimbal: report relative and absolute angles 2026-01-16 11:33:45 +01:00
Pernilla
8c5c4a0504 gimbal: update gz gimbal 2026-01-16 11:33:45 +01:00
Pernilla
0da6efa52d gimbal: remove offset as it should be accounted for in PWM driver 2026-01-16 11:33:45 +01:00
Pernilla
9de10d672c gimbal: mavlink streamed angular ranges should be radians 2026-01-16 11:33:45 +01:00
Pernilla
0fa5a83409 gimbal: account for non zero symmetrical angular ranges 2026-01-16 11:33:45 +01:00
Pernilla
aed175451a gimbal: add pitch stabilization 2026-01-16 11:33:45 +01:00
Kimminkyu
df42ef84f1
Update NuttX fmu-v6x config use with Zenoh (#26213) 2026-01-15 11:40:09 -09:00
Baardrw
fe30ef7f16
GZ: Update GZMixingInterfaceESC to support more than 8 ESCs (#25081)
* Changed GZMixingInterfaceESC to GZMixingInterfaceMotor
- GZMixingInterfaceMotor checks if there are more than 8 motors configured if its less than 8 it behaves exactly the same as GZMixingInterfaceESC, else it behaves as a PWM motor interface
- This change allows drones with more than 8 motors to be simulated by Gazebo

Fixes #25080

* code quality fix

* Changed GZMixingInterfacMotor back to GZMixingInterfaceESC and changed variable names to match ESC terminology

* formatting issue resolved

* updated interface to support 16 ESCs, allowing the first 8 to report telemetry

* rebased
2026-01-15 10:37:35 -09:00
Beniamino Pozzan
0b834dd0e7
docs(uxrce_dds): add docs for UXRCE_DDS_FLCTRL (#26242)
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2026-01-15 00:51:35 -09:00
Farhang
8e658a6e2d
github: simplify bug report issue template (#26191)
* Simplify bug report issue template to reduce clutter

- Reduced from 11 fields to 2 consolidated fields
- Enabled blank issues for flexibility
- Combined optional fields into single "Flight Log / Additional Information" section
- Added helpful tips at top instead of separate required fields
- Eliminates empty field clutter in submitted issues while maintaining guidance

* Fix inconsistent YAML indentation in bug report template
2026-01-14 09:59:52 -08:00
Jonas Eschmann
db2c6b2abe
feature: Integrating the RAPTOR foundation policy (#26082)
* moving raptor

bump

compiles and raptor mode appears

hovering with RAPTOR seems to work

Using Raptor to execute offboard commands works (using multirobot f03825a5795a77c5a095f799eeb8e0b646fe7176 to feed the trajectory_setpoint). Requires more testing

simplified rotmat

runtime inference frequency multiple

arming request response reflects actual readiness

adjusting to fit IMU gyro ratemax

relaxing control timing warning thresholds for SITL

Using mode registration to signal if offboard commands should be forwarded to trajectory_setpoint instead of just hardcoding vehicle_status.nav_state == vehicle_status_s::NAVIGATION_STATE_OFFBOARD

adopting new "request_offboard_setpoint" in raptor module

replace offboard seems good

mc_raptor: overwrite offboard parameter

separate raptor config

addendum

Raptor off by default

RAPTOR readme

Loading raptor checkpoint from tar works.

check if load was successful

refactoring: cutting out the pure C interface to allow direct testing of the policy input/output behavior from the file, without fully loading it into memory first

adapter not needed anymore

ripping out test observation mode (not used in a long time)

fixing warnings

bump RLtools to fix the remaining warnings

Loading RAPTOR checkpoint from sdcard seems to work on FMU-6C

embedding Raptor policy into flash works again

also printing checkpoint name when using the embedded policy

cleaner handling of the checkpoint name

back to reading from file

ripping out visual odometry checks

cleaner

more debug but no success

bump rlt

bump

pre next rebase

we can publish the no angvel update because we latch onto it with the scheduled work item anyways

this kind of runs on the 6c

still bad

SIH almost flying

saving stale traj setpoint yaw

new error. timestamp not the problem anymore

bump rlt; SIH works with executor

shaping up

bumping blob (include tar checkpoint)

cleaning up

fixing formatting

update readme

* moving raptor

bump

compiles and raptor mode appears

hovering with RAPTOR seems to work

Using Raptor to execute offboard commands works (using multirobot f03825a5795a77c5a095f799eeb8e0b646fe7176 to feed the trajectory_setpoint). Requires more testing

simplified rotmat

runtime inference frequency multiple

arming request response reflects actual readiness

adjusting to fit IMU gyro ratemax

relaxing control timing warning thresholds for SITL

Using mode registration to signal if offboard commands should be forwarded to trajectory_setpoint instead of just hardcoding vehicle_status.nav_state == vehicle_status_s::NAVIGATION_STATE_OFFBOARD

adopting new "request_offboard_setpoint" in raptor module

replace offboard seems good

mc_raptor: overwrite offboard parameter

separate raptor config

addendum

Raptor off by default

RAPTOR readme

Loading raptor checkpoint from tar works.

check if load was successful

refactoring: cutting out the pure C interface to allow direct testing of the policy input/output behavior from the file, without fully loading it into memory first

adapter not needed anymore

ripping out test observation mode (not used in a long time)

fixing warnings

bump RLtools to fix the remaining warnings

Loading RAPTOR checkpoint from sdcard seems to work on FMU-6C

embedding Raptor policy into flash works again

also printing checkpoint name when using the embedded policy

cleaner handling of the checkpoint name

back to reading from file

ripping out visual odometry checks

cleaner

more debug but no success

bump rlt

bump

pre next rebase

we can publish the no angvel update because we latch onto it with the scheduled work item anyways

this kind of runs on the 6c

still bad

SIH almost flying

saving stale traj setpoint yaw

new error. timestamp not the problem anymore

bump rlt; SIH works with executor

shaping up

bumping blob (include tar checkpoint)

cleaning up

fixing formatting

update readme

updating gitignore

* fixing format and declaring submodules as cmake dependencies

* adding uORB message documentation

* fixing comment alignment

* Adding option to restrict mc_raptor to not listen to the trajectory_setpoint (use the position and yaw at activation time as reference instead)

* bump RLtools; relax timing thresholds and adding real world readme

* smooth traj tracking performance

* Measuring trajectory_setpoint timing (providing stats in raptor_status); reverting accidental .gitignore modification

* More ideomatic way of setting the path to the policy checkpoint

* Reset trajectory_setpoint on raptor mode activation

* Adding internal trajectory generation (feeding trajectory_setpoint over Mavlink is too noisy). Quite agile trajectory tracking, good performance

* stable flight

* Update msg/versioned/RaptorInput.msg

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

* adopting message formatting conventions

* sort raptor.px4board

* Archiving RegisterExtComponentRequestV1.msg

* Add message versioning for VehicleStatus v2 and RegisterExtComponentRequest v2

* fixing formatting

* making internal reference configurable via command

* RAPTOR docs wip

* raptor internal reference documentation

* Finishing RAPTOR docs first draft

* adding logging instructions

* Fixing missing command documentation test error

* fixing format

* adding motor layout warning

* raptor minimal subedit - prettier, images etc

* Improve intro

* Fix up Neural_Networks version

* Mentioning "Adaptive" in the RAPTOR documentation's title

* Adding clarifications about the internal reference trajectory generator

* Removing "foundation policy" wording

* Fixing new-line check

* Removing redundant (evident through directory hierarchy) raptor_ from filenames

* Unifying Neural Network docs (mc_nn_control and mc_raptor) under the "Neural Network" topic

* Fix to standard structure

* Making the distinction between mc_nn_control and mc_raptor more clear and fixing the comparison table

* Removing trajectory_setpoint forwarding flag from external mode registration request and from the vehicle status

* Trivial layout and wording fixes

* fixing docs error

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-01-14 09:47:47 -08:00
mahima-yoga
95b8328162 FixedWingLandDetector: force to landed during runway takeoff 2026-01-14 17:01:11 +01:00
mahima-yoga
6de6abfb64 RunwayTakeoff: add the RunwayTakeoffState to the FixedWingRunwayControl.msg 2026-01-14 17:01:11 +01:00
jmackay2
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
fakerror
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
Pascal
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
Claudio Chies
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 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 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 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 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 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 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 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 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
Alex Klimaj
3ef13da044
Adds ARKV6X to supported Ethernet controller list (#26165)
Documents ARK Electronics ARKV6X as a supported flight controller
for Ethernet setup, improving clarity for users seeking compatible hardware.
2025-12-24 11:00:36 +11:00
CUAV Chen
161b530247
cuav_fmu-v6x: cuav-v6x_v2 iim42652 Sensor enable external clock (#26133) 2025-12-22 01:24:55 -05:00
Jacob Dahl
b5c0867101 airframes: exclude ark_fmu-v6x 2025-12-19 11:40:17 -09:00
PX4 Build Bot
ca6d257ed8
New Crowdin translations - zh-CN (#26148)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-19 08:52:57 +11:00
Nick
c51502781f
ekf2: revent yaw spikes on reset (#25972) 2025-12-18 09:08:44 -09:00
Jacob Dahl
339a0b40af airframes: exclude px4_fmu-v6x on 6002_draco_r 2025-12-18 08:52:17 -09:00
Jacob Dahl
d2aa1b801c airframes: exclude px4_fmu-v6x on 4052_holybro_qav250 2025-12-18 08:52:17 -09:00
Jacob Dahl
26d847e6e7 airframes: exclude px4_fmu-v6x on 4016_holybro_px4vision 2025-12-18 08:52:17 -09:00
Jacob Dahl
1cf2dc8791 airframes: exclude px4_fmu-v6x on 17002_TF-AutoG2 2025-12-18 08:52:17 -09:00
Jacob Dahl
209a9935e7 airframes: exclude px4_fmu-v6x on 17003_TF-G2 2025-12-18 08:52:17 -09:00
Jacob Dahl
0fa667fd92 airframes: exclude px4_fmu-v6x on 4053_holybro_kopis2 (uses Kakute FC) 2025-12-18 08:52:17 -09:00
Marco Hauswirth
bbf32a537e
EKF2: Improve Manual Position Reset Handling (#25885)
* reset by fusion:
* state correction with tiny observation variance
* covariance matrix upate with correct observation variance

* reset wind to 0 on hard-reset during global-position-reset
increase gate

* adjust unittest: velocity gets now reset on resetGlobalPosToExternalObservation
2025-12-18 15:21:09 +01:00
Matthias Grob
3e425210e0 Hysteresis: enable initializing arrays with default constructor initial state false 2025-12-18 13:29:40 +01:00
Matthias Grob
f25997a15b RoverLandDetector: move static hysteresis configuration to constructor 2025-12-18 13:29:40 +01:00
Matthias Grob
e132568430 FixedWingLandDetector: remove useless 0 delay away from landed 2025-12-18 13:29:40 +01:00
bresch
6195629373 ekf2: add test for external wind reset 2025-12-18 11:37:10 +01:00
bresch
2c044b327e ekf2: refactor airspeed starting logic
- avoids using invalid velocity estimate to reset wind
- do not set fusion flags if starting was impossible
- reset wind to 0 before resetting velocity using airspeed if wind data
  is outdated
2025-12-18 11:37:10 +01:00
Hamish Willee
b7ffd6ea2c
uORB doc standard - add page (#25878) 2025-12-18 17:08:41 +11:00
Jacob Dahl
b26db22c1a
docs: ark_flow: add EKF2_RNG_CTRL (#26130) 2025-12-18 14:21:24 +11:00
Hamish Willee
6f18ff8ff9
Add copilot reviewer instructions for docs (#26141) 2025-12-18 14:07:05 +11:00
jobs
f224b81eec
boards: modify vendor ID NarinFC-H7(#26117)
- CONFIG_CDCACM_PRODUCTID : 0x0047
  - CONFIG_CDCACM_VENDORID : 0x3fc5
2025-12-17 21:46:56 -05:00
isentek-webbyeh
b537601b7a
driver: ist8310: add IST8310J device ID support (#26134)
* driver: ist8310: add IST8310J device ID support and cross-axis compensation

IST8310J shares the same register map and initialization sequence as IST8310.

This change extends the existing IST8310 driver to:
- Accept the IST8310J device ID during probe and reset
- Load factory cross-axis calibration data from OTP
- Apply cross-axis compensation to raw magnetometer samples

The cross-axis compensation corrects factory axis misalignment only and
does not replace PX4 runtime magnetometer calibration.

Tested on Raspberry Pi using I2C with both IST8310 and IST8310J devices.

Signed-off-by: webbyeh <webbyeh@isentek.com>

* driver: ist8310: add IST8310J device ID support

IST8310J shares the same register map and initialization sequence as IST8310.

Factory cross-axis compensation support was evaluated but has been removed
in this revision due to flash size constraints on embedded targets. The
driver now focuses on device identification and stability, while relying on
the existing PX4 magnetometer calibration framework.

This commit also addresses review feedback by caching the WAI register value
to avoid redundant I2C reads during the reset wait state.

Tested on Raspberry Pi using I2C with both IST8310 and IST8310J devices.

Signed-off-by: webbyeh <webbyeh@isentek.com>

* Fix formatting issues in IST8310.cpp

---------

Signed-off-by: webbyeh <webbyeh@isentek.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-12-17 17:14:17 -09:00
Patrik Dominik Pordi
e01c4b0692
Ark esc docs + restructure top level ESC docs (#26132) 2025-12-18 10:28:34 +11:00
Jacob Dahl
ca43fc8f5a
workflows: remove stale comment to reduce notification spam (#26140) 2025-12-17 12:39:54 -09:00
Jacob Dahl
11cac778ba ark: fpv: use same magnetometer subset as v6x 2025-12-17 11:13:42 -09:00
Jacob Dahl
441892b33f ark: v6x: remove MMC5983MA driver to save flash 2025-12-17 10:53:47 -09:00
Jacob Dahl
1d5a8531e4 update gps submodule 2025-12-17 10:33:21 -09:00
Jacob Dahl
e71348967d
gps: fix RTCM injection and enable MSM7 for PPK (#26095)
* serial: add txSpaceAvailable function

* serial: txSpaceAvailable and bytesAvailable fixups

* msg: GpsDump: increase queue from 8 to 16 and replace instance with device_id

* lib: gnss: add RTCM parsing library. Generated by Claude Code.

* gps: fix RTCM injection to use inject-before-read pattern as before. Add RTCM parser to frame-align injection. Drain GpsInjectData uORB queue into RTCM parser buffer and then inject. Add GPS_UBX_PPK parameter to enable MSM7 output from the GPS module (rather than the default of MSM4) which is required for PPK workflows.

* gps: replace PX4_WARN with perf counters
2025-12-17 10:20:00 -09:00
Jacob Dahl
fbe49db571
uavcannode: publisher: MovingBaseLine enhancements (#26092)
* uavcannode: publishers: MovingBaselineData: publish all GpsInjectData updates during BroadcastAnyUpdates. Check and report data loss via uorb generationcounter. Only registerCallback outside of the loop.

* remove unnecessary include
2025-12-17 10:18:17 -09:00
Jacob Dahl
4b36cfccfc
uavcan: gnss: MovingBaselineData subscriber (#26094)
* msg: GpsDump: increase queue from 8 to 16 and replace instance with device_id

* uavcan: gnss: MovingBaselineData subscriber for RTCM logging for PPK. Add uORB generation tracking to detect data loss on RTCM injection.

* add instance TODO
2025-12-17 10:17:56 -09:00
Jacob Dahl
699ec30c9c
logger: gps_dump non-optional (#26096) 2025-12-17 09:59:38 -09:00
Jacob Dahl
e6c49edd20
docs: battery: clarify BAT${i}_SOURCE parameter documentation (#26071)
* docs: battery: clarify Power Module option to state that it works additionally for onboard Analog

* Update src/lib/battery/module.yaml

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

* Update src/lib/battery/module.yaml

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

* Update src/lib/battery/module.yaml

* Apply suggestions from code review

* Update msg/versioned/BatteryStatus.msg

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-12-17 09:58:41 -09:00
Alexander Lerach
cb6bdee4c2
boards: v6x, remove MS5611 driver to save flash (#26138) 2025-12-17 09:57:34 -09:00
Phil-Engljaehringer
3438d593a1
drivers: MCP23009 & MCP23017 shared code base (#25924)
* Implemented driver for MCP23017

* fixed compatability with mcp23009. (naming of instantiated GPIO-Devices)

* removed some comments

* removed even more comments

* commented out instatntiation of driver since it will not be used with v6x

* removed last useless comments

* re-activated gpio_mcp23009 driver, removed useless comments and empty lines

* removed empty lines at the end of mcp23017.cpp

* removed empty line

* Implemented driver for MCP23017

* fixed compatability with mcp23009. (naming of instantiated GPIO-Devices)

* removed some comments

* removed even more comments

* commented out instatntiation of driver since it will not be used with v6x

* removed last useless comments

* re-activated gpio_mcp23009 driver, removed useless comments and empty lines

* removed empty lines at the end of mcp23017.cpp

* removed empty line

* basic working implementation

* first improved driver version with shared code base for MCP23009 & MCP23017 (built as state machine with sanity checks)

* removed unused imports

* changed module name from MCP to MCP230XX

* removed debug print statements

* adjusted auto start command of driver

* removed comments

* -added seperate main functions for both derivative modules (mcp23009 and mcp23017)

* compile common functions as shared library in src/lib/drivers

* fixed cleanup of modules

* ->unclean working version with shared common library

* used make format

* working & cleaned version

* -> Added CallbackHandler to be able to use multiple reading GPIO-expanders simultaneously
-> Removed old mcap23009 calls and pin registrations
-> Adjusted GpioIn.msg to contain MAX_INSTANCES

* ->removed unused imports
->used make format

* Fix: Re-enabled platform_mcp_gpio for accton-godwit, cuav, fmu-v5x

* Fix: enabled platform_mcp_gpio in px4/fmu-v5x

* added depency to fmu-v5x

* Fix: removed new lines

* Fix: fixed linker errors

* removed unused linkage against mcp-library

* Made mcp start calls consistent for fmu-v5x and fmu-v6x

* moved logging of comm errors to read/write function directly

* added perf_count for sanity_check

* removed error message

* ensured member variables follow naming convention

* added retries to probe function

* simplyfied state-logic

* add break to terminate loop early

* ensured clean state when register_gpios() fails

* add registered-flag to pins

* used path from top dir instead of relative path in CMakeLists

* used constexpr to set parameters instead of calculating them at runtime

* style: used make format

* fix: corrected i2c_bus assignment

* style: init input of callbackhandler to 0

* fix: mark pin as registered if successful

* style: made arguments const type

---------

Co-authored-by: Alexander Lerach <alexander@auterion.com>
2025-12-17 17:48:30 +01:00
dirksavage88
38f89a8b69 remove extraneous newlines
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-12-17 17:12:12 +01:00
dirksavage88
3e290695ef fix to check q
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-12-17 17:12:12 +01:00
Andrew Brahim
11bf3cffde Update src/lib/drivers/rangefinder/PX4Rangefinder.hpp
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-12-17 17:12:12 +01:00
dirksavage88
ba4437ae60 revert to passing raw pointer and length
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-12-17 17:12:12 +01:00
dirksavage88
b64860f9f8 consolidated into update method; use default value in declaration
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-12-17 17:12:12 +01:00
dirksavage88
e51d09612f vl53l1x quaternion example
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-12-17 17:12:12 +01:00
dirksavage88
eb1c0322e3 rangefinder update quaternion
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-12-17 17:12:12 +01:00
Alexander Lerach
e822da74b2 io timer: fix input capture on various boards 2025-12-17 17:02:13 +01:00
bresch
ccaad82f61 mc_att: remove dependency to heading_god_for_control
Absolute heading is not required in stabilized mode and a change in
heading convergence is already handled by the StickYaw class using
unaided_heading
2025-12-17 16:59:47 +01:00
Hamish Willee
4e5c1140b7
[docs] CAN - update wiring/multi-CAN port details (#26080) 2025-12-17 16:57:00 +11:00
PX4 Build Bot
4acb8ec799
New Crowdin translations - zh-CN (#26111)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-17 16:13:51 +11:00
PX4 Build Bot
89d43185c7
New Crowdin translations - ko (#26109)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-17 16:13:35 +11:00
PX4 Build Bot
df0a197050
New Crowdin translations - uk (#26110)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-17 16:13:23 +11:00
Jacob Dahl
c726c7e4f4
px4: v6x: mavlink-dev: remove UXRCE DDS client to free up flash (#26131) 2025-12-17 14:17:57 +13:00
Claudio Chies
24d06047bd
UAVCAN: Add device tracking and information publishing (#25617)
* uavcan: collect node info and publish every second

* UORB: Add DeviceInformation Message

Format DeviceInformation.msg with standard comment spaces

* SENS: add getter for device_id

* UAVCAN: add publishing of DeviceInformation based on publised message type, and Node Information

* LOG: add deviceInformation

* MSG:BAT: fix comment to be inline with the max_instaces

* UAVCAN: DeviceInformation, incorporated feedback

* UAVCAN: DeviceInformation, incorporated feedback

* UAVCAN: DeviceInformation, Fixed bug with Powermonitor

---------

Co-authored-by: Beat Küng <beat-kueng@gmx.net>
2025-12-16 14:53:44 -09:00
Pedro Roque
cb682006fe
fix: esc status sizing fix for gz simulation
* 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

* fix: remove extra modules

* fix: sync submodules with remote

* fix: sync with main
2025-12-16 15:46:51 -08:00
Jacob Dahl
5632728467
lib: gnss: add RTCM parsing library (#26093)
* lib: gnss: add RTCM parsing library. Generated by Claude Code.

* lib: gnss: rtcm: use rtcm3_payload_length()

* lib: gnss: rtcm: set header year

* lib: gnss: rtcm: add units tests

* Update src/lib/gnss/rtcm.h

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/lib/gnss/CMakeLists.txt

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/lib/gnss/rtcm.h

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove mention of reset()

* lib: gnss: rtcm: more effecient preamble search

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-16 09:28:10 -09:00
Jacob Dahl
778ad160f2
msg: GpsDump: queue 8->16 and add device_id (#26091)
* msg: GpsDump: increase queue from 8 to 16 and replace instance with device_id

* gps: add back instance
2025-12-16 08:36:02 -09:00
Marco Hauswirth
8393f46100
Ekf2 add jamming to gnss checks (#26085)
* add jamming check to gnss checks

* keep original order of gnss_check params for default backwards compability
2025-12-16 10:10:37 +01:00
Brandon W. Banks
1345b3500a
Vehicle command for Prearm Safety button (#26079)
* added vehicle command and support to remotely activate/deactivate the safety system (#26078)

* added print_status support for prearm safety status

* updated safety button to map to MAV_CMD_DO_SET_SAFETY_SWITCH_STATE = '5300'

* safety switch cmd: fixed incorrect catch-all and added commanded_state variable for easier reading
2025-12-15 11:25:32 -09:00
Balduin
8604604a5b
logged_topics: clean up old commented-out topics (#26120) 2025-12-15 09:53:24 -09:00
bresch
d62f112017 ekf2: prevent false mag fault detection
A false positive could be triggered if velocity fusion started,
then stopped after takeoff and only position fusion started again
(because velocity fusion timed out and had a timestamp > time_last_on_ground).
We now also check if the fusion timeout is due to the innovation being
rejected (and not just a temporary check failure or data interruption).
2025-12-15 14:06:04 +01:00
Farhang
14186cf74f
[Tests] [CI] fix flaky altitude SITL test (#26106)
* test: increase altitude tolerance to fix flaky test

Altitude tolerance increased from 0.1f to 0.15f to handle simulation
timing variations. Test was failing at 0.201m with 0.2m tolerance.

* test: increase altitude tolerance further to 0.3m

* ci: re-add branch trigger for SITL tests

* Revert "ci: re-add branch trigger for SITL tests"

This reverts commit e5e4c9637b70a9d29247b82a52e11f1f2d0dcc59.
2025-12-13 09:13:23 -09:00
Julian Oes
5fe82aa485
[Sponsored by CubePilot] Try to fix potential mavlink segfaults on USB disconnect (#26083)
* mavlink: fix potential use-after-free

If a mavlink instance is force stopped, the main thread might be out of
scope and the receiver thread would be doing a use-after-free.

Instead the receiver thread needs to check its own _should_exit flag.

* mavlink: protect shared data by mutex in dtor

I'm not sure if this potentially fixes any of the segfaults we have seen
on stopping mavlink instances but it potentially could matter if the
mavlink_receiver thread is killed after a timeout and tries to send any
messages as a zombie.
2025-12-12 12:24:02 -09:00
Jacob Dahl
b92d21bd31
serial: add txSpaceAvailable function (#26069)
* serial: add txSpaceAvailable function

* serial: txSpaceAvailable and bytesAvailable fixups
2025-12-12 09:31:33 -09:00
Alex Klimaj
12745baf6c
Adds configurable I2C address for PCA9685 PWM driver (#26051)
* Adds configurable I2C address for PCA9685 PWM driver

Introduces a parameter to set the I2C address for the PCA9685 PWM output driver, enhancing flexibility for hardware variations. Updates documentation and board initialization scripts to support the new configuration and streamline device startup.

* Update src/drivers/pca9685_pwm_out/module.yaml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/drivers/pca9685_pwm_out/module.yaml

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-12-12 09:31:19 -09:00
Jacob Dahl
c25fcabcc6 esc_battery: fix current reporting 2025-12-12 11:17:24 -07:00
Jacob Dahl
67d62cb371 Revert "gps: fix RTCM injection to use inject-before-read pattern as before. Add RTCM parser to frame-align injection. Drain GpsInjectData uORB queue into RTCM parser buffer and then inject. Add GPS_UBX_PPK parameter to enable MSM7 output from the GPS module (rather than the default of MSM4) which is required for PPK workflows."
This reverts commit 0704580a30bb319fddc8c036675996a3e7202704.
2025-12-11 21:32:26 -09:00
Jacob Dahl
0704580a30 gps: fix RTCM injection to use inject-before-read pattern as before. Add RTCM parser to frame-align injection. Drain GpsInjectData uORB queue into RTCM parser buffer and then inject. Add GPS_UBX_PPK parameter to enable MSM7 output from the GPS module (rather than the default of MSM4) which is required for PPK workflows. 2025-12-11 20:10:22 -09:00
Farhang
38eaa8b1d3
Add UAVCAN interfaces numbers board default (#26066) 2025-12-11 08:43:07 -05:00
Hamish Willee
16eac303de
docs: Add a magnetometer recalibration section (#26081) 2025-12-11 12:19:57 +11:00
Ryan Johnston
aadb83a220
Enhance quick magnetometer calibration feature (#26073)
Added support for specifying an arbitrary initial heading in quick magnetometer calibration.
2025-12-11 11:42:13 +11:00
Hamish Willee
3a2ce0925d
Metadata update 20251210 (#26070) 2025-12-10 15:49:47 +11:00
Sindre Meyer Hegre
29ba83109c
Update neural_networks.md with Ubuntu version warning (#26029)
* Update neural_networks.md with Ubuntu version warning

Added warning about Ubuntu version requirement for PX4 firmware.

* Update docs/en/advanced/neural_networks.md

* Update docs/en/advanced/neural_networks.md

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-12-10 10:31:01 +11:00
Antonio Sanjurjo C
7919959f5a
Update standard_modes.md. Fix broken Mavlink link (#26059) 2025-12-10 10:22:39 +11:00
Beat Küng
703d66e605
ci: move px4_msgs sync from jenkins to github actions (#26061)
* ci: move px4_msgs sync from jenkins to github actions

I noticed it has not synced in a while, the last time was here:
49a0f6c52c

The difference to before is that now also the release branches will be
synced instead of only 'main'.

---------

Co-authored-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-12-09 18:16:18 +00:00
Alexander Lerach
73a8fc8fb0 boards: v6s, save flash by disabling serial_test 2025-12-09 17:15:39 +01:00
ff-lukas
9b106f71a0 fix: correct baro units in tempcal script 2025-12-09 11:01:06 +01:00
PX4 Build Bot
b06094c737
New Crowdin translations - zh-CN (#26057)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-09 08:41:34 +11:00
PX4 Build Bot
96e5862d88
New Crowdin translations - uk (#26056)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-09 08:41:26 +11:00
PX4 Build Bot
98d8090458
New Crowdin translations - ko (#26055)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-09 08:40:51 +11:00
Kyle Fitzpatrick
3ebb47d53f TemperatureCompensationModule: fix order of temp cal args 2025-12-05 08:49:23 -09:00
Matthias Grob
b0008e99ff generate_board_target_json: allow to specify individual targets or entire boards in filter 2025-12-05 08:47:11 -09:00
mahima-yoga
c962c6a2c1 docs: update airspeed scale docs to include accelerated learning when ASPD_SCALE_n=1 2025-12-05 16:26:11 +01:00
mahima-yoga
18477554e0 wind-estimator: learn airspeed scale faster at beginning of flight
Multiply TAS scale process noise by 100 during the first 5 minutes
when ASPD_SCALE_n = 1.0 (default), enabling faster convergence on first flights.
2025-12-05 16:26:11 +01:00
Mahima Yoga
bcd67b7bad
ekf: enable constant position fusion during engine warm-up (#26041)
In cold weather, fuel engines need to be warmed up. Currently, this is done by switching to stabilized mode and throttle up. The issue is that when not using GNSS data, the vehicle is not detected as "at rest" due to vibrations and cannot switch into auto/takeoff modes.

If EKF2_ENGINE_WRM is enabled, and if the vehicle is armed and landed, constant position fusion is enabled.
2025-12-05 15:08:37 +01:00
mahima-yoga
fcddea4410 v6s: remove rover to free up flash 2025-12-05 14:03:10 +01:00
mahima-yoga
ca83b8330d autotune: enable autotune in mission mode
When operating fully autonomously (i.e., without manual control or a guaranteed link to the ground station), tuning a vehicle can be difficult since the current autotune process requires either RC input or a GCS command. For these scenarios, it it useful to be able to start autotune inside a mission.
2025-12-05 14:03:10 +01:00
Farhang
a7de5d176f
Permission error gz build fix (#25921) 2025-12-04 07:52:02 -05:00
dependabot[bot]
3e1c499d5d
build(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /docs (#26026)
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-04 14:32:19 +11:00
PX4 Build Bot
1d00e4e8aa
New Crowdin translations - uk (#26038)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-04 14:31:01 +11:00
PX4 Build Bot
f90b1b375c
New Crowdin translations - ko (#26037)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-04 14:30:49 +11:00
PX4 Build Bot
73e71feb47
New Crowdin translations - zh-CN (#26039)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-04 14:29:51 +11:00
Eric Katzfey
45f9fb45c1
Replace ModalAI PX4 Autonomy Developer Kit with Starling 2 and Starling 2 Max (#26035) 2025-12-04 14:13:05 +11:00
Hamish Willee
e3f05f1bbe
Metadata update 20251203 (#26031)
* Metadata update 20251203

* Deleted translated removed msg

* _sidebar update to current
2025-12-04 08:34:07 +11:00
tompsontan
c0e0d9a080
boards: add new board X-MAV AP-H743r1 (#25967)
Author: @TompsonTan
2025-12-03 15:03:22 -05:00
Beniamino Pozzan
87c05c9181
docs: clarify PX4 versions associated to latest UXRCE_DDS features (#26005)
* docs: clarify PX4 versions associated to latest UXRCE_DDS features

Signed-off-by: Beniamino Pozzan <b.pozzan@archangelautonomy.com>

* Update docs/en/middleware/uxrce_dds.md

---------

Signed-off-by: Beniamino Pozzan <b.pozzan@archangelautonomy.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-12-03 12:18:35 +11:00
PX4 Build Bot
c41aab6ddf
New Crowdin translations - zh-CN (#26017)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-03 10:07:49 +11:00
PX4 Build Bot
45cad9f85c
New Crowdin translations - uk (#26016)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-03 10:07:38 +11:00
PX4 Build Bot
00509d540d
New Crowdin translations - ko (#26015)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-03 10:07:32 +11:00
Jaeyoung Lim
789babae8e
Update gz submodule (#26025) 2025-12-01 14:31:22 -08:00
Julian Oes
1de6001163
mavsdk_tests: bump MAVSDK version to v3.11.2 (#26024)
This should hopefully fix the annoying segfaults on destruction that we
have been seeing.
2025-12-01 13:30:08 -08:00
Hamish Willee
a2b1795236 ark_rtk_gps_l1_l2 - numbering hints 2025-12-01 09:20:17 -09:00
Hamish Willee
f7679dc576 Power supply tweaks 2025-12-01 09:20:17 -09:00
patrikpordi
817951b86b Removed Power Module No connector version, included it in Power Module. 2025-12-01 09:20:17 -09:00
Hamish Willee
e7be62a342 Prettier and minor fixes 2025-12-01 09:20:17 -09:00
Hamish Willee
8c2a25edf8 Add to sidebar except no connector 2025-12-01 09:20:17 -09:00
Hamish Willee
c83d8e807f Shrink all images 2025-12-01 09:20:17 -09:00
Hamish Willee
07f1ac682c pm no connector - prettier and fix heading 2025-12-01 09:20:17 -09:00
patrikpordi
204d82a5c1 Add ARK documentation for GPS modules, distance sensors, and power modules
- Added DAN, SAM, SAM Mini, X20, RTK L1 L5 GPS modules
- Added ARK distance sensors documentation
- Added ARK power modules documentation
2025-12-01 09:20:17 -09:00
Jaeyoung Lim
ac2f2cf2c8
Follow camera with gz topic (#26023)
* Follow camera with gz topic

* Set follow pgain as well
2025-12-01 09:19:04 -08:00
Jaeyoung Lim
5df20b8e9b
Add custom gz airspeed plugin and add wind effects (#26018)
* Add px4 custom airspeed sensor

* Format fix
2025-12-01 08:56:40 -08:00
MarkieMark
980956496b
ICE Control Module: Added option for VTOL state (FW/Transition to FW) to start engine (#25948)
* ICE Control Module: Added option to use VTOL transition state to trigger ICE on/off states

Signed-off-by: Mf-ff99 <force.j.mark@gmail.com>

* ran make format

Signed-off-by: Mf-ff99 <force.j.mark@gmail.com>

* Update src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.cpp to initialize vtol_vehicle_status_s correctly

Initialize appropriately

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

* ICE Module: adjusted VTOL logic to use vehicle_status

Signed-off-by: Mf-ff99 <force.j.mark@gmail.com>

---------

Signed-off-by: Mf-ff99 <force.j.mark@gmail.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-12-01 16:46:51 +01:00
mahima-yoga
0985c22701 [fix] autotune: fix indentation on _state_start_time in abort logic 2025-11-28 09:31:37 +01:00
Julian Oes
0618b0b529
mavlink: GNSS_INTEGRITY and GLOBAL_POSITION are WIP (#26012)
These two messages are still work in progress, only defined in the
development.xml MAVLink dialect. Therefore, we need to ifdef them.
2025-11-28 11:41:38 +13:00
bresch
4fbff2cdd9 fw gain compression: add docs 2025-11-27 17:33:06 +01:00
bresch
3646032296 fw rate: add gain compression algorithm 2025-11-27 17:33:06 +01:00
Matthias Grob
f6de211a27 boards: skip resetting INA parameters to the same default value 2025-11-27 15:16:50 +01:00
Peter van der Perk
85916b8946
Update V6X-RT bootloader .bin file (#26007)
#25998 Addition required bin update
2025-11-27 08:59:21 -05:00
Mahima Yoga
8e8fd485b9
docs: add "first flight" docs for airspeed scale handling (#25987)
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
2025-11-27 10:51:54 +01:00
Hamish Willee
78ff7469ec
Actuator page tweaks (#26004) 2025-11-27 17:33:03 +11:00
Mateusz Sadowski
7d034d6087
Add Foxglove to flight_log_analysis (#25990)
* Add Foxglove to flight_log_analysis

* shrink image

* Minor subedit

* Change scrub to seek in Foxglove description

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-11-27 17:10:40 +11:00
Tarmo Tänav
ad38dba167 crsf_rc: fixed cmake directory conflict 2025-11-26 15:52:33 -09:00
Onur Özkan
8874d533bb add fast-path mavlink forwarding for single instance
Counts active mavlink instances atomically when instances
are claimed or released and uses that value to early-exit
the forwarding logic.

It means on single-instance scenarios this will skip taking
the mavlink_module_mutex lock and will not iterate over
mavlink_module_instances on every received message.

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2025-11-26 10:35:40 -09:00
Tarmo Tänav
f29aa182a8 Add support for NXP i.MX RT1170B 2025-11-26 09:59:51 -09:00
Matthias Grob
c8286d4bba Remove COM_RC_ARM_HYST
I've never anyone seen change that value and break the familiar user experience.
2025-11-26 09:58:19 -09:00
Nick
575fa0850b
PWM: Add servo center setting & asymetric deflection (#25897)
Add PWM_*_CENTERx for each servo.
Use a bilinear transform to map actuator_servos to PWM signals.

This solution only works for PWM based servos. Other types of servos are not affected.

* PWM: Add servo trim option

* PWM: Improve documentation of PWM trim feature

* PWM: cleaner clamping and docs typo

* update documentation & safety

* add migration formula

* rename param from trim to center

* docs with center instead of trim

* move clamping and reorder values

* improve documentation

* adress failing range check

* improve documentation

* CA: add event for setting CENTER with TRIM

Signed-off-by: Silvan <silvan@auterion.com>

---------

Signed-off-by: Silvan <silvan@auterion.com>
Co-authored-by: Silvan <silvan@auterion.com>
2025-11-26 18:12:25 +01:00
Balduin
6caf4f0942
ekf2: fuse airspeed & beta only in fronttransition and fixed wing (#25980)
This allows airspeed and sideslip fusion to start during VTOL front
transition, but not in backtransition or MC. This mitigates issues seen
due to going in and out of airspeed fusion in strong headwinds in MC.

Co-authored-by: bresch <brescianimathieu@gmail.com>
2025-11-26 16:29:19 +01:00
Niklas Hauser
0ce60fd528 Revert "[crsf_rc] Allow setting the baudrate via parameter"
This reverts commit 7a9b04c67c25e4b9eb2feef8a89a53a6c3e25b9c.
2025-11-26 15:09:00 +01:00
Nick
93d767ab51
Airspeed Filter: add filter to airspeed for scaling (#25908) 2025-11-26 12:38:17 +01:00
Michael Schaeuble
d97a8d7d3b mode: control auto set home from an external mode
The mode executor can run land mode which updates the home position to the landing location. This
can be not the desirable behavior and the home position should stay at the original location.

A flag is added to the configuration overrides to control if the home position is updated or not.
2025-11-26 10:16:54 +01:00
Michael Schaeuble
a2299b02c8 modes: make available modes user selectable with a registration option
Some modes should only be run within the context of a mode executor and the user should not be able
to select them in the GCS. With this change, the external component registration request can be
used to set if a mode is selectable or not.
2025-11-26 10:04:53 +01:00
Julian Oes
276cab8d3c mavlink: don't silently ignore mavlink dev streams
I don't think it makes sense to ignore required streams that easily.

If we do use some streams that are only in the MAVLink development.xml
dialect, then we will have to properly and explicitly ifdef them
everywhere that we use them. Otherwise, this basically means that we
will just swallow this warning on most (non mavlink-dev) platforms which
can mask issues.
2025-11-26 09:51:15 +01:00
Balduin
a6d5c78d10
Ignore max HAGL failsafe in front transition (#25982)
* mission_block: readibility improvement

* mission_block: ignore max hagl failsafe in front transition
2025-11-26 09:14:06 +01:00
mahima-yoga
7bb12b15b5 fw_att_ctrl: zero initialize all member variables 2025-11-25 21:19:36 -09:00
Hamish Willee
526c64aab7
COM_ARM_WO_GPS clarifications (#25954) 2025-11-26 15:28:33 +11:00
Hamish Willee
6eb2251ee5
docs: Update metadata (#25993) 2025-11-26 15:05:05 +11:00
Marco Hauswirth
d9a66b11ac
Docs: baro-auto-calibration and gnss-fault-detection (#25796) 2025-11-26 11:52:40 +11:00
Mahima Yoga
a8c5df90ce
fw-ctrl: advertise attitude_sp_pub in attitude and FwLateralLongitudinal controller (#25983) 2025-11-25 21:25:43 +01:00
Alexander Lerach
8dd88e036d gps: add init timeout to handle larger diff after configuration 2025-11-25 11:41:50 -05:00
Alexander Lerach
c4a459838e gps: wipe FLASH config only once 2025-11-25 11:41:50 -05:00
Niklas Hauser
932abfd558 [auav] Robustify I2C transfers and enforce minimum sample time 2025-11-25 17:09:52 +01:00
Alexander Lerach
bd3b3d647f drivers: PCA9685 robustness & logging improvements
Co-authored-by: Phil-Engljaehringer <philipp.engljahringer@auterion.com>
2025-11-25 10:42:48 -05:00
Alexander Lerach
14b38f2eba boards: free up FLASH in auterion v6s by disabling modules 2025-11-25 09:50:01 -05:00
Niklas Hauser
bb72088ff6 [crsf_rc] Add ability to inject buffers for development 2025-11-25 13:15:44 +01:00
Niklas Hauser
1904838043 [crsf_rc] Extend the RC packet reception timeouts to 0.5s 2025-11-25 13:15:44 +01:00
Niklas Hauser
7a9b04c67c [crsf_rc] Allow setting the baudrate via parameter 2025-11-25 13:15:44 +01:00
Niklas Hauser
a514560169 [crsf_rc] Add support for link statistic messages 2025-11-25 13:15:44 +01:00
Jacopo Panerati
6901bc6a01
VTOL Takeoff: Use VehicleCommand specified heading for VTOL transition (#24040)
* Use VehicleCommand heading for VTOL transition

* options for param2 of vehicle_cmd_nav_vtol_takeoff
2025-11-25 09:46:48 +01:00
Alexis Guijarro
a6d9e114be Revert "3DR Control Zero H7 OEM RevG: MTD driver fix (#25015)"
This reverts commit 26499b3c8bcf9896071d0d057a207c9162f8558c.
2025-11-24 10:37:45 -09:00
Alexis Guijarro
5f7e395609 NuttX: Add support for FM25V02A-DGQ 2025-11-24 10:37:45 -09:00
Peter van der Perk
921e91863a dshot: IMXRT BDSHOT baud training
AM32 bdshot doesn't do clock compensation like BLHeli32 did.
Instead we traing BDSHOT timing on known zero value to lock on
best bdshot baudrate to receive.

Reduces CRC and frame errors on AM32 a lot
2025-11-24 09:24:49 -09:00
Edvard Sire
585a615e64 Fix typo in OS version field name 2025-11-24 09:23:17 -09:00
bresch
45e8712d60 VectorNav: set global position validity 2025-11-24 12:00:55 +01:00
Phil-Engljaehringer
0cefd74fee
drivers: add perf counters and documentation to ads7953 2025-11-24 11:06:56 +01:00
PX4 Build Bot
7d8e79c49d
New Crowdin translations - ko (#25963)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-24 07:27:59 +11:00
PX4 Build Bot
faedf252b3
New Crowdin translations - zh-CN (#25965)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-24 07:21:18 +11:00
PX4 Build Bot
7f8d2b5067
New Crowdin translations - uk (#25964)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-24 07:21:00 +11:00
Peter van der Perk
4498475515 fmu-v6x: zenoh config set CONSTRAINED_FLASH
Fixes flash overflow with zenoh target on fmu-v6x
2025-11-21 10:10:32 -09:00
Peter van der Perk
b8974cb77b Zenoh: Improve out-of-memory behaviour
Abort publication immediately when not enough memory is available.
Zero _zenoh_publishers and _zenoh_subscribers to ensure we're not
dereferencing a wrong pointer
2025-11-21 10:10:32 -09:00
Peter van der Perk
042a251542 Zenoh: Update zenoh-pico library 2025-11-21 10:10:32 -09:00
Julian Oes
ff06a206d1 mavsdk_tests: bump version to 3.11.1
This should now include the figure eight messages.
2025-11-20 23:23:40 -09:00
Julian Oes
46ed71fa5b mavsdk_tests: figure eight is in common now 2025-11-20 23:23:40 -09:00
Julian Oes
2ef2580388 Gazebo-classic: add define for development.xml
And update submodule.
2025-11-20 23:23:40 -09:00
Julian Oes
c89667d911 boards: add MAVLink development targets
These targets can be used to test MAVLink messages in the
development.xml dialect.
2025-11-20 23:23:40 -09:00
Julian Oes
fa7ffa423c boards: remove MAVLink development dialect
We should not build and release with the MAVLink development dialect
because messages in development.xml can change at any time and break
things.

Instead we should prototype and test things using specific mavlink-dev
targets.
2025-11-20 23:23:40 -09:00
Julian Oes
8f3442b358 mavlink: update submodule 2025-11-20 23:23:40 -09:00
Niklas Hauser
17f3db9231 [serial] Fix byte size, flow control, parity, stop bits configuration 2025-11-20 10:29:57 -09:00
Henry Kotzé
25138d0a12
MavlinkTimeSync: Specify compid & Sysid (#25949)
Co-authored-by: henrykotze <henry@autonosky.com>
Co-authored-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-11-20 12:43:46 +00:00
DrinkingHook
70f32f4631 Clean up duplicate assignments in flight_mode_manager-task-auto 2025-11-19 20:44:22 -09:00
Ramon Roche
e74e1bb32a github: Update pull request template for clarity
Removed outdated sections and streamlined the pull request template.
2025-11-19 10:26:35 -09:00
Jacob Dahl
5c469a36b8
drivers: bootloaders: specify UAVCAN only in KConfig (#25947) 2025-11-19 13:58:58 -05:00
Jacob Dahl
efbc9e64a4
mavlink: esc: fix ESC_STATUS and ESC_INFO message emission. (#25849)
* mavlink: esc: fix ESC_STATUS and ESC_INFO message emission.

Fixes mavlink messages emission for ESC messages. Actuator --> MotorNumber mapping was not respected, the mavlink messages should be reporting the ESC status in motor number order not actuator order.

* Update src/modules/mavlink/streams/ESC_STATUS.hpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/mavlink/streams/ESC_INFO.hpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove dependency on mixer_module/output_functions.hpp

* add actuator function definitions to EscReport.msg

* clean up

* add missing header

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-20 06:51:42 +13:00
Alexander Lerach
229b53d25d
uavcannode: fix compile error in BatteryInfo.hpp (#25944) 2025-11-19 16:23:25 +01:00
dirksavage88
e0137fe7a7 add back linux pwm to bbblue
Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2025-11-18 20:25:58 -09:00
Ryan Johnston
072eeb4617
Add GNSS position fusion details to documentation (#25900) 2025-11-19 16:23:48 +11:00
PX4 Build Bot
9c850b1594
New Crowdin translations - zh-CN (#25890)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-19 15:56:43 +11:00
PX4 Build Bot
ad2279adb5
New Crowdin translations - ko (#25888)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-19 15:56:28 +11:00
PX4 Build Bot
e54d1fd114
New Crowdin translations - uk (#25889)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-19 15:56:20 +11:00
Ahmed Osman
d0009c2af8 Add log.h include to hello_sky.md 2025-11-18 19:48:23 -09:00
Tharnath
06d73b3758 Docs: Review Changes 2025-11-18 19:36:11 -09:00
Tharnath
8fe24d8884 Doc: Add pixhawk version comparison table.
Added a table to compare V6X-RT, V6X, V6C standards.
2025-11-18 19:36:11 -09:00
Beniamino Pozzan
ffc184fcf7
[uxrce_dds_client] Allow for arbitrary topic instances to be bridged (#22350)
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-11-18 23:24:35 +00:00
Phil-Engljaehringer
8a2239f3e8
drivers: Add TLA2528 ADC driver (#25898)
* tla2528 basic implementation (restarting driver still fails)

* fixed probe function, restarting driver now works

* -added reset call to init
-added return value checks on all important transfers and retry if failed when possible
-removed comments
-removed unnecessary parameters of module

* Introduced initialization-states that can be executed multiple times on failure

* Added one more state s.t. init() only does probing

* added communication error count _comms_errors

* use get() instead of param_find

* changed scheduling interval

* start in reset state. check second byte in probe. add 2 retries to probe function

* add space in front of comments

* jump to reset state when another state fails

* changed SAMPLE_INTERVAL to 10_ms

* added static assert on number of channels in adc_report
2025-11-18 17:30:34 +01:00
Victor Nan Fernandez-Ayala
f7269c9c22
uuv_att_control: added a new surge, sway, heave, yaw control mode, and a stick selector param to switch between modes (#25891)
* feat: surge, sway, heave, yaw control method added

Signed-off-by: ViktorNfa <viktornfa@gmail.com>

* fix: ran make format

* fix: clean naming and default conditions

* fix: switched param selector

---------

Signed-off-by: ViktorNfa <viktornfa@gmail.com>
Co-authored-by: Pedro Roque <roque@caltech.edu>
2025-11-17 15:34:35 -08:00
Silvan
a3694c84f4 PPS: remove redundant boolean literal to silence clang-tidy
Signed-off-by: Silvan <silvan@auterion.com>
2025-11-17 12:02:31 -09:00
Niklas Hauser
49febef5ca [AutFMUv6x] Enable PPS capture driver 2025-11-17 11:59:06 +01:00
Niklas Hauser
7cf9be6e10 [AutFMUv6x] Remove unused timer 2 2025-11-17 11:59:06 +01:00
Niklas Hauser
676fa8a883 [FMUv6s] Convert unused PPM pin to PPS input 2025-11-17 11:59:06 +01:00
alexklimaj
67ace35182 boards: ark-gps safety led open drain 2025-11-14 16:17:55 -09:00
alexklimaj
f1a68b7450 gps: update submodule and fix M9N output rate 2025-11-14 16:16:45 -09:00
Alexander Lerach
9248238f9e ci: fix flash-analysis sporadic fail 2025-11-14 21:56:00 +01:00
Pernilla
82d8813987
ICE: switch of engine if aux is negative instead of zero (#25923) 2025-11-14 16:44:05 +01:00
Matthias Grob
7b05a00db1 MS5837: correct unit conversion to Pascal 2025-11-13 15:52:00 -08:00
Matthias Grob
b83f21ec6f temperature_calibration/baro: fix pressure unit
It's Pascal, not Hectopascal since
0c31f6389666d942d59b74cd2e107a5d3b263ea6
2025-11-13 15:52:00 -08:00
Matthias Grob
05c79e23d5 SensorBaroSim: correcct comment, nothing in hPa
This comment was forgotten in #20057
2025-11-13 15:52:00 -08:00
Matthias Grob
363242972c process_sensor_caldata: correct pressure unit to Pascal instead of Hectopascal
Barometeric pressure was changed to the SI unit Pascal instead of the non-SI unit Hectopascal/Millibar in
0c31f6389666d942d59b74cd2e107a5d3b263ea6

This script stayed unchanged and suffers from assuming `sensor_baro.pressure` is still in the old unit which would be a 100 times smaller number.
2025-11-13 15:52:00 -08:00
Ramon Roche
6bca640cac ci: no more uploads to flight review
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-11-13 13:43:40 -09:00
esmaeelE
acef86cb4d
docs: add an extra space (#25901) 2025-11-13 15:08:48 -06:00
Jacob Dahl
0e7f980c76 v6c: neural: remove INS drivers to save flash 2025-11-13 09:13:39 -09:00
Marco Hauswirth
5eab16c17c
PPS time corection capability for GNSS measurements (#25838)
** add PPS time corection capability for GNSS measurements

* * add documentation
* add comment for 'future check'
* replace url with relative link
* Update docs/en/advanced/pps_time_sync.md

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
* Subedit and add to sidebar
* Apply suggestions from code review
* Update docs/en/SUMMARY.md
* remove offset jump check, clean up
* add comment pps_compensation activation condition. move documentation to hardware integration

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
2025-11-11 20:56:56 +01:00
Valentin Bugrov
98d3a2141a drivers/ins: InertialLabs INS driver bugfix 2025-11-11 00:59:59 -05:00
PX4 BuildBot
3d9905251d boards: update all NuttX defconfigs 2025-11-10 01:06:31 -05:00
Silvan
f80b05e4f9 ROMFS: remove all CA_AIRFRAME sets to 1 as it is now in fw_defaults
Signed-off-by: Silvan <silvan@auterion.com>
2025-11-10 01:02:42 -05:00
Silvan
6d0e27222c ROMFS fw_defaults: add CA_AIRFRAME set to 1 (fixed-wing)
I guess 99% of fixed-wings have this set to 1, so let's just put it into the defaults.

Signed-off-by: Silvan <silvan@auterion.com>
2025-11-10 01:02:42 -05:00
Peter van der Perk
aaf6632a22 imxrt: move teensy bootloader to normal bootloader
Best for teensy is to use the teeny as normal bl
2025-11-10 00:52:58 -05:00
Peter van der Perk
24572cf358 tropic-community: Fix RWW race condition and enet stability 2025-11-10 00:52:58 -05:00
Jacob Dahl
e30a30d768
docs: ark mag (#25883) 2025-11-07 09:04:16 +11:00
Jacob Dahl
38847b1cf3
stm32: io_timer: pullup gpio during dma capture (#25850) 2025-11-06 12:33:35 -07:00
TedObrien
5483d901f9 MPC9808: Run ScheduleOnInterval() at desired publishing rate and remove elapsed time check and timestamp_sample field from message as no longer needed.
MCP9808: Replaced PX4_INFO with PX4_DEBUG

MCP9808: Update date in headers

MCP9808: Define functions before variables

MCP9808: Increase logging interval for sensor_temp

MCP9808: Removed extra space

MCP9808: Remove this->
2025-11-06 10:00:26 -09:00
TedObrien
ddb98abf1d MCP9808: refactor driver based on feedback
- Remove enum class Register : uint8_t
- Explicitly initialize buffer
- Explicitly initialize temp_raw
- Rename uorb publisher
- Remove overide from print_status()
- Take timestamp after read, correct measurement_time to uint64 and use hrt_elapsed_time()
- Remove exit_and_cleanup
- Move functions out of main + cleanup whitespace

MCP9808: remove exit_and_cleanup

MCP9808: Take timestamp after read, correct measurement_time to uint64 and use hrt_elapsed_time()

MCP9808: remove overide from print_status()

MCP9808: rename uorb publisher

MCP9808: explicitly initialize temp_raw

MCP9808: explicitly initialize buffer

MCP9808: Remove enum class Register : uint8_t

MCP9808: move functions out of main + cleanup whitespace
2025-11-06 10:00:26 -09:00
TedObrien
b5c3c11622 MCP9808: Disable by default on v6x to save flash 2025-11-06 10:00:26 -09:00
TedObrien
90f82dabcf MCP9808: Add perf_count for comms errors and prevent publishing nan temp values. 2025-11-06 10:00:26 -09:00
TedObrien
a94ee4382b MCP9808: Create driver for MCP9808 temperature sensor 2025-11-06 10:00:26 -09:00
Marco Hauswirth
561a83cf6c
VTOL Backtransition lateral position control improvements (#25704)
During backtransition in gusty conditions the current "pitch-up to decelerate" strategy had deficiencies as the motion is not always purely in body-x direction. Thus we replace it here with a "tilt-up to decelerate" strategy.
Secondly, in GNSS-denied environments where the position error increases, tracking a precise landing point through position feedback is not reasonable, and we now instead discard the position feedback in cases where the position error exceeds 10m.

* add eph limit check for dist-to-target VT BT deceleration

* add alphafilter for acceleration estimate in VT BT, rename constants

* explicitly set yawspeed_setpoint to 0

* replace backtransition pitch-setpoint with tilt-setpoint

* blend vtol-backtransition roll vehicle_attitude_sp based on mc_weight

* remove memcpy for v_att_sp
2025-11-06 13:36:22 +01:00
Kimminkyu
517f04259c
Add Gazebo MotorFailure Plugin (#25776)
* Add Gazebo MotorFailure Plugin

* switch from ROS2 to Gazebo Transport

* Clean up old/dead comments, Refactor variable

* gz: submodule update
2025-11-06 01:06:42 -08:00
PX4 Build Bot
644b483d7e
New Crowdin translations - uk (#25857)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-06 17:34:23 +11:00
PX4 Build Bot
2bfa2f8b5f
New Crowdin translations - ko (#25856)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-06 14:18:46 +11:00
Hubert
311b3cfb67
docs: add micoair743-lite documentation. (#25870)
* add docs for MicoAir743-Lite

* Update images and prettier

* update micoair743-lite.md

* Update docs/en/flight_controller/micoair743-lite.md

* Prettier and cross link RC + add badges

* Update docs/en/flight_controller/micoair743-lite.md

---------

Co-authored-by: Minderring <1701213518@sz.edu.pku.cn>
Co-authored-by: Farhang <46557204+farhangnaderi@users.noreply.github.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-11-06 10:05:42 +11:00
Beniamino Pozzan
cbbdc20bd3 docs(uxrce_dds): add missing closure for info section
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-11-05 11:32:40 -08:00
Peter van der Perk
1250563ed1
Add support for NXP MR-VMU-Tropic board (#25845)
* rt106x: Use platform SPI hal layer

* rt106x: Add romapi support and reboot to isp/bootloader

* bootloader: imxrt_common: Add rt106x support

* NXP MR-Tropic initial commit

* Add missing file for mr-tropic bootloader

* nxp-mr-tropic:Bootloader Alow Assertion debugging & Keep Ram Vectors

* nxp-mr-tropic: Firmware Boot from bootloader

* nxp-mr-tropic:Add Bootloader bin file

* mr-tropic: Update config and linker

Fixes enet issues with write-back and some code cleanup.
Furthermore increase NOR LittleFS to 256kB to reflect on linker

* Update NuttX

* mr-tropic: fix itcm apping and add mr-tropic to itcm check

---------

Co-authored-by: David Sidrane <David.Sidrane@NscDg.com>
2025-11-05 11:48:26 -05:00
Minderring
5f0d222e1b update micoair boards config files: remove CONFIG_DRIVERS_RC_INPUT 2025-11-05 11:25:47 -05:00
Marco Hauswirth
84b5ce9010
AirspeedSelector: enable changing ASPD_SCALE manually in-air mid-flight (#25817)
Includes a reset in wind estimator states if changed
2025-11-05 16:25:15 +01:00
Balduin
ab1c880aad
pusher_assist: keep pitch setpoint VT_PITCH_MIN (#25871)
* pusher_assist: keep pitch setpoint VT_PITCH_MIN

resetting the pitch setpoint to zero made little sense, because we lose
the forward thrust component of the hover motors, while the pusher
throttle was calculated to be applied in addition to the hover forward
component

* pusher assist: change default min pitches to 0

To make for a smoother transition for users who don't care much about
pitch when pusher-assisting and were fine with it (mostly) being at zero
2025-11-05 09:55:49 +01:00
PX4 Build Bot
e7609ad5b5
New Crowdin translations - zh-CN (#25858)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-05 17:10:09 +11:00
Phil-Engljaehringer
fb13b880ce
sensors: add ads7953 adc
* sensors: add ads7953 adc

* Update src/drivers/adc/ads7953/ADS7953.h

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

* Implemented changes suggested by review

* Implemented suggested changes

* removed unused variables and moved scope of ch_id

* Activated distance sensor again

* Update msg/AdcReport.msg

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

* Update ADC report message field comments

* Update ADC msg - fix layout

* update comments

* changed group to Sensors in module.yaml

* created new module subcategory "adc"

* reverted group change in module.yaml

* added module descrption to modules_driver.md

* removed module description in modules_driver.md (autogenerated)

* removed unused variable, changed board_adc publication method to "multi"

* added static assert

---------

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-11-04 17:22:10 +01:00
Hubert
8cb1c31f46
boards: add new board micoair743-lite (#25777)
Authored-by: Minderring <1701213518@sz.edu.pku.cn>
Manufacturer supported board.
2025-11-04 11:16:38 -05:00
Matthew Berk
fa5599976f flight_modes_fw/return.md: remove warning about now-fixed bug in mission RTLs in FW 2025-11-03 21:26:22 -09:00
Vincello
b010fe904c fix board_id 2025-11-03 21:25:33 -09:00
Matthias Grob
ae03630570 uavcan: more efficient calculation of esc.RawCommand.cmd array size 2025-11-03 08:18:55 -09:00
Thijs Hof
c44e0be18a fix bidir dshot for nxp xrt boards 2025-11-03 08:14:27 -09:00
Matthew Berk
9702a2a899
Navigator: Fix mission RTL for fixed-wing by setting previous waypoint correctly (#25600)
This aligns setActiveMissionItems() in rtl_direct_mission_land.cpp and in rtl_mission_fast.cpp with what was already in mission.cpp. It probably was on oversight when the RTL restructure happened. The FW landing requires the previous waypoint to be correctly set, that's why it was only noticeable there.

* Fix position setpoint update logic in Mission RTL

Currently, when proceeding to the landing point the previous setpoint is not updated, which results in an unexpected and off course landing pattern in fixed wing. (see #25436)

* Change to work more like `mission.cpp`

* Fix rtl_direct_misssion_land formatting for style guide

* rtl_mission_fast: fix FW landing by setting previous wp in landing

Signed-off-by: Silvan <silvan@auterion.com>

---------

Signed-off-by: Silvan <silvan@auterion.com>
Co-authored-by: Silvan <silvan@auterion.com>
2025-11-03 17:52:26 +01:00
Claudio Chies
cfe4cc82ea
UAVCAN: fix message definition issues (#25809) 2025-11-03 09:34:54 +01:00
Jacob Dahl
f3ee45b173
ark: fmuv6x: fix imu start after spi sync removal (#25851) 2025-11-01 11:38:02 -06:00
Jukka Laitinen
d5eea0dd92 sensors/VehicleImu: Don't set _backup_schedule_timeout_us shorter than normal scheduling interval
With IMUs of higher report rate (e.g. ADIS16470), setting backup schedule timeout simply
to half of the ORB queue length may cause the backup firing before required updates are received.

Set backup schedule to queue length - 1 instead. Additionally, double-check that the backup
doesn't get too short after finding the largest integer multiple of gyro_integral_samples.

Signed-off-by: Jukka Laitinen <jukka.laitinen@tii.ae>
2025-10-31 16:21:08 -08:00
alexklimaj
0c9ebc4321 boards: add ARK MAG 2025-10-31 13:16:49 -08:00
alexklimaj
be9fa620fd drivers: rm3100 add i2c/spi ifdefs 2025-10-31 13:16:49 -08:00
Niklas Hauser
b320ace4d1 [ARK FMUv6x] Fix the timer assignments for input capture 2025-10-31 06:17:24 -08:00
Niklas Hauser
6ec106a0ed
INA2xx: Debounce battery connection state (#25786)
To prevent critical low battery messages on a single I2C issue.
2025-10-31 13:19:10 +01:00
Beat Küng
f9595319b8 mavlink: remove ODOMETRY stream from ONBOARD_LOW_BANDWIDTH mode
It's not used in our setups and it reduces the TX rate from 11.8 KB/s to
4.4 KB/s on a bench setup.
2025-10-29 13:53:09 -04:00
Jacob Dahl
05c5293596 gz: init submodule before configuring build 2025-10-29 13:50:50 -04:00
GC2020
ddc173249a Complete missing modules for svehicle_e2 2025-10-29 05:38:39 -08:00
Hamish Willee
7d509d832a
Update to latest mavlink that includes support for WIP warnings (#25804)
* Update to latest mavlink that includes support for WIP warnings

* mavsdk_tests: pass build for now

We need this until the figure eight stuff has moved to common.

---------

Co-authored-by: Julian Oes <julian@oes.ch>
2025-10-29 12:43:10 +11:00
Hamish Willee
6846af119d
Update docs metadata (#25828) 2025-10-29 12:32:15 +11:00
cuav-liu1
37398248aa BMM350: Fix BMM350 temperature calculation 2025-10-28 20:29:16 -04:00
PX4 Build Bot
a1e5a959b5
New Crowdin translations - uk (#25812)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-29 09:23:08 +11:00
PX4 Build Bot
99965337f1
New Crowdin translations - zh-CN (#25813)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-29 09:22:59 +11:00
PX4 Build Bot
c536120e3d
New Crowdin translations - ko (#25811)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-29 09:16:54 +11:00
mahima-yoga
73ee098a25 fw_autotune: continue to next axis in case of convergence timeout 2025-10-28 13:16:40 +01:00
mahima-yoga
482683d156 fw-autotune: update docs 2025-10-24 17:38:54 +02:00
mahima-yoga
97c16352a5 fw-autotune: increase abort timeout to 30 seconds
Avoids abort on heavily undertuned systems during amplitude detection state
2025-10-24 17:38:54 +02:00
mahima-yoga
fe35f1a34b fw-autotune: run state machine at 50Hz 2025-10-24 17:38:54 +02:00
mahima-yoga
7323075527 fw-autotune: use 0.75*rate_limit as the target rate. 2025-10-24 17:38:54 +02:00
Silvan Fuhrer
17e96554ec
Navigator: fix RTL_TYP=2 with NAV_CMD_CONDITION_GATE (#25648)
* rtl_mission_fast: make sure to set a position item on activation

* rtl_mission_fast_reverse: make sure to set a position item on activation

---------

Co-authored-by: Konrad Rudin <konrad@auterion.com>
2025-10-24 10:10:33 +02:00
Hamish Willee
8f38a2ddbc
uORB doc update: SensorBaro, DifferentialPressure (#25712) 2025-10-24 06:07:28 +11:00
Ramon Roche
6f4605dd04 ci: better container cache
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-10-23 11:36:33 -07:00
Balduin
1c821cf83d
FlightTaskAuto: disable MPC_LAND_RADIUS by default with value -1 (#25275)
* FlightTaskAuto: disable MPC_LAND_RADIUS by default

* format & comment

* Remove position valididy check again

* clean up according to review
2025-10-23 17:36:46 +02:00
Matthias Grob
540e80eb77 FilaureDetector: publish failure_detector_status in class and call that from commander 2025-10-23 09:23:45 +02:00
Matthias Grob
2adc36b2af FailureDetector: write out status veriable name for clarity 2025-10-23 09:23:45 +02:00
Matthias Grob
70eecf6070 FailureDetector: adhere to the parameter naming convention 2025-10-23 09:23:45 +02:00
Alexander Lerach
2e586c47b0 update nuttx (to include TX DMA fix) 2025-10-22 15:22:15 +02:00
dawr68
9276dc5abd
feat: add attitude and odometry pub rates limits (#25792) 2025-10-22 14:55:51 +02:00
PX4 Build Bot
d2548ced9d
New Crowdin translations - zh-CN (#25782)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-22 15:37:56 +11:00
dependabot[bot]
e0fcc329a3
build(deps): bump vite from 5.4.19 to 5.4.21 in /docs (#25789)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.19 to 5.4.21.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.21/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 5.4.21
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-22 15:32:08 +11:00
Andrew Brahim
1297780d28
add cmake variant and px4board file to ark flow mr target (#25793)
* add cmake variant and px4board file

Signed-off-by: dirksavage88 <dirksavage88@gmail.com>

* boards: ark flow mr update default.px4board and rc.board_sensors

---------

Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
Co-authored-by: alexklimaj <alex@arkelectron.com>
2025-10-21 13:20:55 -06:00
Marco Hauswirth
59f6c69067
EKF2: rotate vel on heading reset (#25753)
* correct NED velocity according to yaw reset to keep "body-velocity" consistent
* add unit test velocityRotationOnYawReset
* '[AUTO COMMIT] update change indication'
* dont adjust velocity on yaw-reset when NE aiding active

---------

Co-authored-by: haumarco <haumarco@users.noreply.github.com>
2025-10-21 11:48:03 +02:00
Tobias Fenner
71f56df23b adsb: Fix vertical separation check using wrong parameter
The collision detection incorrectly used crosstrack_separation
(horizontal radius) for both horizontal and vertical checks.
This resulted in the vertical separation threshold being ignored,
creating a spherical detection zone instead of the intended
cylindrical "hockey puck" shape.

Fixed by using vertical_separation parameter for altitude
difference check on line 80.

The bug was likely introduced as a copy-paste error when creating
the vertical check from the horizontal check template. The existing
unit test uses identical values for both parameters (500.0f),
which masked this bug.

Testing: Code review. The existing unit tests pass, but they don't
catch this bug due to using equal values. Future test improvement
would be to use different crosstrack_separation and vertical_separation
values.

Signed-off-by: Tobias Fenner <tobyrfenner@gmail.com>
2025-10-21 11:21:27 +02:00
Jacob Dahl
d30fa62f40 mavlink: take in @dakejahl 's refactoring and extend it 2025-10-21 10:24:30 +02:00
Matthias Grob
65c5bd6906
Fix (dis)arm reason enumeration (#25766) 2025-10-20 09:12:36 -04:00
mahima-yoga
056289892c fw_defaults: bump default EKF2_REQ_PDOP to 4 2025-10-20 08:54:55 +02:00
PX4 Build Bot
ead1cf00ff
New Crowdin translations - ko (#25780)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-20 08:17:05 +11:00
PX4 Build Bot
0d0bfc1937
New Crowdin translations - uk (#25781)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-20 08:16:57 +11:00
GC-20-20
66e73528a2
boards: add new SVehicle-E2 (#25578)
* boards: add new svehicle e2

* add SVehicle-E2 documentation

* Add new documents

* Subedit - shrink images

* Supplementary documentation based on discussion

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
Co-authored-by: Andrew Brahim <35986980+dirksavage88@users.noreply.github.com>
2025-10-18 20:32:10 -04:00
Jacob Dahl
444b31be21 uavcan: fix logic for static node id 2025-10-17 18:35:20 -08:00
Jacob Dahl
b3acde4899 use uavcan::NodeID::Max 2025-10-17 18:35:20 -08:00
Jacob Dahl
8ca8f12a24 docs: uavcannode: document CANNODE_NODE_ID for static node ID 2025-10-17 18:35:20 -08:00
Jacob Dahl
0b63b8317a uavcannode: add CANNODE_NODE_ID to allow setting static node ID 2025-10-17 18:35:20 -08:00
Alexander Sherikov
6e8f61c551
various cmake fixes (#25748)
- enable building in a cmake subdirectory:
    - use consistent path to "etc" in build directory
    - add a quick fix for mavlink inclusion with
      `mavlink/<version>/mavlink.h`, presumably the problem does not
      appear normally since somewhere the build root directory is added
      to include paths.
- install gazebo config and plugins, the goal is to enable packaging of
  PX4 sitl binaries.
- fix dependency on dds_topics.h generation in uxrce_dds_client:
  *** No rule to make target 'PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.h', needed by 'PX4-Autopilot/events/px4.json'.  Stop.
  https://github.com/PX4/PX4-Autopilot/issues/21788

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-10-17 11:11:00 -08:00
Vladimir Letunovskiu
d2d433290a
Update copyright year to 2025 in LICENSE file (#25778) 2025-10-17 10:49:41 -08:00
Henry Kotzé
7418d84001
ekf2: ev vel, use measurement timestamp to update aid_src timestamp_sample (#25774)
- the estimator_aid_src::sample_timestamp would use its own timestamp to update, this
  would cause the estimator_aid_src for ev velocity not to log, since the
timestamp_sample would always equal to zero and thus never be greater
than the previous published time

Co-authored-by: henrykotze <henry@autonosky.com>
2025-10-17 10:43:34 -08:00
Phil-Engljaehringer
dc0af1ab9d
health: Fix displayed value in power check (#25751)
* Changed the healthFailure call in the PowerChecks to ensure that no value above the low_error_threshold or below the high_error_threshold is reported in AMC

* fix format

* made _latest_low_failure and _latest_low_failure member variables. Only update them when hystersis state changes from false to true.
2025-10-17 14:54:16 +02:00
Hamish Willee
f03131cfd3
MAVLink PARAM_ERROR support (#25699)
Co-authored-by: PX4BuildBot <bot@pixhawk.org>
2025-10-17 13:29:23 +11:00
Peter van der Perk
faee1da630
docs: Zenoh middleware guide (#25737) 2025-10-16 20:48:12 +11:00
Hamish Willee
104759b90c
Update mavlink with more PARAM_ERROR values (#25772) 2025-10-16 14:09:02 +11:00
Jacob Dahl
42c4e6b4fb
gz: submodule update (#25771) 2025-10-15 13:28:52 -08:00
Jacob Dahl
54866b886e
gz: fix gimbal message type (#25770) 2025-10-15 13:28:14 -08:00
Jacob Dahl
9c1f3306a4
mission: delay until: mark next setpoint invalid (#25728)
Fixes bug with the NAV_CMD_DELAY where the copter would "pace" back and forth while waiting at the delay waypoint
2025-10-15 13:21:28 -08:00
Jacob Dahl
1ca80ae6f6
astyle: remove max line length (#25717) 2025-10-16 07:08:02 +11:00
Matthias Grob
3e3bb82331
navigator: increase stack by 30 bytes (#25769) 2025-10-15 11:21:26 -08:00
Erkki Eilonen
f32c3024b8 gazebo: fix unused variables warning ([-Wunused-private-field]) 2025-10-15 11:32:16 -04:00
Erkki Eilonen
2297e66a9d gazebo: fix implicit conversion errors ([-Wdouble-promotion]) 2025-10-15 11:32:16 -04:00
Niklas Hauser
c2fb48990a [FMUv6s] Communicate the correct board id version 2025-10-15 14:25:31 +02:00
JoelJ18
4fa9aa205f
[Docs] MicroStrain driver documentation (#25376)
* Initial Draft

* prettier + parent INS doc addition

* Typo fixes and param description improvements

* LinkedFileMissingAnchor Fix

* External mag and optical flow doc update

* Reverting module.yaml

* Apply suggestion from @hamishwillee

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-10-15 19:04:51 +11:00
Hamish Willee
e83d18cad2
metadata - _sidebar and only display front page warning on main (#25761)
* _sidebar and only display front page warning on main

* Update metadata and fix internal flaws
2025-10-15 12:28:33 +11:00
Matthias Grob
2cae8ee797
Improve documentation for motor failure injection and detection (#25756)
* failure_injection: improve previously vague motor faulure

Reading it again I decided adding the sentance in 4d2170c13ea4d42c5b0b464dbbcbb68fb098cbcc is not clear enough.

* docs/safety: add a motor failure detection paragraph

The functionality is in my eyes pretty basic but so far completely undocumented so I went through the code and added a paragraph based on questions I received.

* Subedit

* Apply suggestion from @hamishwillee

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-10-15 11:05:33 +11:00
Jacob Dahl
a64536802b
gz: fix gimbal yaw, add dds publisher (#25754)
* gz: correct gimbal yaw

* uxrce_dds: add publisher /fmu/out/gimbal_device_attitude_status

* chore: use explicit ENU_to_NED rotation

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>

* format

---------

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
Co-authored-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-10-14 11:45:43 -08:00
Matthias Grob
babe094d06
FailureDetector: use robust timeout checks for motor failure detection (#25757) 2025-10-14 10:46:29 -08:00
Alexander Lerach
376f52f51d mavlink: add som/fmu config params 2025-10-14 19:14:41 +02:00
Alexander Lerach
0f0fe8f1fa boards: align auterion v6x with APX4 2025-10-14 19:14:41 +02:00
Niklas Hauser
9fa4a57c66 tools: Ignore known_hosts file for uploading via SSH 2025-10-14 19:14:41 +02:00
Niklas Hauser
ba1e658750 boards: remove USB device from Auterion FMUv6x 2025-10-14 19:14:41 +02:00
Alexander Lerach
e8fbc30cf6 boards: add auterion v6x target 2025-10-14 19:14:41 +02:00
Matthias Grob
7706aae67d mavlink_receiver: only switch outgoing MAVLink version to 2 if it was 1 before
to avoid the message that comes with it being spammed.
2025-10-14 18:38:02 +02:00
Matthias Grob
4842c542b8
rc_update: remove 1% deadzone for RC channels 1-8 (#25502)
* rc_update: remove 1% deadzone for all channels

this should be handled higher level.

* Remove all references to the RC{n}_DZ parameters

Regular expression: RC.{0,2}_DZ

---------

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-10-13 21:41:11 -08:00
Matthias Grob
12035682d7
Use MAVLink v1 only as opt-in (#25583)
* Remove support for MAVLink 1

* Add back support for MAVLink 1 but don't default to it

* Update src/modules/mavlink/mavlink_params.c

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

---------

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-10-13 20:58:34 -08:00
Matthias Grob
33301764e4
Handle SYS_AUTOSTART 0 the same as no valid airframe being available (#25645)
* ROMFS: do not exit airframe loading if SYS_AUTOSTART is 0

Do not treat 0 as a magic value that skips the aiframe loading.
Instead leave it tot he rc.autostart to load an airframe that if finds
appropriate (can be defined in external aiframe).

Signed-off-by: Silvan <silvan@auterion.com>

* ROMFS: adjust airframe load spacing and message/comment wording

---------

Signed-off-by: Silvan <silvan@auterion.com>
Co-authored-by: Silvan <silvan@auterion.com>
2025-10-13 20:56:27 -08:00
Ramon Roche
aa0668663a
docs: clean urls for vitepress builds (#25718)
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-10-13 20:52:41 -08:00
Marco Hauswirth
2f06f03728
calibration: mag: only allow mag calibration when at least one mag is available and enabled (i.e. not prio=0) (#25714) 2025-10-13 20:51:25 -08:00
Jacob Dahl
2c62caeb7d
flight task auto: fix offtrack mission landing bug (#25725)
During a mission the last waypoint is often a LAND. If the previous waypoint is not directly above the land waypoint the offtrack calculation is incorrect. This regression was introduced when the offtrack calculation switched from 2D to 3D.
2025-10-13 19:56:23 -08:00
PX4 Build Bot
87559f717b
New Crowdin translations - zh-CN (#25747)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-13 09:08:22 +11:00
PX4 Build Bot
7fb8ea051f
New Crowdin translations - uk (#25746)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-13 09:08:14 +11:00
PX4 Build Bot
dc500c4d04
New Crowdin translations - ko (#25745)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-13 09:08:00 +11:00
Alexander Sherikov
54679f11d0
px_update_git_header: fix nuttx version detection (#25742)
use fake nuttx version tag when the real one cannot be detected
2025-10-11 14:24:30 -08:00
Connor Denihan
9a6e4b5ace
docs: Fix capitalization of macOS (#25744)
* Fix formatting and capitalization in dev_env_mac.md

Updated formatting and capitalization for consistency in the macOS development environment documentation.

* Correct 'Mac OS' to 'macOS' in documentation

* Fix capitalization of 'macOS' in documentation
2025-10-11 14:23:55 -08:00
Connor Denihan
d6fc448a36
Update supported Ubuntu versions in dev environment docs (#25743) 2025-10-11 12:54:32 -08:00
Farhang
3336050f84 First commit 2025-10-10 11:29:01 -07:00
Mahima Yoga
96904636f3
commander: prevent setting nav_state to takeoff after disarming (#25735)
* commander: prevent setting nav_state after disarming to takeoff

* wrap in function
2025-10-10 09:59:26 -08:00
Peter van der Perk
edc7a2bb80
fmu-v6xrt: Add DTCM to heap (#25733)
Move ramvectors from DTCM to ITCM, this seems to better in general.
Also ITCM is marked as RO so is safer anyhow, now that DTCM is fully
unused we add DTCM region of 256kB to memory allocator. Increases usable
memory from 1536kB to 1792kB and decrease system load a bit since DTCM
is faster
2025-10-10 09:46:26 -08:00
Ramon Roche
2fba5b4c1a
ci: pull emscripten v4.0.15 to avoid c++17 errors (#25739)
https://github.com/emscripten-core/emscripten/issues/24850

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-10-10 09:43:20 -08:00
Jacob Dahl
12f6005c5c
romfs: allow target level airframe selection (#25677) 2025-10-10 11:29:27 -06:00
Jaeyoung Lim
b95784e804
Consume speedweight from FW longitudinal config (#25709)
* Consume speedweight from longitudinal config

* Constrain speed weight
2025-10-10 10:00:43 -07:00
Peter van der Perk
2f48cb4ef2
MR-CANHUBK344 NXP B3RB Rover support (#23897)
* s32k3xx: EMIOS allow independent frequencies for each channel

* mr-canhubk3: update config

* mr-canhubk344: Fix adap board detect

* mr-canhubk344: Use LPSPI1 (Port P1A) for SD card

* airframes: Add B3RB Ackermann rover config

See https://nxp.gitbook.io/mr-b3rb for more information about the NXP
B3RB platform. PX4 Support basic control for now
2025-10-09 23:28:43 -08:00
Ramon Roche
d6f7519df0 ci: builds all cache pip
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-10-09 20:57:06 -04:00
Ramon Roche
2eac99cd20 ci: AWS instance review and improved build caching
* Tone down the performance of some runners from 8cpu+ down to 4cpu+
* Improve and document caching on PX4 builds with an improved ccache key strategy
* Review and document artifact upload logic for binaries uploaded to S3 and github
releases
* Future Improvement, introduce runners configuration file so we can
control more precesily which instances are allocated.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2025-10-09 20:57:06 -04:00
Hamish Willee
d85994b521 Make Github docs-deploy workflow only run manually 2025-10-08 15:00:53 -07:00
Andrew Wilkins
60dd343152
updated test cards for optical flow flights (#25676)
* updated test cards for optical flow flights

* Update docs/en/test_cards/mc_07_optical_flow_failure.md

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

* updated docs

* fixed mis-type in url

* subedit

* Update docs/en/test_cards/mc_06_optical_flow.md

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

* updated test card

* changes to file name and some instructions

---------

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-10-08 11:02:03 -08:00
PX4 Build Bot
d3bcdf8ba7
New Crowdin translations - zh-CN (#25661)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-08 16:19:27 +11:00
PX4 Build Bot
fa706c905f
New Crowdin translations - uk (#25660)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-08 15:58:35 +11:00
mahima-yoga
be29f647cb logging: log sensor_baro with add_topic_multi
Ensures external barometers (e.g., over UAVCAN) are also logged.
2025-10-06 10:19:01 +02:00
annoybot
a443997264
docs: add a new rust ULOG parser to the list of known parsers 2025-10-06 09:11:54 +02:00
Jacopo Panerati
39837d44b1
upload_log.py: add server as an argument (#25702) 2025-10-06 09:03:09 +02:00
PX4 Build Bot
66436a980c
New Crowdin translations - ko (#25706)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-05 15:24:37 +11:00
JoelJ18
6be7abb13d
MicroStrain driver: Expanded aiding support (#25673)
* External mag + Optical flow aiding

* Adding autostart

* global position eph fix

* write fix

* configureAidingSources split + frame fixes + params cleanup

* configureGnssAiding fix + params cleanup

* Redundant param removal

* External Heading fix
2025-10-03 19:13:04 -08:00
Maciej Małecki
1a3cdecb39
boards/mro/pixracerpro: enable additional UARTs (#22516)
The UARTs themselves were already present, just not configured under any
alias.
Follow [ArduPilot UART naming for this
board](https://ardupilot.org/plane/docs/common-pixracer-pro.html#default-uart-order),
out of necessity: it's the only combination that makes sense and is
understood by QGroundControl.
(For example, I've attempted configuring the additional UARTs as `_EXT1`
and `_EXT2`, but only `_EXT2` was understood by QGC.)

Trying to actually use the FrSky telemetry port for anything without
configuring FrSky telemetry on a different port may be impossible without
modifying the board's `init/rc.board_extras`.
(Should that script be modified to check if the port is used for
anything else?)

Skip naming the RC input port.

Fixes #21455.
2025-10-03 10:03:40 -08:00
QiTao Weng
849819629a
dds: add adsb topic (#25652) 2025-10-03 19:01:40 +01:00
Marco Hauswirth
6e579cb75a improve gnss altitude fusion starting logic 2025-10-03 10:11:41 +02:00
Marco Hauswirth
c2c721a2d6 * add gnss-fault flags to estimator-status msg
* react to comments
2025-10-03 10:11:41 +02:00
Marco Hauswirth
3712af8b7f * avoid gnss-based altitude reset in DR-mode
* add hysteresis for re-enabling fusion
* disable lat/lon/vel fusion on gnss_hgt_fault
2025-10-03 10:11:41 +02:00
mahima-yoga
86f2fdfd7d docs: add description to AutotuneAttitudeControlStatus.msg 2025-10-02 15:17:40 +02:00
mahima-yoga
519e3f60af docs: update fixed-wing autotune docs 2025-10-02 15:17:40 +02:00
mahima-yoga
614e15d5f4 fw-autotune: detect and limit amplitude of ID maneuver
Increases signal ampltiude on a 1Hz sin input until a target rate (R/P/Y = 0.8/0.5/0.5 rad/s) is reached. Identification signal is then scaled with this ampltitude instead of the user-defined parameter.
2025-10-02 15:17:40 +02:00
Alexander Lerach
97a97991c1 airframes 4017, 4041: exclude from v6x targets to save flash 2025-10-02 14:43:05 +02:00
Hamish Willee
7565318107
Update MAVLink to latest (#25692)
Co-authored-by: PX4BuildBot <bot@pixhawk.org>
2025-10-01 10:54:18 -08:00
Matthias Grob
a0810462fd ManulControlSelector: initialize disabled such that it's obvious if paramter is not loaded correctly 2025-10-01 18:31:12 +02:00
Matthias Grob
661b0655dc ManualControlSelector: unify validity conditions into one place 2025-10-01 18:31:12 +02:00
Matthias Grob
365525269e ManualControlSelector: simplify prioritization logic 2025-10-01 18:31:12 +02:00
Matthias Grob
f1f3c81566 Update COM_RC_IN_MODE enum naming 2025-10-01 18:31:12 +02:00
Matthias Grob
acf5766f9c commander_params: rewrite COM_RC_IN_MODE documentation 2025-10-01 18:31:12 +02:00
Tobias Büchli
2c062a45ba feat: expand to 4 modes with more priority options 2025-10-01 18:31:12 +02:00
Tobias Büchli
25c66a7ee5 feat: extend COM_RC_IN_MODE 5 and 6 to source ID ascending and descending priority modes 2025-10-01 18:31:12 +02:00
Luka Filipović
6c69d86d7e mission_base: on mission end, set loiter position from previous position type setpoint 2025-10-01 17:44:58 +02:00
Hamish Willee
32a74afbb8
Add workflow_dispatch to AWS docs deployment 2025-10-01 17:05:44 +10:00
chfriedrich98
a6bf5a9066
Rover: Simulation Update (#25644)
* gz: update submodule

* rover: update simulation airframes

* docs: rover simulation
2025-09-30 23:04:07 -08:00
Hamish Willee
5dab3dd3d2
[Main] Fix up versions to point to v1.16 (#25691) 2025-10-01 15:50:59 +10:00
Jacob Dahl
4766f3c1d3
board: px4_fmu-v6x: remove land detector and landing target estimator from uuv and spacecraft targets (#25688) 2025-09-30 21:50:32 -08:00
Hamish Willee
5999cad92c
Update aws docs deployment (match current 1.16) (#25680) 2025-10-01 15:40:43 +10:00
PX4 Build Bot
bd71881f8a
New Crowdin translations - ko (#25659)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-10-01 13:53:06 +10:00
Hamish Willee
4dab1108c3
VehicleOdometry.msg - clarify frames (#23444) 2025-10-01 10:03:09 +10:00
Henry Kotzé
dbd13070e5
esp32: pwm register updates correctly on change (#25653)
- removed the bug where some overflow would occur on the PWM signal when
  changing the duty cycle of the signal after power up. (PWM_MAIN_DIS,
PWM_MAIN_MIN or PWM_MAIN_MAX)

removed commented code

cleanup of previous cherry-pick

Co-authored-by: henrykotze <henry@autonosky.com>
2025-09-30 11:15:06 -08:00
Jacob Dahl
f3b2599d33
ekf: range fusion: fix height ref (#25654)
* ekf2: range height skip "unhealthy" samples, but respect timeout

 - we should never directly use an "unhealthy" range finder sample for
   state corrections or resets, but we also shouldn't immediately abort
   active rng_hgt until the timeout has passed

* check starting_conditions_passing once

* ekf2: conditional range aid change height ref

---------

Co-authored-by: Daniel Agar <daniel@agar.ca>
2025-09-30 11:14:26 -08:00
Daniel Agar
e3309b9f87
ekf2: rng don't allow bad measurement in bad_acc_vertical (#25636)
- if bad vertical acceleration is detected there's an emergency case
   where rejected range finder observations are allowed to be used, but
   this still can't happen if the sample itself is known to be bag
2025-09-30 11:14:04 -08:00
Matthias Grob
4d2170c13e docs/failure_injection: motor off requires CA_FAILURE_MODE to be set 2025-09-30 11:23:09 +02:00
Matthias Grob
e59afce5db Enable directly injecting motor failures using e.g. failure motor off -i 1
Only if SYS_FAILURE_EN is enabled and CA_FAILURE_MODE is > 0.
2025-09-30 11:23:09 +02:00
Matthias Grob
786e0a12c2 FailureInjector simplification rework 2025-09-30 11:23:09 +02:00
Matthias Grob
cefa41f85c failure command: fix array bound seg fault with e.g. failure motor -i 1 2025-09-30 11:23:09 +02:00
Matthias Grob
7f2a67a588 Commander: split out failure injection class into its own file 2025-09-30 11:23:09 +02:00
Jacob Dahl
bacb30650c
uavcan: don't init ESC if UAVCAN_ENABLE isn't set for ESC 2025-09-29 15:40:33 -04:00
Daniel Agar
900a5ede01
ekf2: range height skip "unhealthy" samples, but respect timeout (#25634)
* ekf2: range height skip "unhealthy" samples, but respect timeout

 - we should never directly use an "unhealthy" range finder sample for
   state corrections or resets, but we also shouldn't immediately abort
   active rng_hgt until the timeout has passed

* check starting_conditions_passing once

---------

Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2025-09-29 11:23:37 -08:00
Alexander Lerach
03e6f40995
nuttx submodule update (dcache fix)
* nuttx submodule update (dcache fix)
2025-09-29 18:04:26 +02:00
airpixel-cz
2b0ea50d16
mavlink: parameters: fix camera and cannode param message routing 2025-09-26 23:16:05 -08:00
Daniel Agar
7eec4c9814 ekf2: fix gravity aid src fused flag 2025-09-26 11:45:54 -04:00
Matthias Grob
053cc9aecc Fix newlines broken from #25499 66b07d82196c8adc835eb1880bccfd16c4c40ea1 2025-09-26 14:01:55 +02:00
chfriedrich98
66b07d8219
Docs: Rover API (#25499)
* docs: add RoverSetpointTypes

* docs: add rover api

* docs: remove rover offboard mavlink support

* docs: fix broken links

* Apply suggestion from @hamishwillee

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-26 10:33:35 +10:00
Sriram Kanagalingham
5023174715
tools: mavlink_shell: fix backspace handling
Changed ASCII command from ASCII #127 to ASCII #8

Good: Changed ASCII command from ASCII #127 to ASCII #8

Reported-by: jsm09a <https://github.com/jsm09a>

Signed-off-by: Siri <sriramj2@hotmail.com>
2025-09-25 13:14:13 -08:00
Daniel Agar
469fe62166 logger: cleanup crypto defines 2025-09-25 15:10:21 -04:00
Daniel Agar
6f4e873bce logger: only include crypto params if enabled 2025-09-25 15:10:21 -04:00
Jacob Dahl
35f882cd3c
commander: accel cal rotate offsets and scales from body frame back into sensor frame before saving (#25626)
- fixes https://github.com/PX4/PX4-Autopilot/issues/25606
2025-09-25 14:12:15 -04:00
Daniel Agar
a6f8b00a6a ekf2: SensorRangeFinder purge unused Sensor interface 2025-09-25 14:07:43 -04:00
Daniel Agar
2347cb9e50 ekf2: SensorRangeFinder delete unused faulty flag 2025-09-25 11:29:54 -04:00
Silvan Fuhrer
854765934b ros2_docs: fix new line 2025-09-25 10:52:55 -04:00
Hamish Willee
cbf39f5ceb
msg: AirspeedValidated - uorb topic to standard (#25579)
* AirspeedValidated - uorb topic to standard

* Apply suggestions from code review

* Update msg/versioned/AirspeedValidated.msg

* Fix up links to renamed uORB constants

---------

Co-authored-by: PX4BuildBot <bot@pixhawk.org>
2025-09-25 11:02:02 +02:00
Beat Küng
7dcbad536d
docs: add page for ROS 2 waypoint missions (#25492)
* docs: add page for ROS 2 waypoint missions

Corresponds to https://github.com/Auterion/px4-ros2-interface-lib/pull/137

* Ros lib subedit

* Waypoint missions - prettier

* Make compatibility very clear

* docs: add ROS-based waypoint missions to release notes

* docs: ROS-based waypoint mission clarifications

* Subedit intro

* docs: ros waypoint missions clarifications

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-25 17:27:25 +10:00
jmackay2
bbc6775706
Update gazebo 24.04 documentation (#25586) 2025-09-25 17:07:23 +10:00
Hamish Willee
367f12b338
Don't build translations on push (only PR) (#25631) 2025-09-25 17:05:23 +10:00
PX4 Build Bot
becca14991
New Crowdin translations - zh-CN (#25629)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-25 13:52:43 +10:00
Hamish Willee
9b83c9ba30
Update docs_deploy.yml to also run on translation PRs (#25630)
Added support for localization document translations in the workflow.
2025-09-25 13:35:34 +10:00
PX4 Build Bot
f77c1e425a
New Crowdin translations - ko (#25627)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-25 12:34:45 +10:00
PX4 Build Bot
db20eccf3a
New Crowdin translations - uk (#25628)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-25 12:34:20 +10:00
Daniel Agar
e342640698 drivers/gps: warn if gps_inject_data publications have been missed 2025-09-24 22:11:49 -04:00
Ramon Roche
e7c5001e94
ci: stale and close issues/prs with no activity (#25554)
- Marked as stale if no activity for 90 days
 - Closed if no activity for 30 days after being marked as stale
 - Helpful stale and close messages

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
Co-authored-by: Daniel Agar <daniel@agar.ca>
2025-09-24 22:06:56 -04:00
Hamish Willee
bec570b3b4
Update ULog file format documentation (#25624)
Added information about tools for converting ULog to other formats.
2025-09-25 11:02:16 +10:00
Matthew Berk
8625a902f7
Add warning for known issue in FW RTL landings (#25587)
* Add warning for known issue in FW RTL landings

Currently there is an issue in 1.15.0...main which causes a FW aircraft to veer off course during the final approach on landing. This could cause a personnel safety risk and should be noted.

* Update docs/en/flight_modes_fw/return.md

* Update docs/en/flight_modes_fw/return.md

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-25 09:11:53 +10:00
Radiolink
2ec0407815
boards: add Radiolink PIX6 (#25562)
* boards: add Radiolink PIX6

* Fix newlines and format issues

* Fix newlines issues

* docs:add radiolink_pix6.md document

* Subedit, prettier, get images

* Add hero image

* docs:Add some necessary instructions

* Subedit

---------

Co-authored-by: Ubuntu <diaohuayuan@radiolink.com.cn>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-24 16:17:43 -04:00
Beat Küng
a5c4cc38ac
lightware_laser_i2c: add binary protocol support for SF30/d (#25570)
Using the SF30/d with the legacy protocol caused a delay of the
measurements of ~1s. This is not the case with the binary protocol anymore.

The initialization sequence used for SF20/c did not work and is therefore
updated.

Tested on both SF20/c and SF30/d.
2025-09-24 16:17:25 -04:00
Jacob Dahl
26760e3c2c
ekf2: reduce EKF2_MIN_RNG to 0.01 (#25574) 2025-09-24 15:27:24 -04:00
Parkhb1106
3925562ce6
commander: fix tune_control timestamp on initial publication 2025-09-24 10:55:32 -08:00
Louis-max-H
e71faf38a0
Septentrio GNSS resilience reporting (#25012)
Co-authored-by: Tory9 <vvpost05@gmail.com>
2025-09-24 11:08:10 -04:00
Beniamino Pozzan
8fe2a2218e
docs: clarify Micro-XRCE-DDS-Agent versions ROS 2 compatibility (#25591)
---------

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-24 09:24:03 +01:00
PX4 Build Bot
f2c0e09505
New Crowdin translations - zh-CN (#25615)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 17:42:43 +10:00
PX4 Build Bot
b26046e137
New Crowdin translations - uk (#25614)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 17:41:56 +10:00
PX4 Build Bot
82ecc9c8c7
New Crowdin translations - ko (#25613)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 17:41:50 +10:00
Hamish Willee
a464825b33 Fix links to param ref in FW position tuning guide 2025-09-24 09:30:53 +02:00
PX4 Build Bot
8efb5230ae
New Crowdin translations - zh-CN (#25612)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 17:25:45 +10:00
PX4 Build Bot
b28bdd600b
New Crowdin translations - uk (#25611)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 17:25:13 +10:00
PX4 Build Bot
11359791a0
New Crowdin translations - ko (#25610)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 17:25:03 +10:00
PX4 Build Bot
26c420c1a6
New Crowdin translations - zh-CN (#25609)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 17:14:17 +10:00
Beat Küng
cf0def1b69
docs: minor api updates for ros modes (#25563) 2025-09-24 17:13:04 +10:00
PX4 Build Bot
cb9641c989
New Crowdin translations - zh-CN (#25608)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 16:19:00 +10:00
PX4 Build Bot
9b6d07ee67
New Crowdin translations - ko (#25588)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 10:33:44 +10:00
PX4 Build Bot
be3354d238
New Crowdin translations - uk (#25589)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 10:33:34 +10:00
PX4 Build Bot
db58ecb5eb
New Crowdin translations - zh-CN (#25590)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-24 10:33:22 +10:00
Hamish Willee
9980dccf43
[Docs] Fix broken links internal (#25604) 2025-09-24 10:10:08 +10:00
Hamish Willee
06a3f15d39
[Docs] update metadata (#25603) 2025-09-24 10:01:55 +10:00
Alexander Lerach
0a8a5472ec nuttx submodule update (fix sem holder list) 2025-09-23 10:02:49 +02:00
Beat Küng
9670eb69b3 commander: use double literals to avoid implicit conversion
Fixes a CI failure for fuzzing and macos:
https://github.com/PX4/PX4-Autopilot/actions/runs/17906277709/job/50907922642

/__w/PX4-Autopilot/PX4-Autopilot/src/modules/commander/Commander.cpp:471:37: fatal error: implicit conversion increases floating-point precision: 'float' to 'double' [-Wdouble-promotion]
  470 |                         bool ret = send_vehicle_command(vehicle_command_s::VEHICLE_CMD_EXTERNAL_ATTITUDE_ESTIMATE,
      |                                    ~~~~~~~~~~~~~~~~~~~~
  471 |                                                         0.f, 0.f, heading, 0.f, 0.f, 0.f, heading_accuracy);
      |                                                                                      ^~~
1 error generated.
2025-09-22 09:31:26 -07:00
Beat Küng
061f34919e ci: JasonEtco/create-an-issue needs permissions to create issues 2025-09-22 09:31:26 -07:00
Claudio Chies
b730acfc76 BOARDS: MISC: remove "auto-generated" for files which are not autogenerated anymore 2025-09-22 15:02:24 +02:00
Claudio Chies
d3acee315a BAT: Consolidate the highest feasible number of batteries into just 3 2025-09-22 15:02:24 +02:00
Claudio Chies
f90d6c03fc LOG: increase number of loggable batteries to 3 2025-09-22 15:02:24 +02:00
H S Helson Go
b081cf5c31
ucrxe_dds_client: Implement simple parameter-driven message namespace (#25444)
* ucrxe_dds_client: Implement simple parameter-driven message namespace

* chore: remove change of parameter_reference.md

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>

---------

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
Co-authored-by: Beniamino Pozzan <beniamino.pozzan@gmail.com>
2025-09-20 16:32:00 +01:00
Alex Klimaj
91fa0f4693
boards: ark x20 and f9p gps (#25149)
* boards: ark x20 gps

* update startup

* fix cmake variants

* boards: ark f9p gps

* ark x20 gps add serial dma hrt call

* update gps submodule with x20 support

* update default constellations

* fix mag rotation
2025-09-19 10:06:03 -08:00
Hamish Willee
799f910ca9
uORB message layout fixes (#25581)
* uORB message layout fixes

* Apply suggestions from code review

---------

Co-authored-by: PX4BuildBot <bot@pixhawk.org>
2025-09-19 09:06:01 +10:00
bresch
c06ba93175 mc-auto: handle EKF heading reset 2025-09-18 17:00:16 +02:00
bresch
82308da18d ekf2: support heading external update from MAV_CMD_EXTERNAL_ATTITUDE_ESTIMATE 2025-09-18 17:00:16 +02:00
bresch
eba0b99950 ekf2: remove unnecessary code
The delta angles are now correctly accumulated in case
multiple resets are triggered during the same epoch
2025-09-18 17:00:16 +02:00
bresch
361d66bb44 ekf2: add reporting of gnss_vel status flag 2025-09-18 17:00:16 +02:00
Silvan Fuhrer
d2e4d85bce Add Altitude Cruise mode
-add new NAVIGATION_STATE_ALTITUDE_VOYAGER
-this mode does require manual control to enter
-but you can disable the manual control loss failsafe to continue
flying in case of manual control loss
-for MC: in throttle and yaw are controlled like in Altitude mode,
the tilt is controlled via integrated rate input (similar to Acro,
but with tilt limit)

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-09-18 15:50:10 +02:00
Matthias Grob
5c5bf0b83d Remove parameters MPC_{XY/Z/YAW}_MAN_EXPO and use default value instead 2025-09-18 15:50:10 +02:00
Matthias Grob
5b94557310 Sticks: change internal order and sign of stick positions 2025-09-18 15:50:10 +02:00
Matthias Grob
234e4688b0 Sticks: calculate expo only upon getter call 2025-09-18 15:50:10 +02:00
Matthias Grob
2e910fe185 FlightTask{Altitude+Orbit}: use getter for specific stick value instead of entire array 2025-09-18 15:50:10 +02:00
Matthias Grob
2bf9fce577 Sticks: globalize MPC_HOLD_DZ to MAN_DEADZONE 2025-09-18 15:50:10 +02:00
mahima-yoga
a9720cf1ef FixedWingModeManager: use Sticks library 2025-09-18 15:50:10 +02:00
mahima-yoga
a514289a68 Move Stick class into a globally available library 2025-09-18 15:50:10 +02:00
Pernilla
2cb97e79b9
FlightTaskManualAccelerationSlow: Acquire gimbal control until expected IDs are reported (#25565)
* Acquire control until expected id s are reported

* require an updated message and allow release in case early exit of FlightTask

* FlightTask Gimbal: acquiring logic simplification suggestion

* formatting

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
2025-09-18 11:09:09 +02:00
Hamish Willee
e8ccb23dc8
PurePursuitStatus.msg - whitespace indentation (#25544) 2025-09-18 17:33:36 +10:00
Hamish Willee
dd65380bf3
Ark GNSS CAN - link to the DroneCAN docs for fixed base (#25382)
* Ark GNSS CAN - link to the DroneCAN docs for fixed base

* Update docs/en/dronecan/ark_rtk_gps.md
2025-09-17 22:58:56 -08:00
Hamish Willee
0303d36e60
RoverAttitudeSetpoint et al - whitespace (#25545)
* RoverAttitudeSetpoint - whitespace

* Format RoverAttitudeStatus.msg for consistency

* Format RoverPositionSetpoint.msg for consistency

* Format msg/RoverRateSetpoint.msg for consistency

* Format msg/RoverRateStatus.msg for consistency

* Format msg/RoverSpeedSetpoint.msg for consistency

* Reformat RoverSpeedStatus.msg for consistency

* Fix formatting of pid_yaw_rate_integral field

* Fix formatting in RoverSteeringSetpoint.msg

* Fix formatting in RoverThrottleSetpoint.msg

* Apply suggestions from code review
2025-09-18 15:59:54 +10:00
Alex Espinoza
78d602e68a
switched instructions for cloning Micro-XRCE-DDS from v2.4.2 to v2.4.3 (#25525)
* switched instructions for clodning Micro-XRCE-DDS from v2.4.2 to v2.4.3 since v2.4.2 references a bad fast-dds tag that doesnt build

* reverted uxrce instructions changes from docs/ko docs/uk and docs/zh sin
ce they are generated automatically and should not be changed manually
2025-09-17 11:57:32 +10:00
Jacob Dahl
2cc64c438f
docs: UAVCAN_ESC_IFACE (#25560)
* dronecan: esc: change UAVCAN_ESC_IFACE to 2 to default to only outputting on CAN2

* revert param default and update docs

* Subedit

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-16 15:53:00 -08:00
Eric Katzfey
e72ffa3b1f
QURT: Changed the non-blocking UART write to use the blocking write with a comment that Qurt (#25573)
still needs a non-blocking write implemented.
2025-09-16 10:40:19 -08:00
Pernilla
0c8f5ebc32
Navigator: delay neutral gimbal command (#25551)
* Set gimbal neutral after delay
2025-09-16 10:38:47 +02:00
Rowan Dempster
d205d11c3d
Recovering UTC timestamps from ULog without sensor_gps (#25534)
* Added overloaded get_log_time util for fractional seconds

* Added write_info implementation for double info types

* Save boot time to .ulg via info message key boot_time_utc

* Changed time type from double to uint64_t, formatted

* Fixing get_log_time function doc
2025-09-15 16:18:26 -08:00
Daniel Agar
d3f912ad25
platforms: Serial new dedicated writeBlocking method (#25537)
* platforms: Serial new dedicated writeBlocking method

* finish writeBlocking()

* add back fsync

* updated posix, added string constant for port not open error

* format

* fix build

* remove fsync

* actually remove fsync

* remove fsync from write

* review feedback

---------

Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-09-15 15:22:49 -08:00
Daniel Agar
41d3403ec7
drivers/gps: prioritize non-blocking reads over injection (#25535) 2025-09-15 15:18:45 -08:00
PX4 Build Bot
a14cd9ad79
New Crowdin translations - ko (#25557)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-16 08:57:44 +10:00
PX4 Build Bot
d42aebe100
New Crowdin translations - uk (#25558)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-16 08:57:19 +10:00
PX4 Build Bot
0068fea2f5
New Crowdin translations - zh-CN (#25559)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-16 08:56:46 +10:00
Jacob Dahl
5d0bbaabb2 codestyle: exclude sgbecom submodule from style check 2025-09-15 11:18:52 -06:00
Jacob Dahl
27f9161458 ark: UAVCAN_ESC_IFACE per board, v6x uses CAN2 2025-09-15 10:37:53 -06:00
Silvan
db8a1f11a7 EstimatorCheck: fix reporting of low position accuracy failsafe
Signed-off-by: Silvan <silvan@auterion.com>
2025-09-12 14:16:16 +02:00
jmackay2
8669947bcb
Support Gazebo Jetty (#25521)
* Support Gazebo Jetty

* Gazebo jetty cmake spelling fix

---------

Co-authored-by: jmackay2 <jmackay2@gmail.com>
2025-09-11 19:30:27 -08:00
Jacob Dahl
1aad8b6ec9
serial: nuttx: revert tcdrain back to fsync (#25538)
* serial: nuttx: revert tcdrain back to fsync

* serial: do not print error on EAGAIN

---------

Co-authored-by: Alexander Lerach <alexander@auterion.com>
2025-09-11 12:32:34 -08:00
Matthias Grob
7b68c5dbfc
parameters: remove parameters_injected.xml and support for it in the build system (#25549)
This was apparently added 10 years ago to store metadata of UAVCAN components within the PX4 binary. The parameters in the xml are mostly early UAVCAN ESC parameters that are presumably out of date and not used. Also it does not scale to maintain metadata for all the possible UAVCAN components and it causes confusion when users read the metadata documentation because these parameters are not available in PX4. That's why I suggest to remove it.
2025-09-11 10:47:45 -08:00
Samuel Toledano
b2672910da
sbgecom: Implement sbgECom INS driver (#24137)
* Add new INS driver sbgECom

Implement sbgECom messages handling to provide IMU sensors, GNSS and EKF data to the autopilot
Be able to parametrize the serial port, baudrate and the communicating mode
Clone sbgECom library only if sbgecom support is enabled and apply a patch
Be able to send SBG Systems INS settings in several ways when starting sbgecom driver

* Fix sensor airspeed simulator units

* Fix HIGHRES_IMU pressure unit

* Allow HIGHRES_IMU to support 4 IMUs

* sbgECom: Add documentation

* Use submodule instead of fetching sbgECom using CMake

* Remove patch strategy

* Fix dates

* Remove patch file

* Update SBG dev type ID

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

---------

Co-authored-by: Samuel Toledano <samuel.toledano@sbg-systems.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2025-09-11 00:37:41 -08:00
SolderSyntax
05394162ce
Update dev_env_windows_wsl.md (#25441)
* Update dev_env_windows_wsl.md

Add info about enabling broadcasting or streaming to work with PX4 SITL on WSL and QGC on Windows.

* Update dev_env_windows_wsl.md

Fix links

* Update dev_env_windows_wsl.md

moved troubleshooting section at the bottom of WSL2<>Windows section.

* Move under troubleshooting

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-11 17:55:02 +10:00
Hamish Willee
d1da30911e
Update metadata and tidy a few docs (#25547)
* Fix up metadata except for uorb graphs

* Additional customization of startup tidy
2025-09-11 16:06:51 +10:00
Holden Ramsey
264b8fe277
Tools: Support Setup for Linux Mint (#25486) 2025-09-10 18:01:37 -08:00
JM Wang
47c0fef8c8
[DOCS] accton godwit ga1, a new manufacture board (#25411)
* Add docs for Accton-Godwit-GA1

* Update Accton-Godwit_GA1 in SUMMARY.md

add docs of accton’s new manufacturer board GA1 in TOC(SUMMARY.md)

* Subedit

* update wording in accton-godwit_ga1.md

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2025-09-11 09:34:13 +10:00
PX4 Build Bot
ae60c66613
New Crowdin translations - ko (#25481)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-11 08:30:54 +10:00
PX4 Build Bot
a20afc88c8
New Crowdin translations - uk (#25482)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-11 08:30:05 +10:00
PX4 Build Bot
2e84e55d93
New Crowdin translations - zh-CN (#25483)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-09-11 08:29:25 +10:00
rmahoney-skai
472e0657b5
Corrected max number of submodules displayed in VSCode (#25539)
Co-authored-by: rmahoney_skai <rmahoney@alakai.com>
2025-09-10 11:09:22 -08:00
Pernilla
b4395d5960
FlightTaskManualAcceleration: fix velocity constraint overwriting + altitude limit slow down
- The velocity constraint gets set from multiple places e.g. Position slow knob and altitude related slow down. Depending on the execution order it was overwritten with a higher value again not obeying a stricter limit.
- The slowdown used valocities as inputs instead of the ratio of available altitude.
2025-09-10 10:18:09 +02:00
Matthias Grob
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
renjieDLUT
3962419669
Update _assembly.md (#25527) 2025-09-07 17:58:33 -08:00
renjieDLUT
63e257782a
Update accelerometer.md (#25532) 2025-09-07 17:58:12 -08:00
Alexander Lerach
fd2b7cbea4
gps: update submodule (#25529) 2025-09-05 17:46:32 +02:00
Silvan Fuhrer
5f5a1aa4ab
Mavlink stream low bandwidth: add some important missing ones, update rates (#25524)
* mavlink stream low bandwidth: add GLOBAL_POSITION

Signed-off-by: Silvan <silvan@auterion.com>

* mavlink stream low bandwidth: add FIGURE_EIGHT_EXECUTION_STATUS

Signed-off-by: Silvan <silvan@auterion.com>

* mavlink stream low bandwidth: increase sending rate for all positioning messages to 2Hz

Signed-off-by: Silvan <silvan@auterion.com>

* mavlink stream low bandwidth: reduce sending rate for a couple of status messages

Signed-off-by: Silvan <silvan@auterion.com>

* mavlink stream low bandwidth: add ATTITUDE_QUATERNION

Signed-off-by: Silvan <silvan@auterion.com>

* mavlink stream low bandwidth: use ATTITUDE_QUATERNION instead of ATTITUDE as its preferred by GCS

* mavlink stream low bandwidth: add RAW_RPM for vehicles with ICE

* mavlink stream low bandwidth: increase VFR_HUD rate

* mavlink stream low bandwidth: decrease FIGURE_EIGHT_EXECUTION_STATUS rate

---------

Signed-off-by: Silvan <silvan@auterion.com>
Co-authored-by: Alexander Lerach <alexander@auterion.com>
2025-09-05 16:28:09 +02:00
Claudio Chies
1840c0db48
UAVCAN:BAT: improve remaining time calculation (#25500)
* UAVCAN:BAT: improve remaining time calculation

* UAVCAN:BAT: fix time_remaining calculation, bugfixes, improved filter convergence time

* UAVCAN:BAT: remove BatteryInfo Publishing if no valid info

* UAVCAN + Battery library: suggestions while reviewing

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
2025-09-05 10:57:13 +02:00
alexklimaj
89c6d24946 Update GPS submodule 2025-09-04 17:02:31 -06:00
Alex Klimaj
af6bf931c1
uavcan bootloader watchdog_pet during long flashes (#25523) 2025-09-04 12:20:03 -08:00
fbaklanov
fc8e2021e7
A driver for EULER-NAV Baro-Inertial AHRS (#24534)
* Create a dummy BAHRS driver

* Resolve compilation

* Switch back to cpp, fix compilation

* Create module.yaml

* Implement required module APIs and open serial port

* Revise info and error messages

* Poll serial port

* Push received bytes into the ring buffer

* Process data buffer (1)

* Process data buffer (2)

* Process data buffer (3)

* Process data buffer (4)

* Process data buffer (5)

* Process data buffer (6)

* Implement and use initialize() and deinitialize() methods

* Implement print_usage() and print_status()

* Collect all config constants in a class

* Put info about next found message into a class

* Print CRC failure count

* Remove unneeded print

* Add comments

* Disable EKF2, advertise vehicle attitude

* Decode and publish BAHRS signals (1)

* Run the driver as an additional source of sensor signals

* Add tiny noise to baro-inertial pressure signal

* Fix the sensor ID

* Add copyrights

* Fix formatting

* Remove redundant newline character

* Fix long parameter name

* Fix findings (1)

* Fix finding (2)

* Fix formatting

* Fix the timeout value

* Remove aliases

* Fix copyright

* Fix indent

* Comply with naming convention

* Rework comparison to false

* Reduce nesting (1)

* Reduce nesting (2)

* Reduce nesting (3)

* Fix BAHRS sensor ID
2025-09-04 09:31:36 -08:00
Silvan Fuhrer
e6f60ef403
Sensors: remove some distance sensors from COMMON_DISTANCE_SENSOR again (#25522)
* distance sensors common: remove DISTANCE_SENSOR_TERARANGER

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

* distance sensors common: remove DISTANCE_SENSOR_CM8JL65

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

---------

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-09-04 09:28:37 -08:00
2379 changed files with 98797 additions and 25150 deletions

View File

@ -3,92 +3,45 @@ description: Create a report to help us improve
title: "[Bug] "
labels: ["bug-report"]
body:
- type: markdown
attributes:
value: |
**Tips for a great bug report:**
- Describe what went wrong and what you expected
- Include a flight log link from [logs.px4.io](http://logs.px4.io/) if possible
- Mention your PX4 version, flight controller, and vehicle type if relevant
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of the bug.
description: A clear description of the bug and what you expected to happen.
placeholder: |
What happened and what did you expect instead?
Steps to reproduce (if applicable):
1.
2.
3.
validations:
required: true
- type: textarea
attributes:
label: To Reproduce
label: Flight Log / Additional Information
description: |
Steps to reproduce the behavior.
1. Drone switched on '...'
2. Uploaded mission '....' (attach QGC mission file)
3. Took off '....'
4. See error
validations:
required: false
**Flight log** (highly recommended for flight-related issues):
- Upload to [PX4 Flight Review](http://logs.px4.io/) and paste the link
- type: textarea
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: false
- type: textarea
attributes:
label: Screenshot / Media
description: Add screenshot / media if you have them
- type: textarea
attributes:
label: Flight Log
description: |
*Always* provide a link to the flight log file:
- Download the flight log file from the vehicle ([tutorial](https://docs.px4.io/main/en/getting_started/flight_reporting.html)).
- Upload the log to the [PX4 Flight Review](http://logs.px4.io/)
- Share the link to the log (Copy and paste the URL of the log)
**Additional details** (if relevant):
- PX4 version (output of `ver all` in MAVLink Shell)
- Flight controller model
- Vehicle type (multicopter, fixed-wing, VTOL, etc.)
- Screenshots or media
placeholder: |
# PASTE HERE THE LINK TO THE LOG
Flight log link:
Version:
Hardware:
validations:
required: false
- type: markdown
attributes:
value: |
## Setup
- type: textarea
attributes:
label: Software Version
description: |
Which version of PX4 are you using?
placeholder: |
# If you don't know the version, paste the output of `ver all` in the MAVLink Shell of QGC
validations:
required: false
- type: input
attributes:
label: Flight controller
description: Specify your flight controller model (what type is it, where was it bought from, ...).
validations:
required: false
- type: dropdown
attributes:
label: Vehicle type
options:
- Multicopter
- Helicopter
- Fixed Wing
- Hybrid VTOL
- Airship/Balloon
- Rover
- Boat
- Submarine
- Other
- type: textarea
attributes:
label: How are the different components wired up (including port information)
description: Details about how all is wired.
- type: textarea
attributes:
label: Additional context
description: Add any other context about the problem here.

View File

@ -1,4 +1,4 @@
blank_issues_enabled: false
blank_issues_enabled: true
contact_links:
- name: Support Question
url: https://docs.px4.io/main/en/contribute/support.html#forums-and-chat

View File

@ -1,22 +1,9 @@
<!--
Thank you for your contribution!
Get early feedback through
- Dronecode Discord: https://discord.gg/dronecode
- PX4 Discuss: http://discuss.px4.io/
- opening a draft pr and sharing the link
-->
### Solved Problem
When ... I found that ...
Fixes #{Github issue ID}
### Solution
- Add ... for ...
- Refactor ...
### Changelog Entry
For release notes:
@ -27,11 +14,10 @@ Documentation: Need to clarify page ... / done, read docs.px4.io/...
```
### Alternatives
We could also ...
### Test coverage
- Unit/integration test: ...
- Simulation/hardware testing logs: https://review.px4.io/
### Context
Related links, screenshot before/after, video
-->

View File

@ -0,0 +1,48 @@
---
applyTo: "docs/en/**"
---
# Review Guidelines docs/en Tree
## File System & Structure
- **Naming:** Use `lowercase_with_underscores` for all filenames. No spaces.
- **Hierarchy:** Markdown files must reside exactly in a first-level category folder.
- Valid: `docs/en/category/file.md`
- Invalid: `docs/en/category/subcategory/file.md`
- **Text Files:** Any `.txt` or `.text` files must start with an underscore (e.g., `_notes.txt`).
- **Assets:** All images/non-docs must be in `/docs/assets/`. Deep nesting is permitted here.
- **Formats:** Prefer **SVG** for diagrams and **PNG** for screenshots. Flag JPG files.
## Markdown & Style
- **Headings:** Use Title Case ("First Letter Capitalisation").
- The Page Title must be the only H1 (`#`). All others must be `##` or lower.
- Do not apply bold or italic styling inside a heading.
- **Formatting:**
- **Bold:** Only for UI elements (buttons, menu items).
- **Italics (Emphasis):** For tool names (e.g., *QGroundControl*).
- **Inline Code:** Use backticks for file paths, parameters, and CLI commands (e.g., `prettier`).
- **Structure:** End every line at the end of a sentence (Semantic Line Breaks).
## Linking & Navigation
- **Standard Links:** Use standard inline syntax: `[link text](../category/filename.md)`.
Note relative link.
- **Table Links:** To keep tables readable, use reference-style links.
- Definition: `[Link Name]: https://example.com` (placed below the table).
- Usage: `[Link Name]` within the table cell.
- **Images:** All image links must include a descriptive, accessible alt-text in the brackets: `![Detailed description of the image content](../../assets/path/to/image.png)`.
Note that all images should be relative references to images stored in the assets folder, which should be two folders below the any markdown file (as they are stored in a "category" subfolder)
- **Standard Links:** Use standard inline syntax: `[link text](../category/filename.md)`. Note the use of relative links.
- **Table Links:** To keep tables easier to edit, prefer reference-style links.
- Definition: `[Link Name]: https://example.com` (placed below the table).
- Usage: `[Link Name]` within the table cell.
- **Images:** All image links must include a descriptive, accessible alt-text: `![Detailed description of the image content](../../assets/path/to/image.png)`.
- **Note:** All images must be relative references to the `/docs/assets/` folder. Since documents are nested in a category folder, this is usually two levels up (`../../assets/`).
## Quality Control
- **Prettier Check:** Ensure Prettier rules have been applied. If there is evidence of inconsistent indentation or spacing, request the author run `npx prettier --write .` before merging.
- **Language:** Enforce **UK English** spelling and grammar.

View File

@ -0,0 +1,212 @@
---
applyTo: "src/drivers/**"
---
# PX4 Driver Review Instructions
This file provides guidelines for reviewing driver files in the `src/drivers/` directory.
## Copyright Statements
### Required Files
All source files (`.cpp`, `.c`, `.hpp`, `.h`, `CMakeLists.txt`) MUST include a copyright statement at the top.
**Exceptions:**
- `Kconfig` files
- `module.yaml` files
### Copyright Format
**For new files (created in 2026):**
```cpp
/****************************************************************************
*
* Copyright (c) 2026 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
```
**For updated files (originally created in 2015, updated in 2026):**
```cpp
/****************************************************************************
*
* Copyright (c) 2015-2026 PX4 Development Team. All rights reserved.
*
* [... rest of copyright text ...]
*
****************************************************************************/
```
### Key Points
- First year should be the original creation year
- When updating an existing file, update the year range: `YYYY-2026`
- Use the current year (2026 in this case) for new files
- Maintain consistent formatting with other PX4 driver files
---
## Driver Self-Documentation
All drivers MUST be self-documenting through the `print_usage()` method.
### Required Implementation
Every driver `.cpp` file must implement a `print_usage()` method that includes:
1. **PRINT_MODULE_DESCRIPTION macro** - Contains markdown documentation
2. **Module identification** - Using PRINT_MODULE_USAGE_NAME and optionally PRINT_MODULE_USAGE_SUBCATEGORY
3. **Parameter documentation** - Relevant parameters, especially enablement parameters
### PRINT_MODULE_DESCRIPTION Structure
The description should follow this markdown format:
```cpp
PRINT_MODULE_DESCRIPTION(
R"DESCR_STR(
### Description
[Clear description of what the driver does and its primary functionality]
### Implementation
[Optional: High-level overview of how the driver works]
### Examples
[Optional: CLI usage examples if non-trivial]
$ module_name start -d /dev/ttyS1
$ module_name stop
)DESCR_STR");
```
### Required Sections
#### 1. Description Section
- Brief explanation of the driver's purpose
- Key features/capabilities
- Important parameters (especially enable parameters like `SENS_XX_CFG`)
#### 2. Documentation Links
When applicable, include links to user documentation:
```cpp
Setup/usage information: https://docs.px4.io/main/en/sensor/[sensor-name].html
```
#### 3. Examples Section (when relevant)
Provide CLI usage examples for non-trivial commands:
```cpp
### Examples
Attempt to start driver on a specified serial device.
$ vectornav start -d /dev/ttyS1
Stop driver
$ vectornav stop
```
### Complete Example
```cpp
int MyDriver::print_usage(const char *reason)
{
if (reason) {
PX4_WARN("%s\n", reason);
}
PRINT_MODULE_DESCRIPTION(
R"DESCR_STR(
### Description
This driver interfaces with the XYZ sensor via I2C/SPI. It provides
distance measurements and is automatically started when SENS_XYZ_CFG
is set to the appropriate value.
Key features:
- Distance range: 0.2m to 50m
- Update rate: up to 100Hz
- I2C and SPI support
Setup/usage information: https://docs.px4.io/main/en/sensor/xyz_sensor.html
### Examples
Start driver on I2C bus 1 with address 0x29:
$ xyz_sensor start -X -b 1 -a 0x29
)DESCR_STR");
PRINT_MODULE_USAGE_NAME("xyz_sensor", "driver");
PRINT_MODULE_USAGE_SUBCATEGORY("distance_sensor");
PRINT_MODULE_USAGE_COMMAND("start");
PRINT_MODULE_USAGE_PARAMS_I2C_SPI_DRIVER(true, true);
PRINT_MODULE_USAGE_PARAMS_I2C_ADDRESS(0x29);
PRINT_MODULE_USAGE_DEFAULT_COMMANDS();
return 0;
}
```
### Common Patterns by Driver Type
**For UART/Serial Drivers:**
```cpp
PRINT_MODULE_USAGE_PARAM_STRING('d', "/dev/ttyS3", "<file:dev>", "Serial device", true);
```
**For I2C/SPI Drivers:**
```cpp
PRINT_MODULE_USAGE_PARAMS_I2C_SPI_DRIVER(true, true);
PRINT_MODULE_USAGE_PARAMS_I2C_ADDRESS(0x76);
```
**For Sensor Drivers:**
```cpp
PRINT_MODULE_USAGE_SUBCATEGORY("distance_sensor"); // or imu, magnetometer, etc.
```
---
## Review Checklist
When reviewing driver files, verify:
- [ ] Copyright header is present (except Kconfig and module.yaml)
- [ ] Copyright year is correct (current year for new files, year range for updates)
- [ ] `print_usage()` method exists
- [ ] `PRINT_MODULE_DESCRIPTION` macro is present with markdown content
- [ ] Description section explains driver purpose clearly
- [ ] Relevant parameters are documented (especially enable parameters)
- [ ] Documentation links are included when available
- [ ] Examples are provided for complex CLI usage
- [ ] Module name and category are correctly specified
- [ ] Standard commands (start, stop, status) are documented
---
## Additional Resources
- Driver template examples: `src/drivers/*/` (various sensor types)
- Module macros: `platforms/common/include/px4_platform_common/module.h`
- Similar drivers for reference patterns (DShot, VectorNav, CrsfRc, etc.)

24
.github/runs-on.yml vendored Normal file
View File

@ -0,0 +1,24 @@
runners:
x86-small-runner:
cpu: [1, 2]
ram: [1, 4]
disk: default
spot: price-capacity-optimized
image: ubuntu24-full-x64
extras: s3-cache
x86-firmware-builder:
cpu: [4, 8]
ram: [8, 16]
disk: default
family: ["c7i", "m7i", "r7i"]
spot: price-capacity-optimized
image: ubuntu24-full-x64
extras: s3-cache
arm64-firmware-builder:
cpu: [4, 8]
ram: [8, 16]
disk: default
family: ["c7g", "m7g", "r7g"]
spot: price-capacity-optimized
image: ubuntu24-full-arm64
extras: s3-cache

View File

@ -26,11 +26,15 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
actions: read
jobs:
group_targets:
name: Scan for Board Targets
# runs-on: ubuntu-latest
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
timestamp: ${{ steps.set-timestamp.outputs.timestamp }}
@ -38,6 +42,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Cache Python pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**./Tools/setup/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Update python packaging to avoid canonicalize_version() error
run: |
pip3 install -U packaging
@ -48,12 +60,15 @@ jobs:
path: "./Tools/setup/requirements.txt"
- id: set-matrix
run: echo "::set-output name=matrix::$(./Tools/ci/generate_board_targets_json.py --group)"
name: Generate Build Matrix
run: echo "matrix=$(./Tools/ci/generate_board_targets_json.py --group)" >> $GITHUB_OUTPUT
- id: set-timestamp
run: echo "::set-output name=timestamp::$(date +"%Y%m%d%H%M%S")"
name: Save Current Timestamp
run: echo "timestamp=$(date +"%Y%m%d%H%M%S")" >> $GITHUB_OUTPUT
- id: set-branch
name: Save Current Branch Name
run: |
echo "branchname=${{
github.event_name == 'pull_request' &&
@ -70,7 +85,7 @@ jobs:
echo "$(./Tools/ci/generate_board_targets_json.py --group --verbose)"
setup:
name: Build Group [${{ matrix.group }}][${{ matrix.arch == 'nuttx' && 'x86' || 'arm64' }}]
name: Build [${{ matrix.runner }}][${{ matrix.group }}]
# runs-on: ubuntu-latest
runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false]
needs: group_targets
@ -80,6 +95,7 @@ jobs:
container:
image: ${{ matrix.container }}
steps:
- uses: runs-on/action@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0
@ -87,14 +103,24 @@ jobs:
- name: Git ownership workaround
run: git config --system --add safe.directory '*'
- name: Setup ccache
uses: actions/cache@v4
# ccache key breakdown:
# ccache-<system os>-<system arch>-<builder group>-
# ccache-<linux>-<arm64>-<aarch64-0>-
# ccache-<linux>-<x64>-<nuttx-0>-
- name: Cache Restore from Key
id: cc_restore
uses: actions/cache/restore@v4
with:
path: ~/.ccache
key: ${{ matrix.group }}-ccache-${{ needs.group_targets.outputs.timestamp }}
restore-keys: ${{ matrix.group }}-ccache-${{ needs.group_targets.outputs.timestamp }}
key: ${{ format('ccache-{0}-{1}-{2}', runner.os, matrix.runner, matrix.group) }}
restore-keys: |
ccache-${{ runner.os }}-${{ matrix.runner }}-${{ matrix.group }}-
ccache-${{ runner.os }}-${{ matrix.runner }}-
ccache-${{ runner.os }}-${{ matrix.runner }}-
ccache-${{ runner.os }}-
ccache-
- name: Configure ccache
- name: Cache Config and Stats
run: |
mkdir -p ~/.ccache
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
@ -102,10 +128,11 @@ jobs:
echo "compression_level = 6" >> ~/.ccache/ccache.conf
echo "max_size = 120M" >> ~/.ccache/ccache.conf
echo "hash_dir = false" >> ~/.ccache/ccache.conf
echo "compiler_check = content" >> ~/.ccache/ccache.conf
ccache -s
ccache -z
- name: Building [${{ matrix.group }}]
- name: Building Artifacts for [${{ matrix.targets }}]
run: |
./Tools/ci/build_all_runner.sh ${{matrix.targets}} ${{matrix.arch}}
@ -119,15 +146,27 @@ jobs:
name: px4_${{matrix.group}}_build_artifacts
path: artifacts/
- name: Cache Post Build Stats
if: always()
run: |
ccache -s
ccache -z
- name: Cache Save
run: ccache -s
if: always()
uses: actions/cache/save@v4
with:
path: ~/.ccache
key: ${{ steps.cc_restore.outputs.cache-primary-key }}
artifacts:
name: Upload Artifacts to S3
name: Upload Artifacts
# runs-on: ubuntu-latest
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
needs: [setup, group_targets]
if: contains(fromJSON('["main", "stable", "beta"]'), needs.group_targets.outputs.branchname)
if: startsWith(github.ref, 'refs/tags/v') || contains(fromJSON('["main","stable","beta"]'), needs.group_targets.outputs.branchname)
outputs:
uploadlocation: ${{ steps.upload-location.outputs.uploadlocation }}
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
@ -135,11 +174,36 @@ jobs:
path: artifacts/
merge-multiple: true
- name: Branch Name
- name: Choose Upload Location
id: upload-location
run: |
echo "${{ needs.group_targets.outputs.branchname }}"
# Determine upload location based on branch or tag with the following considerations:
# Destination: AWS S3 bucket px4-travis in folder Firmware/
# - If branch is main -> upload to master/
# - Older versions of QGC are hardocded to look for master/
# - If branch is stable or beta -> upload to stable/ or beta/
# - If a tag vX.Y.Z -> upload to vX.Y.Z/
# - Also update stable/ to point to the same version
#. - Older versions of QGC are hardocded to look for stable/
# - If a pull request -> do not upload
set -euo pipefail
- name: Uploading Artifacts to S3 [${{ needs.group_targets.outputs.branchname == 'main' && 'master' || needs.group_targets.outputs.branchname }}]
ref="${GITHUB_REF}"
branch=${{ needs.group_targets.outputs.branchname }}
location="$branch"
if [[ "$branch" == "main" ]]; then
location="master"
fi
if [[ "$ref" == refs/tags/v[0-9]* ]]; then
tag="${ref#refs/tags/}"
location="$tag"
fi
echo "uploadlocation=$location" >> $GITHUB_OUTPUT
- name: Uploading Artifacts to S3 [${{ steps.upload-location.outputs.uploadlocation }}]
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read
@ -149,25 +213,30 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'us-west-1'
SOURCE_DIR: artifacts/
DEST_DIR: Firmware/${{ needs.group_targets.outputs.branchname == 'main' && 'master' || needs.group_targets.outputs.branchname }}/
DEST_DIR: Firmware/${{ steps.upload-location.outputs.uploadlocation }}/
release:
name: Create Release and Upload Artifacts
permissions:
contents: write
# runs-on: ubuntu-latest
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
needs: [setup, group_targets]
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
# if we are uploading artifacts to a versioned folder
# we should also update the stable folder in the s3 bucket
- name: Uploading Artifacts to S3 [stable]
uses: jakejarvis/s3-sync-action@master
if: startsWith(github.ref, 'refs/tags/v')
with:
path: artifacts/
merge-multiple: true
args: --acl public-read
env:
AWS_S3_BUCKET: 'px4-travis'
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'us-west-1'
SOURCE_DIR: artifacts/
DEST_DIR: Firmware/stable/
- name: Upload Binaries to Release
# if build is a release triggered by a versioned tag then create a github release
# and upload the build artifacts. A draft release is created so that the release
# can be reviewed before publishing
- name: Upload Artifacts to GitHub Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/v')
with:
draft: true
files: artifacts/*.px4
name: ${{ steps.upload-location.outputs.uploadlocation }}

View File

@ -29,7 +29,7 @@ jobs:
fail-fast: false
matrix:
version: ['ubuntu:22.04', 'ubuntu:24.04']
runs-on: [runs-on,runner=8cpu-linux-x64,"image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=4cpu-linux-x64,"image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false]
container:
image: ${{ matrix.version }}
volumes:

View File

@ -39,7 +39,7 @@ jobs:
name: Set Tags and Variables
permissions:
contents: read
runs-on: [runs-on,"runner=1cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
runs-on: [runs-on,"runner=1cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
outputs:
px4_version: ${{ steps.px4_version.outputs.px4_version }}
meta_tags: ${{ steps.meta.outputs.tags }}
@ -87,7 +87,7 @@ jobs:
- platform: linux/amd64
arch: amd64
runner: x64
runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
runs-on: [runs-on,"runner=4cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
steps:
- uses: runs-on/action@v1
- uses: actions/checkout@v4
@ -130,15 +130,15 @@ jobs:
load: false
push: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
provenance: false
cache-from: type=gha,version=1
cache-to: type=gha,version=1,mode=max
cache-from: type=gha,version=1,scope=${{ matrix.arch }}
cache-to: type=gha,version=1,mode=max,scope=${{ matrix.arch }}
deploy:
name: Deploy To Registry
permissions:
contents: read
packages: write
runs-on: [runs-on,"runner=8cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
runs-on: [runs-on,"runner=4cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
needs: [build, setup]
if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }}
steps:

View File

@ -1,19 +1,6 @@
name: Docs - Deploy PX4 User Guide
name: Docs - Deploy PX4 User Guide to Github pages (Manual)
on:
push:
branches:
- 'main'
- 'release/**'
paths:
- 'docs/en/**'
pull_request:
branches:
- '**'
paths:
- 'docs/en/**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
@ -33,7 +20,7 @@ env:
jobs:
build:
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",extras=s3-cache,spot=false]
steps:
- uses: runs-on/action@v1
- name: Checkout
@ -68,7 +55,7 @@ jobs:
deploy:
if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.merged) || github.event_name == 'workflow_dispatch' }}
needs: build
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
steps:
- name: Download Artifact

View File

@ -7,42 +7,52 @@ on:
- "release/**"
paths:
- "docs/en/**"
- "docs/zh/**"
- "docs/uk/**"
- "docs/ko/**"
pull_request:
branches:
- "**"
paths:
- "docs/en/**"
- "docs/zh/**"
- "docs/uk/**"
- "docs/ko/**"
workflow_dispatch:
permissions:
contents: read
actions: read
id-token: write # for AWS OIDC
concurrency:
group: docs-deploy
cancel-in-progress: false
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
jobs:
build:
runs-on:
[
runs-on,
runner=8cpu-linux-x64,
image=ubuntu24-full-x64,
"run-id=${{ github.run_id }}",
spot=false,
extras=s3-cache,
]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
outputs:
branchname: ${{ steps.set-branch.outputs.branchname }}
releaseversion: ${{ steps.set-version.outputs.releaseversion }}
steps:
- uses: runs-on/action@v1
- name: Checkout
uses: actions/checkout@v4
- id: set-branch
run: echo "branchname=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
- id: set-version
run: |
branch="${{ steps.set-branch.outputs.branchname }}"
if [[ "$branch" == "main" ]]; then
version="main"
else
version="v${branch#release/}"
fi
echo "releaseversion=$version" >> $GITHUB_OUTPUT
- name: Setup Node
uses: actions/setup-node@v4
with:
@ -55,6 +65,8 @@ jobs:
- name: Build with VitePress
working-directory: ./docs
env:
BRANCH_NAME: ${{ steps.set-version.outputs.releaseversion }}
run: |
npm run docs:build_ubuntu
touch .vitepress/dist/.nojekyll
@ -91,14 +103,14 @@ jobs:
- name: Upload HTML with short cache
run: |
aws s3 sync ~/_book/ s3://px4-docs/${{ env.BRANCH_NAME }}/ \
aws s3 sync ~/_book/ s3://px4-docs/${{ needs.build.outputs.releaseversion }}/ \
--delete \
--exclude "*" --include "*.html" \
--cache-control "public, max-age=60"
- name: Upload assets with long cache
run: |
aws s3 sync ~/_book/ s3://px4-docs/${{ env.BRANCH_NAME }}/ \
aws s3 sync ~/_book/ s3://px4-docs/${{ needs.build.outputs.releaseversion }}/ \
--delete \
--exclude "*.html" \
--cache-control "public, max-age=86400, immutable"

View File

@ -48,6 +48,7 @@ jobs:
run: |
git clone https://github.com/emscripten-core/emsdk.git _emscripten_sdk
cd _emscripten_sdk
git checkout 4.0.15
./emsdk install latest
./emsdk activate latest

View File

@ -24,7 +24,7 @@ env:
jobs:
analyze_flash:
name: Analyzing ${{ matrix.target }}
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
container:
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
strategy:
@ -54,6 +54,7 @@ jobs:
run: |
make clean
make distclean
make submodulesclean
- name: If it's a PR checkout the base branch
if: ${{ github.event.pull_request }}
@ -97,7 +98,7 @@ jobs:
# Track this issue https://github.com/PX4/PX4-Autopilot/issues/24408
post_pr_comment:
name: Publish Results
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}"]
needs: [analyze_flash]
env:
V5X-SUMMARY-MAP-ABS: ${{ fromJSON(fromJSON(needs.analyze_flash.outputs.px4_fmu-v5x-bloaty-summary-map).vm-absolute) }}

View File

@ -5,6 +5,7 @@ on:
permissions:
contents: read
issues: write # for JasonEtco/create-an-issue
env:
RUNS_IN_DOCKER: true

View File

@ -22,7 +22,7 @@ concurrency:
jobs:
check_itcm:
name: Checking ${{ matrix.target }}
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
container:
image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556
strategy:
@ -41,6 +41,10 @@ jobs:
scripts: >
boards/nxp/tropic-community/nuttx-config/scripts/itcm_functions_includes.ld
boards/nxp/tropic-community/nuttx-config/scripts/itcm_static_functions.ld
- target: nxp_mr-tropic
scripts: >
boards/nxp/mr-tropic/nuttx-config/scripts/itcm_functions_includes.ld
boards/nxp/mr-tropic/nuttx-config/scripts/itcm_static_functions.ld
steps:
- uses: actions/checkout@v4
with:

View File

@ -23,7 +23,7 @@ concurrency:
jobs:
build:
runs-on: [runs-on,runner=16cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
container:
image: px4io/px4-dev-ros2-galactic:2021-09-08
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
@ -90,6 +90,9 @@ jobs:
mkdir -p /opt/px4_ws/src
cd /opt/px4_ws/src
git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib.git
# Ignore python packages due to compilation issue (can be enabled when updating ROS)
touch px4-ros2-interface-lib/px4_ros2_py/COLCON_IGNORE || true
touch px4-ros2-interface-lib/examples/python/COLCON_IGNORE || true
cd ..
# Copy messages to ROS workspace
"${PX4_DIR}/Tools/copy_to_ros_ws.sh" "$(pwd)"

View File

@ -21,7 +21,7 @@ concurrency:
jobs:
build_and_test:
name: Build and test
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false]
strategy:
fail-fast: false
matrix:

View File

@ -24,7 +24,7 @@ concurrency:
jobs:
build:
name: Testing PX4 ${{ matrix.config.model }}
runs-on: [runs-on,runner=16cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
container:
image: px4io/px4-dev-simulation-focal:2021-09-08
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
@ -118,7 +118,7 @@ jobs:
PX4_HOME_LON: ${{matrix.config.longitude}}
PX4_HOME_ALT: ${{matrix.config.altitude}}
PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
run: test/mavsdk_tests/mavsdk_test_runner.py --speed-factor 10 --abort-early --model ${{matrix.config.model}} --upload test/mavsdk_tests/configs/sitl.json --verbose --force-color
run: test/mavsdk_tests/mavsdk_test_runner.py --speed-factor 10 --abort-early --model ${{matrix.config.model}} test/mavsdk_tests/configs/sitl.json --verbose --force-color
timeout-minutes: 45
- name: Upload failed logs

View File

@ -7,10 +7,15 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
- uses: actions/stale@v10
with:
days-before-stale: 30
days-before-close: -1
operations-per-run: 250
days-before-stale: 90
days-before-close: 30
stale-issue-label: 'stale'
stale-pr-label: 'stale'
remove-stale-when-updated: true
stale-issue-message: ''
close-issue-message: 'This issue has been automatically closed due to 120 days of inactivity. If you believe this is still relevant, please feel free to reopen it or create a new issue.'
stale-pr-message: ''
close-pr-message: 'This pull request has been automatically closed due to 120 days of inactivity. If you would like to continue, please feel free to reopen it or submit a new PR.'

62
.github/workflows/sync_to_px4_msgs.yml vendored Normal file
View File

@ -0,0 +1,62 @@
name: Sync ROS 2 messages to px4_msgs
on:
push:
branches:
- 'main'
- 'stable'
- 'beta'
- 'release/**'
paths:
- 'msg/**'
- 'srv/**'
workflow_dispatch:
permissions:
contents: read
jobs:
sync_to_px4_msgs:
if: github.repository == 'PX4/PX4-Autopilot'
runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false]
steps:
- name: Checkout PX4 repo
uses: actions/checkout@v4
- name: Setup git credentials
run: |
git config --global user.name "${{ secrets.PX4BUILDBOT_USER }}"
git config --global user.email "${{ secrets.PX4BUILDBOT_EMAIL }}"
- name: Clone PX4_msgs repo
run: |
git clone https://${{ secrets.PX4BUILTBOT_PERSONAL_ACCESS_TOKEN }}@github.com/PX4/px4_msgs.git
- name: Check out the same branch as the PX4 repo
run: |
cd px4_msgs
if git checkout ${{ github.ref_name }}; then
echo "Checked out existing branch"
else
git checkout -b ${{ github.ref_name }}
fi
- name: Copy ROS 2 messages
run: |
rm -f px4_msgs/msg/*.msg
rm -f px4_msgs/msg/versioned/*.msg
rm -f px4_msgs/srv/*.srv
rm -f px4_msgs/srv/versioned/*.srv
cp msg/*.msg px4_msgs/msg/
cp msg/versioned/*.msg px4_msgs/msg/ || true
cp srv/*.srv px4_msgs/srv/
cp srv/versioned/*.srv px4_msgs/srv/ || true
- name: Commit and push changes
run: |
cd px4_msgs
git status
git add .
git commit -a -m "Update to PX4 ${{ github.sha }}" || true
git push origin ${{ github.ref_name }} || true
cd ..
rm -rf px4_msgs

9
.gitmodules vendored
View File

@ -100,3 +100,12 @@
[submodule "src/drivers/ins/microstrain/mip_sdk"]
path = src/drivers/ins/microstrain/mip_sdk
url = https://github.com/PX4/LORD-MicroStrain_mip_sdk.git
[submodule "src/drivers/ins/sbgecom/sbgECom"]
path = src/drivers/ins/sbgecom/sbgECom
url = https://github.com/PX4/sbgECom.git
[submodule "src/modules/mc_raptor/blob"]
path = src/modules/mc_raptor/blob
url = https://github.com/rl-tools/px4-blob
[submodule "src/lib/rl_tools/rl_tools"]
path = src/lib/rl_tools/rl_tools
url = https://github.com/rl-tools/rl-tools.git

View File

@ -6,6 +6,16 @@ CONFIG:
buildType: RelWithDebInfo
settings:
CONFIG: px4_sitl_default
px4_sitl_raptor:
short: px4_sitl_raptor
buildType: RelWithDebInfo
settings:
CONFIG: px4_sitl_raptor
px4_sitl_raptor_debug:
short: px4_sitl_raptor_debug
buildType: Debug
settings:
CONFIG: px4_sitl_raptor
px4_sitl_spacecraft:
short: px4_sitl_spacecraft
buildType: RelWithDebInfo
@ -141,6 +151,11 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: ark_can-flow_canbootloader
ark_can-flow-mr_default:
short: ark_can-flow-mr_default
buildType: MinSizeRel
settings:
CONFIG: ark_can-flow-mr_default
ark_can-flow-mr_canbootloader:
short: ark_can-flow-mr_canbootloader
buildType: MinSizeRel
@ -206,6 +221,16 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: ark_dist_canbootloader
ark_f9p-gps_default:
short: ark_f9p-gps_default
buildType: MinSizeRel
settings:
CONFIG: ark_f9p-gps_default
ark_f9p-gps_canbootloader:
short: ark_f9p-gps_canbootloader
buildType: MinSizeRel
settings:
CONFIG: ark_f9p-gps_canbootloader
ark_fmu-v6x_bootloader:
short: ark_fmu-v6x_bootloader
buildType: MinSizeRel
@ -226,6 +251,16 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: ark_fpv_default
ark_mag_canbootloader:
short: ark_mag_canbootloader
buildType: MiniSizeRel
settings:
CONFIG: ark_mag_canbootloader
ark_mag_default:
short: ark_mag_default
buildType: MiniSizeRel
settings:
CONFIG: ark_mag_default
ark_pi6x_bootloader:
short: ark_pi6x_bootloader
buildType: MinSizeRel
@ -236,6 +271,16 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: ark_pi6x_default
ark_x20-gps_default:
short: ark_x20-gps_default
buildType: MinSizeRel
settings:
CONFIG: ark_x20-gps_default
ark_x20-gps_canbootloader:
short: ark_x20-gps_canbootloader
buildType: MinSizeRel
settings:
CONFIG: ark_x20-gps_canbootloader
atl_mantis-edu_default:
short: atl_mantis-edu
buildType: MinSizeRel
@ -386,6 +431,16 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: micoair_h743-v2_default
micoair_h743-lite_bootloader:
short: micoair_h743-lite_bootloader
buildType: MinSizeRel
settings:
CONFIG: micoair_h743-lite_bootloader
micoair_h743-lite_default:
short: micoair_h743-lite
buildType: MinSizeRel
settings:
CONFIG: micoair_h743-lite_default
modalai_fc-v1_default:
short: modalai_fc-v1
buildType: MinSizeRel
@ -436,6 +491,16 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: nxp_mr-canhubk3_fmu
nxp_mr-tropic_default:
short: nxp_mr-tropic_default
buildType: MinSizeRel
settings:
CONFIG: nxp_mr-tropic_default
nxp_mr-tropic_bootloader:
short: nxp_mr-tropic_bootloader
buildType: MinSizeRel
settings:
CONFIG: nxp_mr-tropic_bootloader
nxp_tropic-community_default:
short: nxp_tropic-community_default
buildType: MinSizeRel
@ -466,3 +531,23 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: x-mav_ap-h743v2_default
svehicle_e2_bootloader:
short: svehicle_e2_bootloader
buildType: MinSizeRel
settings:
CONFIG: svehicle_e2_bootloader
svehicle_e2_default:
short: svehicle_e2
buildType: MinSizeRel
settings:
CONFIG: svehicle_e2_default
x-mav_ap-h743r1_bootloader:
short: x-mav_ap-h743r1-boot
buildType: MinSizeRel
settings:
CONFIG: x-mav_ap-h743r1_bootloader
x-mav_ap-h743r1_default:
short: x-mav_ap-h743r1
buildType: MinSizeRel
settings:
CONFIG: x-mav_ap-h743r1_default

View File

@ -43,7 +43,7 @@
"files.watcherExclude": {
"**/build/**": true
},
"git.detectSubmodulesLimit": 20,
"git.detectSubmodulesLimit": 25,
"git.ignoreLimitWarning": true,
"githubPullRequests.defaultMergeMethod": "squash",
"githubPullRequests.telemetry.enabled": false,

View File

@ -267,7 +267,7 @@ endif()
set(package-contact "px4users@googlegroups.com")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)

View File

@ -1,15 +0,0 @@
## This file should be placed in the root directory of your project.
## Then modify the CMakeLists.txt file in the root directory of your
## project to incorporate the testing dashboard.
##
## # The following are required to submit to the CDash dashboard:
## ENABLE_TESTING()
## INCLUDE(CTest)
set(CTEST_PROJECT_NAME "PX4 Firmware")
set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "my.cdash.org")
set(CTEST_DROP_LOCATION "/submit.php?project=PX4+Firmware")
set(CTEST_DROP_SITE_CDASH TRUE)

31
Jenkinsfile vendored
View File

@ -101,6 +101,7 @@ pipeline {
echo $0;
git clone https://github.com/emscripten-core/emsdk.git _emscripten_sdk;
cd _emscripten_sdk;
git checkout 4.0.15;
./emsdk install latest;
./emsdk activate latest;
cd ..;
@ -220,36 +221,6 @@ pipeline {
}
}
stage('PX4 ROS msgs') {
agent {
docker { image 'px4io/px4-dev-base-focal:2021-08-18' }
}
steps {
sh('export')
sh('make distclean; git clean -ff -x -d .')
withCredentials([usernamePassword(credentialsId: 'px4buildbot_github_personal_token', passwordVariable: 'GIT_PASS', usernameVariable: 'GIT_USER')]) {
sh("git clone https://${GIT_USER}:${GIT_PASS}@github.com/PX4/px4_msgs.git")
// 'main' branch
sh('rm -f px4_msgs/msg/*.msg')
sh('rm -f px4_msgs/msg/versioned/*.msg')
sh('rm -f px4_msgs/srv/*.srv')
sh('rm -f px4_msgs/srv/versioned/*.srv')
sh('cp msg/*.msg px4_msgs/msg/')
sh('cp msg/versioned/*.msg px4_msgs/msg/ || true')
sh('cp srv/*.srv px4_msgs/srv/')
sh('cp srv/versioned/*.srv px4_msgs/srv/ || true')
sh('cd px4_msgs; git status; git add .; git commit -a -m "Update message definitions `date`" || true')
sh('cd px4_msgs; git push origin main || true')
sh('rm -rf px4_msgs')
}
}
when {
anyOf {
branch 'main'
}
}
}
stage('S3') {
agent {
docker { image 'px4io/px4-dev-base-focal:2021-08-18' }

View File

@ -1,6 +1,6 @@
BSD 3-Clause License
Copyright (c) 2012 - 2023, PX4 Development Team
Copyright (c) 2012 - 2025, PX4 Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without

View File

@ -325,6 +325,8 @@ bootloaders_update: \
ark_fmu-v6x_bootloader \
ark_fpv_bootloader \
ark_pi6x_bootloader \
auterion_fmu-v6s_bootloader \
auterion_fmu-v6x_bootloader \
cuav_nora_bootloader \
cuav_x7pro_bootloader \
cuav_7-nano_bootloader \
@ -344,6 +346,7 @@ bootloaders_update: \
micoair_h743_bootloader \
micoair_h743-aio_bootloader \
micoair_h743-v2_bootloader \
micoair_h743-lite_bootloader \
modalai_fc-v2_bootloader \
mro_ctrl-zero-classic_bootloader \
mro_ctrl-zero-h7_bootloader \

View File

@ -85,10 +85,32 @@ endif()
if(PX4_ETHERNET)
set(added_arguments ${added_arguments} --ethernet)
endif()
# Check if board has an rc.board_airframes file to filter airframes
set(board_airframes_file "${PX4_BOARD_DIR}/init/rc.board_airframes")
set(airframes_whitelist "")
if(EXISTS "${board_airframes_file}")
message(STATUS "ROMFS: Using board-specific airframes list: ${board_airframes_file}")
file(STRINGS "${board_airframes_file}" airframes_whitelist)
# Remove comments and empty lines
list(FILTER airframes_whitelist EXCLUDE REGEX "^[ \t]*#")
list(FILTER airframes_whitelist EXCLUDE REGEX "^[ \t]*$")
endif()
# create list of relative romfs file names
set(romfs_copy_files_relative)
foreach(romfs_file IN LISTS romfs_copy_files)
string(REPLACE "${romfs_src_dir}/" "" romfs_file_rel ${romfs_file})
# If we have an airframes whitelist, filter airframe files
if(airframes_whitelist AND romfs_file_rel MATCHES "^init.d/airframes/")
# Extract just the filename
get_filename_component(airframe_name "${romfs_file_rel}" NAME)
# Check if it's in the whitelist
if(NOT "${airframe_name}" IN_LIST airframes_whitelist)
continue()
endif()
endif()
list(APPEND romfs_copy_files_relative ${romfs_file_rel})
endforeach()
# copy the ROMFS files by creating a tar and extracting it to the build

View File

@ -27,7 +27,6 @@ param set-default SIH_KDV 0.2
param set-default SIH_VEHICLE_TYPE 1 # sih as fixed wing
param set-default RWTO_TKOFF 1 # enable takeoff from runway (as opposed to launched)
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -44,8 +44,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -46,8 +46,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -46,8 +46,6 @@ param set-default MIS_TAKEOFF_ALT 30
param set-default NAV_ACC_RAD 15
param set-default NAV_DLL_ACT 2
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -31,8 +31,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default RWTO_PSP 8
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -31,8 +31,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default RWTO_PSP 8
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -30,8 +30,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -31,8 +31,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default RWTO_PSP 8
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -38,8 +38,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -44,8 +44,6 @@ param set-default MIS_TAKEOFF_ALT 30
param set-default NAV_ACC_RAD 15
param set-default NAV_DLL_ACT 2
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -35,8 +35,6 @@ param set-default RWTO_MAX_PITCH 20
param set-default RWTO_PSP 8
param set-default RWTO_AIRSPD_SCL 1.8
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -35,8 +35,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -46,8 +46,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -43,8 +43,6 @@ param set-default FW_THR_TRIM 0.8
param set-default FW_THR_IDLE 0
param set-default COM_DISARM_PRFLT 0
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -48,8 +48,6 @@ param set-default FW_THR_TRIM 0.8
param set-default FW_THR_IDLE 0
param set-default COM_DISARM_PRFLT 0
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -53,8 +53,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default COM_PREARM_MODE 2
param set-default CA_ROTOR_COUNT 1

View File

@ -101,6 +101,6 @@ param set-default NAV_ACC_RAD 5
param set-default NAV_DLL_ACT 2
param set-default VT_FWD_THRUST_EN 4
param set-default VT_F_TRANS_THR 0.3
param set-default VT_F_TRANS_THR 1
param set-default VT_TYPE 2
param set-default FD_ESCS_EN 0

View File

@ -11,8 +11,6 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=advanced_plane}
param set-default SIM_GZ_EN 1
param set-default SENS_EN_ARSPDSIM 1
param set-default FW_LND_ANG 8
param set-default FW_PR_FF 0.08
@ -48,8 +46,6 @@ param set-default NAV_DLL_ACT 2
param set-default RWTO_TKOFF 1
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_SV_CS_COUNT 6

View File

@ -19,5 +19,6 @@ param set-default MNT_MAN_PITCH 2
param set-default MNT_MAN_YAW 3
param set-default MNT_RANGE_ROLL 180
param set-default MNT_RANGE_PITCH 180
param set-default MNT_MAX_PITCH 45
param set-default MNT_MIN_PITCH -135
param set-default MNT_RANGE_YAW 720

View File

@ -17,6 +17,7 @@ param set-default NAV_ACC_RAD 0.5
param set-default RD_WHEEL_TRACK 0.6
param set-default RD_TRANS_DRV_TRN 0.785398
param set-default RD_TRANS_TRN_DRV 0.174533
param set-default RD_YAW_STK_GAIN 0.6
# Rate Control Parameters
param set-default RO_YAW_RATE_I 0.01
@ -25,6 +26,8 @@ param set-default RO_YAW_RATE_LIM 250
param set-default RO_YAW_ACCEL_LIM 400
param set-default RO_YAW_DECEL_LIM 800
param set-default RO_YAW_RATE_CORR 1
param set-default RO_YAW_EXPO 0.85
param set-default RO_YAW_SUPEXPO 0.3
# Attitude Control Parameters
param set-default RO_YAW_P 5

View File

@ -1,5 +1,5 @@
#!/bin/sh
# @name Rover Ackermann
# @name Generic Ackermann Rover
# @type Rover
# @class Rover
@ -14,30 +14,32 @@ param set-default SIM_GZ_EN 1 # Gazebo bridge
param set-default NAV_ACC_RAD 0.5
# Ackermann Parameters
param set-default RA_WHEEL_BASE 0.321
param set-default RA_WHEEL_BASE 0.5
param set-default RA_ACC_RAD_GAIN 2
param set-default RA_ACC_RAD_MAX 3
param set-default RA_ACC_RAD_MAX 1.5
param set-default RA_MAX_STR_ANG 0.5236
param set-default RA_STR_RATE_LIM 360
# Rover Control Parameters
param set-default RO_ACCEL_LIM 3
param set-default RO_DECEL_LIM 6
param set-default RO_JERK_LIM 15
param set-default RO_MAX_THR_SPEED 3.1
# Rover Rate Control Parameters
param set-default RO_YAW_RATE_I 0.1
param set-default RO_YAW_RATE_P 1
param set-default RO_YAW_RATE_LIM 180
# Rate Control Parameters
param set-default RO_YAW_RATE_I 0.01
param set-default RO_YAW_RATE_P 0.25
param set-default RO_YAW_RATE_LIM 130
param set-default RO_YAW_ACCEL_LIM 800
param set-default RO_YAW_DECEL_LIM 800
param set-default RO_YAW_RATE_CORR 1
param set-default RO_YAW_EXPO 0.85
param set-default RO_YAW_SUPEXPO 0.3
# Rover Attitude Control Parameters
# Attitude Control Parameters
param set-default RO_YAW_P 3
# Rover Velocity Control Parameters
param set-default RO_SPEED_LIM 3
param set-default RO_SPEED_I 0.1
# Velocity Control Parameters
param set-default RO_ACCEL_LIM 4
param set-default RO_DECEL_LIM 6
param set-default RO_JERK_LIM 10
param set-default RO_MAX_THR_SPEED 3.1
param set-default RO_SPEED_LIM 2.5
param set-default RO_SPEED_I 0.01
param set-default RO_SPEED_P 1
param set-default RO_SPEED_RED 1
@ -48,8 +50,8 @@ param set-default PP_LOOKAHD_MIN 1
# Wheels
param set-default SIM_GZ_WH_FUNC1 101
param set-default SIM_GZ_WH_MIN1 0
param set-default SIM_GZ_WH_MAX1 200
param set-default SIM_GZ_WH_MIN1 70
param set-default SIM_GZ_WH_MAX1 130
param set-default SIM_GZ_WH_DIS1 100
# Steering

View File

@ -1,5 +1,5 @@
#!/bin/sh
# @name Aion Robotics R1 Rover
# @name Generic Mecanum Rover
# @type Rover
# @class Rover
@ -7,14 +7,15 @@
PX4_SIMULATOR=${PX4_SIMULATOR:=gz}
PX4_GZ_WORLD=${PX4_GZ_WORLD:=rover}
PX4_SIM_MODEL=${PX4_SIM_MODEL:=r1_rover_mecanum}
PX4_SIM_MODEL=${PX4_SIM_MODEL:=rover_mecanum}
param set-default SIM_GZ_EN 1 # Gazebo bridge
param set-default NAV_ACC_RAD 0.5
# Mecanum Parameters
param set-default RM_WHEEL_TRACK 0.3
param set-default RM_WHEEL_TRACK 0.6
param set-default RM_YAW_STK_GAIN 0.6
# Rover Control Parameters
param set-default RO_ACCEL_LIM 3
@ -29,15 +30,21 @@ param set-default RO_YAW_RATE_LIM 120
param set-default RO_YAW_ACCEL_LIM 240
param set-default RO_YAW_DECEL_LIM 1000
param set-default RO_YAW_RATE_CORR 1.75
param set-default RO_YAW_EXPO 0.85
param set-default RO_YAW_SUPEXPO 0.3
# Rover Attitude Control Parameters
param set-default RO_YAW_P 5
# Rover Velocity Control Parameters
param set-default RO_SPEED_LIM 2
param set-default RO_SPEED_I 0.5
param set-default RO_SPEED_P 1
param set-default RO_SPEED_RED 1
# Velocity Control Parameters
param set-default RO_ACCEL_LIM 4
param set-default RO_DECEL_LIM 6
param set-default RO_JERK_LIM 10
param set-default RO_MAX_THR_SPEED 3.1
param set-default RO_SPEED_LIM 2.5
param set-default RO_SPEED_I 0.01
param set-default RO_SPEED_P 0.1
param set-default RO_SPEED_RED 0.5
# Pure Pursuit parameters
param set-default PP_LOOKAHD_GAIN 0.5
@ -48,24 +55,24 @@ param set-default PP_LOOKAHD_MIN 1
param set-default SENS_EN_MAGSIM 1
# Actuator mapping
param set-default SIM_GZ_WH_FUNC1 102 # right wheel front
param set-default SIM_GZ_WH_FUNC1 104 # left wheel back
param set-default SIM_GZ_WH_MIN1 70
param set-default SIM_GZ_WH_MAX1 130
param set-default SIM_GZ_WH_DIS1 100
param set-default SIM_GZ_WH_FUNC2 101 # left wheel front
param set-default SIM_GZ_WH_FUNC2 103 # right wheel back
param set-default SIM_GZ_WH_MIN2 70
param set-default SIM_GZ_WH_MAX2 130
param set-default SIM_GZ_WH_DIS2 100
param set-default SIM_GZ_WH_FUNC3 104 # right wheel back
param set-default SIM_GZ_WH_FUNC3 102 # left wheel front
param set-default SIM_GZ_WH_MIN3 70
param set-default SIM_GZ_WH_MAX3 130
param set-default SIM_GZ_WH_DIS3 100
param set-default SIM_GZ_WH_FUNC4 103 # left wheel back
param set-default SIM_GZ_WH_FUNC4 101 # right wheel front
param set-default SIM_GZ_WH_MIN4 70
param set-default SIM_GZ_WH_MAX4 130
param set-default SIM_GZ_WH_DIS4 100
param set-default SIM_GZ_WH_REV 10
param set-default SIM_GZ_WH_REV 0

View File

@ -34,7 +34,6 @@ param set-default COM_LOW_BAT_ACT 0
param set-default NAV_DLL_ACT 0
param set-default GF_ACTION 1
param set-default NAV_RCL_ACT 1
param set-default COM_POSCTL_NAVL 2
# disable attitude failure detection
param set-default FD_FAIL_P 0

View File

@ -26,7 +26,6 @@ param set-default TRIG_INTERFACE 3
param set-default TRIG_MODE 4
param set-default MNT_MODE_IN 4
param set-default MNT_MODE_OUT 2
param set-default MAV_PROTO_VER 2
param set-default CA_AIRFRAME 0
param set-default CA_ROTOR_COUNT 6

View File

@ -45,7 +45,6 @@ param set-default COM_LOW_BAT_ACT 0
param set-default NAV_DLL_ACT 0
param set-default GF_ACTION 1
param set-default NAV_RCL_ACT 1
param set-default COM_POSCTL_NAVL 2
# disable attitude failure detection
param set-default FD_FAIL_P 0

View File

@ -0,0 +1,167 @@
#!/bin/sh
#
# @name KTH-ATMOS
#
# @type Free-Flyer
# @class Spacecraft
#
# @output Motor1 back left thruster, +x thrust
# @output Motor2 front left thruster, -x thrust
# @output Motor3 back right thruster, +x thrust
# @output Motor4 front right thruster, -x thrust
# @output Motor5 front left thruster, +y thrust
# @output Motor6 front right thruster, -y thrust
# @output Motor7 back left thruster, +y thrust
# @output Motor8 back right thruster, -y thrust
#
# @maintainer discower-io
# @url https://atmos.discower.io
#
. ${R}etc/init.d/rc.sc_defaults
PX4_SIMULATOR=${PX4_SIMULATOR:=gz}
PX4_GZ_WORLD=${PX4_GZ_WORLD:=default}
PX4_SIM_MODEL=${PX4_SIM_MODEL:=atmos_dual}
param set-default SIM_GZ_EN 1
param set-default SENS_EN_MAGSIM 1
param set-default COM_ARM_CHK_ESCS 0 # We don't have ESCs
param set-default FD_ESCS_EN 0
param set-default CA_AIRFRAME 14
param set-default MAV_TYPE 45
param set-default CA_ROTOR_COUNT 8
param set-default CA_R_REV 0
# Auto to be provided by Custom Airframe
param set-default CA_METHOD 0
# Set proper failsafes
param set-default COM_ACT_FAIL_ACT 0
param set-default COM_LOW_BAT_ACT 0
param set-default NAV_DLL_ACT 0
param set-default GF_ACTION 1
param set-default NAV_RCL_ACT 1
# disable attitude failure detection
param set-default FD_FAIL_P 0
param set-default FD_FAIL_R 0
param set-default CA_ROTOR0_PX -0.12
param set-default CA_ROTOR0_PY -0.12
param set-default CA_ROTOR0_PZ 0.0
param set-default CA_ROTOR0_CT 1.4
param set-default CA_ROTOR0_AX 1.0
param set-default CA_ROTOR0_AY 0.0
param set-default CA_ROTOR0_AZ 0.0
param set-default CA_ROTOR1_PX 0.12
param set-default CA_ROTOR1_PY -0.12
param set-default CA_ROTOR1_PZ 0.0
param set-default CA_ROTOR1_CT 1.4
param set-default CA_ROTOR1_AX -1.0
param set-default CA_ROTOR1_AY 0.0
param set-default CA_ROTOR1_AZ 0.0
param set-default CA_ROTOR2_PX -0.12
param set-default CA_ROTOR2_PY 0.12
param set-default CA_ROTOR2_PZ 0.0
param set-default CA_ROTOR2_CT 1.4
param set-default CA_ROTOR2_AX 1.0
param set-default CA_ROTOR2_AY 0.0
param set-default CA_ROTOR2_AZ 0.0
param set-default CA_ROTOR3_PX 0.12
param set-default CA_ROTOR3_PY 0.12
param set-default CA_ROTOR3_PZ 0.0
param set-default CA_ROTOR3_CT 1.4
param set-default CA_ROTOR3_AX -1.0
param set-default CA_ROTOR3_AY 0.0
param set-default CA_ROTOR3_AZ 0.0
param set-default CA_ROTOR4_PX 0.12
param set-default CA_ROTOR4_PY -0.12
param set-default CA_ROTOR4_PZ 0.0
param set-default CA_ROTOR4_CT 1.4
param set-default CA_ROTOR4_AX 0.0
param set-default CA_ROTOR4_AY 1.0
param set-default CA_ROTOR4_AZ 0.0
param set-default CA_ROTOR5_PX 0.12
param set-default CA_ROTOR5_PY 0.12
param set-default CA_ROTOR5_PZ 0.0
param set-default CA_ROTOR5_CT 1.4
param set-default CA_ROTOR5_AX 0.0
param set-default CA_ROTOR5_AY -1.0
param set-default CA_ROTOR5_AZ 0.0
param set-default CA_ROTOR6_PX -0.12
param set-default CA_ROTOR6_PY -0.12
param set-default CA_ROTOR6_PZ 0.0
param set-default CA_ROTOR6_CT 1.4
param set-default CA_ROTOR6_AX 0.0
param set-default CA_ROTOR6_AY 1.0
param set-default CA_ROTOR6_AZ 0.0
param set-default CA_ROTOR7_PX -0.12
param set-default CA_ROTOR7_PY 0.12
param set-default CA_ROTOR7_PZ 0.0
param set-default CA_ROTOR7_CT 1.4
param set-default CA_ROTOR7_AX 0.0
param set-default CA_ROTOR7_AY -1.0
param set-default CA_ROTOR7_AZ 0.0
param set-default SIM_GZ_EC_FUNC1 101
param set-default SIM_GZ_EC_FUNC2 102
param set-default SIM_GZ_EC_FUNC3 103
param set-default SIM_GZ_EC_FUNC4 104
param set-default SIM_GZ_EC_FUNC5 105
param set-default SIM_GZ_EC_FUNC6 106
param set-default SIM_GZ_EC_FUNC7 107
param set-default SIM_GZ_EC_FUNC8 108
param set-default SIM_GZ_EC_FUNC9 301
param set-default SIM_GZ_EC_FUNC10 302
param set-default SIM_GZ_EC_FUNC11 303
param set-default SIM_GZ_EC_FUNC12 304
param set-default SIM_GZ_EC_MIN1 0
param set-default SIM_GZ_EC_MIN2 0
param set-default SIM_GZ_EC_MIN3 0
param set-default SIM_GZ_EC_MIN4 0
param set-default SIM_GZ_EC_MIN5 0
param set-default SIM_GZ_EC_MIN6 0
param set-default SIM_GZ_EC_MIN7 0
param set-default SIM_GZ_EC_MIN8 0
param set-default SIM_GZ_EC_MIN9 1100
param set-default SIM_GZ_EC_MIN10 1100
param set-default SIM_GZ_EC_MIN11 1100
param set-default SIM_GZ_EC_MIN12 1100
param set-default SIM_GZ_EC_MAX1 10000
param set-default SIM_GZ_EC_MAX2 10000
param set-default SIM_GZ_EC_MAX3 10000
param set-default SIM_GZ_EC_MAX4 10000
param set-default SIM_GZ_EC_MAX5 10000
param set-default SIM_GZ_EC_MAX6 10000
param set-default SIM_GZ_EC_MAX7 10000
param set-default SIM_GZ_EC_MAX8 10000
param set-default SIM_GZ_EC_MAX9 1900
param set-default SIM_GZ_EC_MAX10 1900
param set-default SIM_GZ_EC_MAX11 1900
param set-default SIM_GZ_EC_MAX12 1900
# Controller Tunings
param set SC_YAWRATE_P 3.335
param set SC_YAWRATE_I 0.87
param set SC_YAWRATE_D 0.15
param set SC_YR_INT_LIM 0.2
param set SC_YAW_P 3.0
param set SPC_POS_P 0.20
param set SPC_VEL_P 6.55
param set SPC_VEL_I 0.0
param set SPC_VEL_D 0.0
param set SPC_VEL_MAX 12.0

View File

@ -80,10 +80,8 @@ px4_add_romfs_files(
4009_gz_r1_rover
4010_gz_x500_mono_cam
4011_gz_lawnmower
4012_gz_rover_ackermann
4013_gz_x500_lidar_2d
4014_gz_x500_mono_cam_down
4015_gz_r1_rover_mecanum
4016_gz_x500_lidar_down
4017_gz_x500_lidar_front
4018_gz_quadtailsitter
@ -114,10 +112,13 @@ px4_add_romfs_files(
17002_flightgear_tf-g2
50000_gz_rover_differential
51000_gz_rover_ackermann
52000_gz_rover_mecanum
60002_gz_uuv_bluerov2_heavy
70000_gz_atmos
70001_gz_atmos_dual
# [22000, 22999] Reserve for custom models
)

View File

@ -159,24 +159,19 @@ if [ -n "${PX4_SIM_MODEL#*gz_}" ] && [ -z "${PX4_GZ_MODEL_NAME}" ]; then
fi
# Set up camera to follow the model if requested
if [ -n "${PX4_GZ_FOLLOW}" ]; then
if [ -z "${PX4_GZ_NO_FOLLOW}" ]; then
echo "INFO [init] Setting camera to follow ${MODEL_NAME_INSTANCE}"
# Set camera to follow the model
${gz_command} service -s "/gui/follow" --reqtype gz.msgs.StringMsg \
--reptype gz.msgs.Boolean --timeout 5000 \
--req "data: \"${MODEL_NAME_INSTANCE}\"" > /dev/null 2>&1
# Set default camera offset if not specified
follow_x=${PX4_GZ_FOLLOW_OFFSET_X:--2.0}
follow_y=${PX4_GZ_FOLLOW_OFFSET_Y:--2.0}
follow_z=${PX4_GZ_FOLLOW_OFFSET_Z:-2.0}
# Set camera offset
${gz_command} service -s "/gui/follow/offset" --reqtype gz.msgs.Vector3d \
--reptype gz.msgs.Boolean --timeout 5000 \
--req "x: ${follow_x}, y: ${follow_y}, z: ${follow_z}" > /dev/null 2>&1
${gz_command} topic -t /gui/track -m gz.msgs.CameraTrack \
-p "track_mode: FOLLOW, follow_target: {name: '${MODEL_NAME_INSTANCE}'},\
follow_offset: {x: ${follow_x}, y: ${follow_y}, z: ${follow_z}}, follow_pgain: 1.0, track_pgain: 1.0"
echo "INFO [init] Camera follow offset set to ${follow_x}, ${follow_y}, ${follow_z}"
fi

View File

@ -126,15 +126,6 @@ then
set AUTOCNF yes
fi
# Allow overriding parameters via env variables: export PX4_PARAM_{name}={value}
env | while IFS='=' read -r line; do
value=${line#*=}
name=${line%%=*}
case $name in
"PX4_PARAM_"*) param set "${name#PX4_PARAM_}" "$value" ;;
esac
done
# multi-instance setup
# shellcheck disable=SC2154
param set MAV_SYS_ID $((px4_instance+1))
@ -173,7 +164,6 @@ param set-default COM_RC_IN_MODE 1
param set-default EKF2_REQ_GPS_H 0.5
param set-default IMU_GYRO_FFT_EN 1
param set-default MAV_PROTO_VER 2 # Ensures QGC does not drop the first few packets after a SITL restart due to MAVLINK 1 packets
param set-default -s MC_AT_EN 1
@ -239,6 +229,15 @@ then
exit 1
fi
# Allow overriding parameters via env variables: export PX4_PARAM_{name}={value}
env | while IFS='=' read -r line; do
value=${line#*=}
name=${line%%=*}
case $name in
"PX4_PARAM_"*) param set "${name#PX4_PARAM_}" "$value" ;;
esac
done
dataman start
# only start the simulator if not in replay mode, as both control the lockstep time

View File

@ -123,3 +123,9 @@ if(CONFIG_MODULES_TEMPERATURE_COMPENSATION)
rc.thermal_cal
)
endif()
if(CONFIG_DRIVERS_VTXTABLE)
px4_add_romfs_files(
rc.vtxtable
)
endif()

View File

@ -14,7 +14,6 @@
param set UAVCAN_ENABLE 0
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -18,6 +18,8 @@
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
# @board px4_fmu-v6x exclude
# @board ark_fmu-v6x exclude
#
. ${R}etc/init.d/rc.fw_defaults
@ -40,8 +42,6 @@ param set-default FW_P_LIM_MAX 25
param set-default FW_P_LIM_MIN -5
param set-default FW_P_RMAX_NEG 20
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -16,6 +16,8 @@
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
# @board px4_fmu-v6x exclude
# @board ark_fmu-v6x exclude
#
. ${R}etc/init.d/rc.fw_defaults
@ -37,8 +39,6 @@ param set-default FW_P_LIM_MAX 25
param set-default FW_P_LIM_MIN -5
param set-default FW_P_RMAX_NEG 20
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3

View File

@ -10,7 +10,6 @@
. ${R}etc/init.d/rc.fw_defaults
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.3
param set-default CA_SV_CS_COUNT 4

View File

@ -32,7 +32,6 @@ param set-default FW_WR_IMAX 0.8
param set-default FW_WR_P 1
param set-default FW_W_RMAX 0
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_SV_CS_COUNT 7
param set-default CA_SV_CS0_TRQ_R -0.5

View File

@ -10,8 +10,6 @@
. ${R}etc/init.d/rc.fw_defaults
param set-default CA_AIRFRAME 1
param set-default CA_ROTOR_COUNT 1
param set-default CA_ROTOR0_PX 0.15
param set-default CA_SV_CS_COUNT 2

View File

@ -7,6 +7,8 @@
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
# @board px4_fmu-v6x exclude
# @board ark_fmu-v6x exclude
#
. ${R}etc/init.d/rc.mc_defaults
@ -75,9 +77,6 @@ param set-default NAV_ACC_RAD 2
param set-default RTL_DESCEND_ALT 5
param set-default RTL_RETURN_ALT 5
# Logging Parameters
param set-default SDLOG_PROFILE 131
# Sensors Parameters
param set-default SENS_CM8JL65_CFG 104
param set-default SENS_FLOW_MAXHGT 25

View File

@ -7,6 +7,10 @@
#
# @board px4_fmu-v2 exclude
# @board px4_fmu-v5x exclude
# @board auterion_fmu-v6s exclude
# @board ark_fmu-v6x exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
# @board bitcraze_crazyflie exclude
#
# @maintainer Iain Galloway <iain.galloway@nxp.com>

View File

@ -7,6 +7,7 @@
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
#
@ -77,9 +78,6 @@ param set-default NAV_ACC_RAD 2
param set-default RTL_DESCEND_ALT 5
param set-default RTL_RETURN_ALT 5
# Logging Parameters
param set-default SDLOG_PROFILE 131
# Sensors Parameters
param set-default SENS_CM8JL65_CFG 202
param set-default SENS_FLOW_MAXHGT 25

View File

@ -13,6 +13,11 @@
# @board px4_fmu-v4pro exclude
# @board px4_fmu-v5 exclude
# @board px4_fmu-v5x exclude
# @board auterion_fmu-v6s exclude
# @board ark_fmu-v6x exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
# @board px4_fmu-v6xrt exclude
# @board bitcraze_crazyflie exclude
#

View File

@ -29,9 +29,6 @@ param set-default MPC_MAN_TILT_MAX 60
param set-default THR_MDL_FAC 0.3
# enable high-rate logging profile (helps with tuning)
param set-default SDLOG_PROFILE 19
param set-default IMU_DGYRO_CUTOFF 50
param set-default IMU_GYRO_CUTOFF 90

View File

@ -11,6 +11,8 @@
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
# @board px4_fmu-v6x exclude
# @board ark_fmu-v6x exclude
#
. ${R}etc/init.d/rc.mc_defaults

View File

@ -9,6 +9,8 @@
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
# @board px4_fmu-v6x exclude
# @board ark_fmu-v6x exclude
#
. ${R}etc/init.d/rc.mc_defaults

View File

@ -10,6 +10,7 @@
# @board cuav_x7pro exclude
# @board px4_fmu-v4pro exclude
# @board px4_fmu-v5x exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
#

View File

@ -12,6 +12,7 @@
# @board px4_fmu-v4pro exclude
# @board px4_fmu-v5 exclude
# @board px4_fmu-v5x exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
# @board bitcraze_crazyflie exclude
# @board cuav_x7pro exclude

View File

@ -10,6 +10,7 @@
# @board px4_fmu-v4pro exclude
# @board px4_fmu-v5 exclude
# @board px4_fmu-v5x exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
# @board bitcraze_crazyflie exclude
# @board cuav_x7pro exclude

View File

@ -14,6 +14,7 @@
# @board px4_fmu-v4pro exclude
# @board px4_fmu-v5 exclude
# @board px4_fmu-v5x exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
# @board bitcraze_crazyflie exclude
# @board diatone_mamba-f405-mk2 exclude

View File

@ -13,6 +13,7 @@
# @board px4_fmu-v4pro exclude
# @board px4_fmu-v5 exclude
# @board px4_fmu-v5x exclude
# @board auterion_fmu-v6x exclude
# @board px4_fmu-v6x exclude
# @board diatone_mamba-f405-mk2 exclude
#

View File

@ -0,0 +1,31 @@
#!/bin/sh
#
# @name NXP B3RB Rover Ackermann
#
# @type Rover
# @class Rover
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#
. ${R}etc/init.d/rc.rover_ackermann_defaults
param set-default BAT1_N_CELLS 3
# Set geometry & output configration
param set-default PWM_MAIN_FUNC1 201
param set-default PWM_MAIN_FUNC2 101
param set-default PWM_MAIN_FUNC3 101
param set-default PWM_MAIN_DIS1 1500
param set-default PWM_MAIN_DIS2 0
param set-default PWM_MAIN_DIS3 1500
param set-default PWM_MAIN_MIN1 1000
param set-default PWM_MAIN_MIN2 2500
param set-default PWM_MAIN_MIN3 0
param set-default PWM_MAIN_MAX1 2000
param set-default PWM_MAIN_MAX2 2500
param set-default PWM_MAIN_MAX3 50
param set-default PWM_MAIN_TIM0 400
param set-default PWM_MAIN_TIM1 400
param set-default PWM_MAIN_TIM2 20000

View File

@ -45,7 +45,6 @@ param set-default COM_LOW_BAT_ACT 0
param set-default NAV_DLL_ACT 0
param set-default GF_ACTION 1
param set-default NAV_RCL_ACT 1
param set-default COM_POSCTL_NAVL 2
# disable attitude failure detection
param set-default FD_FAIL_P 0

View File

@ -12,7 +12,9 @@
# @board px4_fmu-v4pro exclude
# @board px4_fmu-v5 exclude
# @board px4_fmu-v5x exclude
# @board px4_fmu-v6x exclude
# @board bitcraze_crazyflie exclude
# @board ark_fmu-v6x exclude
#
. ${R}etc/init.d/rc.mc_defaults

View File

@ -20,6 +20,9 @@
. ${R}etc/init.d/rc.sc_defaults
# Overwrite DDS AG IP to `192.168.0.1`
param set-default UXRCE_DDS_AG_IP -1062731775
param set-default CA_AIRFRAME 14
param set-default MAV_TYPE 45
@ -35,7 +38,6 @@ param set-default COM_LOW_BAT_ACT 0
param set-default NAV_DLL_ACT 0
param set-default GF_ACTION 1
param set-default NAV_RCL_ACT 1
param set-default COM_POSCTL_NAVL 2
# Set Mocap Vision frame
param set EKF2_EV_CTRL 15

View File

@ -153,6 +153,7 @@ if(CONFIG_MODULES_ROVER_ACKERMANN)
# [51000, 51999] Ackermann rovers
51000_generic_rover_ackermann
51001_axial_scx10_2_trail_honcho
51002_nxp_b3rb
)
endif()

View File

@ -10,6 +10,8 @@ set VEHICLE_TYPE fw
# MAV_TYPE_FIXED_WING 1
param set-default MAV_TYPE 1
param set-default CA_AIRFRAME 1
#
# Default parameters for fixed wing UAVs.
#
@ -26,6 +28,7 @@ param set-default EKF2_MAG_ACCLIM 0
param set-default EKF2_REQ_EPH 10
param set-default EKF2_REQ_EPV 10
param set-default EKF2_REQ_HDRIFT 0.5
param set-default EKF2_REQ_PDOP 4
param set-default EKF2_REQ_SACC 1
param set-default EKF2_REQ_VDRIFT 1
param set-default EKF2_RNG_QLTY_T 3

View File

@ -41,3 +41,9 @@ if param compare -s MC_NN_EN 1
then
mc_nn_control start
fi
if param compare -s MC_RAPTOR_ENABLE 1
then
mc_raptor start
fi

View File

@ -8,9 +8,6 @@ set VEHICLE_TYPE spacecraft
# MAV_TYPE_SPACECRAFT_ORBITTER
param set-default MAV_TYPE 45
# Set micro-dds-client to use ethernet and IP-address 192.168.0.1
param set-default UXRCE_DDS_AG_IP -1062731775
# Disable preflight disarm to not interfere with external launching
param set-default COM_DISARM_PRFLT -1
param set-default CBRK_SUPPLY_CHK 894281

View File

@ -154,6 +154,12 @@ then
fi
fi
# Microchip MCP9808 temperature sensor external I2C
if param compare -s SENS_EN_MCP9808 1
then
mcp9808 start -X
fi
# TE MS4515 differential pressure sensor external I2C
if param compare -s SENS_EN_MS4515 1
then
@ -219,6 +225,24 @@ then
pcf8583 start -X -a 0x51
fi
# ADC sensor ADS7953 external SPI
if param compare -s ADC_ADS7953_EN 1
then
ads7953 start -S
fi
# ADC sensor tla2528 external I2C
if param compare -s ADC_TLA2528_EN 1
then
tla2528 start -X
fi
# Start TMP102 temperature sensor
if param compare SENS_EN_TMP102 1
then
tmp102 start -X
fi
# probe for optional external I2C devices
if param compare SENS_EXT_I2C_PRB 1
then

View File

@ -0,0 +1,8 @@
#!/bin/sh
#
# VTX table loading script.
#
# NOTE: Script variables are declared/initialized/unset in the rcS script.
#
vtxtable load

View File

@ -228,30 +228,26 @@ else
fi
unset BOARD_RC_ADDITIONAL_INIT
# Load airframe configuration based on SYS_AUTOSTART parameter
if ! param compare SYS_AUTOSTART 0
# Load airframe configuration based on SYS_AUTOSTART parameter if successful VEHICLE_TYPE gets set
# Run autogenerated ROMFS airframe script
. ${R}etc/init.d/rc.autostart
if [ ${VEHICLE_TYPE} = none ]
then
# rc.autostart directly run the right airframe script which sets the VEHICLE_TYPE
# Look for airframe in ROMFS
. ${R}etc/init.d/rc.autostart
if [ ${VEHICLE_TYPE} = none ]
# Run external airframe script on SD card
if [ $STORAGE_AVAILABLE = yes ]
then
# Use external startup file
if [ $STORAGE_AVAILABLE = yes ]
then
. ${R}etc/init.d/rc.autostart_ext
else
echo "ERROR [init] SD card not mounted - can't load external airframe"
fi
. ${R}etc/init.d/rc.autostart_ext
else
echo "ERROR [init] SD not mounted, skipping external airframe"
fi
fi
if [ ${VEHICLE_TYPE} = none ]
then
echo "ERROR [init] No airframe file found for SYS_AUTOSTART value"
param set SYS_AUTOSTART 0
tune_control play error
fi
if [ ${VEHICLE_TYPE} = none ]
then
echo "ERROR [init] No airframe file found for SYS_AUTOSTART value"
param set SYS_AUTOSTART 0
tune_control play error
fi
# Check parameter version and reset upon airframe configuration version mismatch.
@ -483,6 +479,19 @@ else
pwm_out start
fi
#
# Optional UAVCAN/DroneCAN or Cyphal
#
if param greater -s UAVCAN_ENABLE 0
then
uavcan start
else
if param greater -s CYPHAL_ENABLE 0
then
cyphal start
fi
fi
#
# Configure vehicle type specific parameters.
# Note: rc.vehicle_setup is the entry point for all vehicle type specific setup.
@ -511,6 +520,11 @@ else
#
. ${R}etc/init.d/rc.serial
if param greater -s ZENOH_ENABLE 0
then
zenoh start
fi
# Must be started after the serial config is read
rc_input start $RC_INPUT_ARGS
@ -616,6 +630,16 @@ else
fi
unset RC_LOGGING
#
# Start the VTX services.
#
set RC_VTXTABLE ${R}etc/init.d/rc.vtxtable
if [ -f ${RC_VTXTABLE} ]
then
. ${RC_VTXTABLE}
fi
unset RC_VTXTABLE
#
# Set additional parameters and env variables for selected AUTOSTART.
#
@ -632,27 +656,6 @@ else
fi
unset BOARD_BOOTLOADER_UPGRADE
#
# Check if UAVCAN is enabled, default to it for ESCs.
#
if param greater -s UAVCAN_ENABLE 0
then
# Start core UAVCAN module.
if ! uavcan start
then
tune_control play error
fi
else
if param greater -s CYPHAL_ENABLE 0
then
cyphal start
fi
fi
if param greater -s ZENOH_ENABLE 0
then
zenoh start
fi
#
# End of autostart.
#

View File

@ -15,4 +15,4 @@ ignore-exclude-errors-x
lineend=linux
exclude=EASTL
add-brackets
max-code-length=120
max-code-length=140

View File

@ -21,11 +21,13 @@ exec find boards msg src platforms test \
-path src/lib/crypto/monocypher -prune -o \
-path src/lib/events/libevents -prune -o \
-path src/lib/parameters/uthash -prune -o \
-path src/lib/rl_tools/rl_tools -prune -o \
-path src/lib/wind_estimator/python/generated -prune -o \
-path src/modules/ekf2/EKF/python/ekf_derivation/generated -prune -o \
-path src/modules/ekf2/EKF/yaw_estimator/derivation/generated -prune -o \
-path src/modules/gyro_fft/CMSIS_5 -prune -o \
-path src/modules/mavlink/mavlink -prune -o \
-path src/modules/mc_raptor/blob -prune -o \
-path test/fuzztest -prune -o \
-path test/mavsdk_tests/catch2 -prune -o \
-path src/lib/crypto/monocypher -prune -o \
@ -39,4 +41,5 @@ exec find boards msg src platforms test \
-path boards/modalai/voxl2/libfc-sensor-api -prune -o \
-path src/drivers/actuators/vertiq_io/iq-module-communication-cpp -prune -o \
-path src/lib/tensorflow_lite_micro/tflite_micro -prune -o \
-path src/drivers/ins/sbgecom/sbgECom -prune -o \
\( -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) -print \) | grep $PATTERN

View File

@ -7,6 +7,7 @@ fi
ssh_port=22
ssh_user=root
ssh_opts="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
while getopts ":f:c:d:p:u:r" opt; do
case ${opt} in
@ -67,7 +68,7 @@ target_file_name="update-dev.tar"
if [ "$revert" == true ]; then
# revert to the release version which was originally deployed
cmd="cp $target_dir/update.tar $target_dir/$target_file_name"
ssh -t -p $ssh_port $ssh_user@$device "$cmd"
ssh $ssh_opts -t -p $ssh_port $ssh_user@$device "$cmd"
else
# create custom update-dev.tar
tmp_dir="$(mktemp -d)"
@ -105,11 +106,11 @@ else
$tar_name -C "$tmp_dir" --sort=name --owner=root:0 --group=root:0 --mtime='2019-01-01 00:00:00' -cvf $target_file_name $firmware_path $config_path
# send it to the target to start flashing
scp -P $ssh_port "$target_file_name" $ssh_user@"$device":$target_dir
scp $ssh_opts -P $ssh_port "$target_file_name" $ssh_user@"$device":$target_dir
popd &>/dev/null
rm -rf "$tmp_dir"
fi
# grab status output for flashing progress
cmd="tail --follow=name $target_dir/update_status 2>/dev/null || true"
ssh -t -p $ssh_port $ssh_user@$device "$cmd"
ssh $ssh_opts -t -p $ssh_port $ssh_user@$device "$cmd"

View File

@ -17,37 +17,12 @@ if [[ -f $1"/.git" || -d $1"/.git" ]]; then
SUBMODULE_STATUS=$(git submodule summary "$1")
STATUSRETVAL=$(echo $SUBMODULE_STATUS | grep -A20 -i "$1")
if ! [[ -z "$STATUSRETVAL" ]]; then
echo -e "\033[31mChecked $1 submodule, ACTION REQUIRED:\033[0m"
echo ""
echo -e "Different commits:"
echo -e "\033[33mWarning: $1 submodule has uncommitted changes:\033[0m"
echo -e "$SUBMODULE_STATUS"
echo ""
echo -e "To update submodules to the expected version, run:"
echo -e " \033[94mgit submodule sync --recursive && git submodule update --init --recursive\033[0m"
echo ""
echo -e " *******************************************************************************"
echo -e " * \033[31mIF YOU DID NOT CHANGE THIS FILE (OR YOU DON'T KNOW WHAT A SUBMODULE IS):\033[0m *"
echo -e " * \033[31mHit 'u' and <ENTER> to update ALL submodules and resolve this.\033[0m *"
echo -e " * (performs \033[94mgit submodule sync --recursive\033[0m *"
echo -e " * and \033[94mgit submodule update --init --recursive\033[0m ) *"
echo -e " *******************************************************************************"
echo ""
echo ""
echo -e " Only for EXPERTS:"
echo -e " $1 submodule is not in the recommended version."
echo -e " Hit 'y' and <ENTER> to continue the build with this version. Hit <ENTER> to resolve manually."
echo -e " Use \033[94mgit add $1 && git commit -m 'Updated $1'\033[0m to choose this version (careful!)"
echo ""
read user_cmd
if [ "$user_cmd" == "y" ]; then
echo "Continuing build with manually overridden submodule.."
elif [ "$user_cmd" == "u" ]; then
git submodule sync --recursive -- $1
git submodule update --init --recursive -- $1 || true
git submodule update --init --recursive --force -- $1
echo "Submodule fixed, continuing build.."
else
echo "Build aborted."
exit 1
fi
fi
else
git submodule --quiet sync --recursive --quiet -- $1

View File

@ -25,15 +25,15 @@ parser.add_argument('-p', '--pretty', dest='pretty', action='store_true',
help='Pretty output instead of a single line')
parser.add_argument('-g', '--groups', dest='group', action='store_true',
help='Groups targets')
parser.add_argument('-f', '--filter', dest='filter', help='comma separated list of board names to use instead of all')
parser.add_argument('-f', '--filter', dest='filter', help='comma separated list of build target name prefixes to include instead of all e.g. "px4_fmu-v5_"')
args = parser.parse_args()
verbose = args.verbose
board_filter = []
target_filter = []
if args.filter:
for board in args.filter.split(','):
board_filter.append(board)
for target in args.filter.split(','):
target_filter.append(target)
default_container = 'ghcr.io/px4/px4-dev:v1.16.0-rc1-258-g0369abd556'
build_configs = []
@ -144,7 +144,7 @@ for manufacturer in os.scandir(os.path.join(source_dir, '../boards')):
label = files.name[:-9]
target_name = manufacturer.name + '_' + board.name + '_' + label
if board_filter and not board_name in board_filter:
if target_filter and not any(target_name.startswith(f) for f in target_filter):
if verbose: print(f'excluding board {board_name} ({target_name})')
continue

View File

@ -191,7 +191,7 @@ def main():
cur_history_index = len(command_history)
mav_serialport.write(cur_line+'\n')
cur_line = ''
elif ord(ch) == 127: # backslash
elif ord(ch) == 8: # backspace
if len(cur_line) > 0:
erase_last_n_chars(1)
cur_line = cur_line[:-1]

View File

@ -238,6 +238,7 @@ def get_actuator_output(yaml_config, output_functions, timer_config_file, verbos
( 'disarmed', 'Disarmed', 'DIS', False ),
( 'min', 'Minimum', 'MIN', False ),
( 'max', 'Maximum', 'MAX', False ),
( 'center', 'Center\n(for Servos)', 'CENT', False ),
( 'failsafe', 'Failsafe', 'FAIL', True ),
]
for key, label, param_suffix, advanced in standard_params_array:

View File

@ -284,6 +284,9 @@ Note that non-motor outputs might already be active in prearm state if COM_PREAR
'''
minimum_description = \
'''Minimum output value (when not disarmed).
'''
center_description = \
'''Servo Center output value (when not disarmed).
'''
maximum_description = \
'''Maxmimum output value (when not disarmed).
@ -296,6 +299,7 @@ When set to -1 (default), the value depends on the function (see {:}).
standard_params_array = [
( 'disarmed', 'Disarmed', 'DIS', disarmed_description ),
( 'min', 'Minimum', 'MIN', minimum_description ),
( 'center', 'Center', 'CENT', center_description ),
( 'max', 'Maximum', 'MAX', maximum_description ),
( 'failsafe', 'Failsafe', 'FAIL', failsafe_description ),
]
@ -312,6 +316,10 @@ When set to -1 (default), the value depends on the function (see {:}).
standard_params[key]['default'] = -1
standard_params[key]['min'] = -1
if key == 'center':
standard_params[key]['default'] = -1
standard_params[key]['min'] = -1
param = {
'description': {
'short': channel_label+' ${i} '+label+' Value',

View File

@ -8,6 +8,803 @@ Also generates docs/en/middleware/dds_topics.md from dds_topics.yaml
import os
import argparse
import sys
import re
VALID_FIELDS = { #Note, also have to add the message types as those can be fields
'uint64',
'uint16',
'uint8',
'uint32'
}
ALLOWED_UNITS = set(["m", "m/s", "m/s^2", "(m/s)^2", "deg", "deg/s", "rad", "rad/s", "rad^2", "rpm" ,"V", "A", "mA", "mAh", "W", "dBm", "h", "s", "ms", "us", "Ohm", "MB", "Kb/s", "degC","Pa","%","-"])
invalid_units = set()
ALLOWED_FRAMES = set(["NED","Body"])
ALLOWED_INVALID_VALUES = set(["NaN", "0"])
ALLOWED_CONSTANTS_NOT_IN_ENUM = set(["ORB_QUEUE_LENGTH","MESSAGE_VERSION"])
class Error:
def __init__(self, type, message, linenumber=None, issueString = None, field = None):
self.type = type
self.message = message
self.linenumber = linenumber
self.issueString = issueString
self.field = field
def display_error(self):
#print(f"Debug: Error: display_error")
if 'trailing_whitespace' == self.type:
if self.issueString.strip():
print(f"NOTE: Line has trailing whitespace ({self.message}: {self.linenumber}): {self.issueString}")
else:
print(f"NOTE: Line has trailing whitespace ({self.message}: {self.linenumber})")
elif 'leading_whitespace_field_or_constant' == self.type:
print(f"NOTE: Whitespace before field or constant ({self.message}: {self.linenumber}): {self.issueString}")
elif 'field_or_constant_has_multiple_whitepsace' == self.type:
print(f"NOTE: Field/constant has more than one sequential whitespace character ({self.message}: {self.linenumber}): {self.issueString}")
elif 'empty_start_line' == self.type:
print(f"NOTE: Empty line at start of file ({self.message}: {self.linenumber})")
elif 'internal_comment' == self.type:
print(f"NOTE: Internal Comment ({self.message}: {self.linenumber})\n {self.issueString}")
elif 'internal_comment_empty' == self.type:
print(f"NOTE: Empty Internal Comment ({self.message}: {self.linenumber})")
elif 'summary_missing' == self.type:
print(f"WARNING: No message description ({self.message})")
elif 'topic_error' == self.type:
print(f"NOTE: TOPIC ISSUE: {self.issueString}")
elif 'unknown_unit' == self.type:
print(f"WARNING: Unknown Unit: [{self.issueString}] on `{self.field}` ({self.message}: {self.linenumber})")
elif 'constant_not_in_assigned_enum' == self.type:
print(f"WARNING: `{self.issueString}` constant: Prefix not in `@enum` field metadata ({self.message}: {self.linenumber})")
elif 'unknown_invalid_value' == self.type:
print(f"WARNING: Unknown @invalid value: [{self.issueString}] on `{self.field}` ({self.message}: {self.linenumber})")
elif 'unknown_frame' == self.type:
print(f"WARNING: Unknown @frame: [{self.issueString}] on `{self.field}` ({self.message}: {self.linenumber})")
elif 'command_no_params_pipes' == self.type:
print(f"WARNING: `{self.field}` command has no parameters (pipes): [{self.issueString}] ({self.message}: {self.linenumber})")
elif 'command_missing_params' == self.type:
print(f"WARNING: `{self.field}` command missing params - should be 7 params surrounded by 8 pipes: [{self.issueString}] ({self.message}: {self.linenumber})")
elif 'command_too_many_params' == self.type:
print(f"WARNING: `{self.field}` command too many params (should be 7). Extras: [{self.issueString}] ({self.message}: {self.linenumber})")
else:
self.display_info()
def display_info(self):
"""
Display info about an error.
Used as a fallback if error does not have specific printout in display_error()
"""
#print(f"Debug: Error: display_info")
print(f" type: {self.type}, message: {self.message}, linenumber: {self.linenumber}, issueString: {self.issueString}, field: {self.field}")
class Enum:
def __init__(self, name, parentMessage):
self.name = name
self.parent = parentMessage
self.enumValues = dict()
def display_info(self):
"""
Display info about an enum
"""
print(f"Debug: Enum: display_info")
print(f" name: {self.name}")
for key, value in self.enumValues.items():
value.display_info()
class ConstantValue:
def __init__(self, name, type, value, comment, line_number):
self.name = name.strip()
self.type = type.strip()
self.value = value.strip()
self.comment = comment
self.line_number = line_number
if not self.value:
print(f"Debug WARNING: NO VALUE in ConstantValue: {self.name}") ## TODO make into ERROR
exit()
# TODO if value or name are empty, error
def display_info(self):
print(f"Debug: ConstantValue: display_info")
print(f" name: {self.name}, type: {self.type}, value: {self.value}, comment: {self.comment}, line: {self.line_number}")
class CommandParam:
"""
Represents an individual param in a command constant
Encapsulates parsing of the param to extract units etc.
"""
def __init__(self, num, paramText, line_number, parentCommand):
self.paramNum = num
self.paramText = paramText.strip()
self.enum = None
self.range = None
#self.type = type
self.units = []
self.enums = []
self.minValue = None
self.maxValue = None
self.invalidValue = None
self.frameValue = None
self.lineNumber = line_number
self.parent = parentCommand
self.parentMessage = self.parent.parent
match = None
if self.paramText:
match = re.match(r'^((?:\[[^\]]*\]\s*)+)(.*)$', paramText)
self.description = paramText
bracketed_part = None
if match:
bracketed_part = match.group(1).strip() # .strip() removes trailing whitespace from the bracketed part
self.description = match.group(2).strip()
if bracketed_part:
# get units
bracket_content_matches = re.findall(r'\[(.*?)\]', bracketed_part)
#print(f"DEBUG: bracket_content_matches: {bracket_content_matches}")
for item in bracket_content_matches:
item = item.strip()
if item.startswith('@'): # Not a unit:
if item.startswith('@enum'):
item = item.split(" ")
enum = item[1].strip()
if enum and enum not in self.enums:
self.enums.append(enum)
# Create parent enum objects for any enums created in this step
for enumName in self.enums:
if not enumName in self.parentMessage.enums:
self.parentMessage.enums[enumName]=Enum(enumName,self.parentMessage)
elif item.startswith('@range'):
item = item[6:].strip().split(",")
self.range = item
self.minValue = item[0].strip()
self.maxValue = item[1].strip()
elif item.startswith('@invalid'):
self.invalidValue = item[8:].strip()
#TODO: Do we require a description? (not currently)
if self.invalidValue.split(" ")[0] not in ALLOWED_INVALID_VALUES:
print(f"TODO: Command param do not support @invalid: {self.invalidValue}")
"""
error = Error("unknown_invalid_value", self.parent.filename, self.lineNumber, self.invalidValue, self.name)
#error.display_error()
if not "unknown_invalid_value" in self.parent.errors:
self.parent.errors["unknown_invalid_value"] = []
self.parent.errors["unknown_invalid_value"].append(error)
"""
elif item.startswith('@frame'):
self.frameValue = item[6:].strip()
print(f"TODO: Command param do not support @frame: {self.frameValue}")
"""
if self.frameValue not in ALLOWED_FRAMES:
error = Error("unknown_frame", self.parent.filename, self.lineNumber, self.frameValue, self.name)
#error.display_error()
if not "unknown_frame" in self.parent.errors:
self.parent.errors["unknown_frame"] = []
self.parent.errors["unknown_frame"].append(error)
"""
else:
print(f"WARNING: Unhandled metadata in message comment: {item}")
# TODO - report errors for different kinds of metadata
exit()
else: # bracket is a unit
unit = item.strip()
if item == "-":
unit = ""
if unit and unit not in self.units:
self.units.append(unit)
if unit not in ALLOWED_UNITS:
invalid_units.add(unit)
error = Error("unknown_unit", self.parentMessage.filename, self.lineNumber, unit, self.parent.name)
#error.display_error()
if not "unknown_unit" in self.parentMessage.errors:
self.parentMessage.errors["unknown_unit"] = []
self.parentMessage.errors["unknown_unit"].append(error)
def display_info(self):
print(f"Debug: CommandParam: display_info")
print(f" id: {self.paramNum}")
print(f" paramText: {self.paramText}\n unit: {self.units}\n enums: {self.enums}\n lineNumber: {self.lineNumber}\n range: {self.range}\n minValue: {self.minValue}\n maxValue: {self.maxValue}\n invalidValue: {self.invalidValue}\n frameValue: {self.frameValue}\n parent: {self.parent}\n ")
class CommandConstant:
"""
Represents a constant that is a command definition.
Encapsulates parsing of the command format.
The individual params are further parsed in CommandParam
"""
def __init__(self, name, type, value, comment, line_number, parentMessage):
self.name = name.strip()
self.type = type.strip()
self.value = value.strip()
self.comment = comment
self.line_number = line_number
self.parent = parentMessage
self.description = self.comment
self.param1 = None
self.param2 = None
self.param3 = None
self.param4 = None
self.param5 = None
self.param6 = None
self.param7 = None
if not self.value:
print(f"Debug WARNING: NO VALUE in CommandConstant: {self.name}") ## TODO make into ERROR
exit()
if not self.comment: # This is an bug for a command
#print(f"Debug WARNING: NO COMMENT in CommandConstant: {self.name}") ## TODO make into ERROR
return
# Parse command comment to get the description and parameters.
# print(f"Debug CommandConstant: {self.comment}")
if not "|" in self.comment:
# This is an error for a command constant
error = Error("command_no_params_pipes", self.parent.filename, self.line_number, self.comment, self.name)
#error.display_error()
if not "command_no_params_pipes" in self.parent.errors:
self.parent.errors["command_no_params_pipes"] = []
self.parent.errors["command_no_params_pipes"].append(error)
return
# Split on pipes
commandSplit = self.comment.split("|")
if len(commandSplit) < 9:
# Should 7 pipes, so each command is fully surrounded
error = Error("command_missing_params", self.parent.filename, self.line_number, self.comment, self.name)
#error.display_error()
if not "command_missing_params" in self.parent.errors:
self.parent.errors["command_missing_params"] = []
self.parent.errors["command_missing_params"].append(error)
self.description = commandSplit[0].strip()
self.description = self.description if self.description else None
params_to_update = commandSplit[1:8]
for i, value in enumerate(params_to_update, start=1):
if value.strip():
# parse the param
param = CommandParam(i, value, self.line_number, self)
#param.display_info() # DEBUG CODE XXX
setattr(self, f"param{i}", param)
# parse the param
if len(commandSplit) > 8:
extras = commandSplit[8:]
error = Error("command_too_many_params", self.parent.filename, self.line_number, extras, self.name)
if not "command_too_many_params" in self.parent.errors:
self.parent.errors["command_too_many_params"] = []
self.parent.errors["command_too_many_params"].append(error)
# TODO if value or name are empty, error
def markdown_out(self):
#print("DEBUG: CommandConstant.markdown_out")
output = f"""### {self.name} ({self.value})
{self.description}
Param | Units | Range/Enum | Description
--- | --- | --- | ---
"""
for i in range(1, 8):
attr_name = f"param{i}"
# getattr returns None if the attribute doesn't exist
val = getattr(self, attr_name, None)
if val is not None:
rangeVal = ""
if val.minValue or val.maxValue:
rangeVal = f"[{val.minValue if val.minValue else '-'} : {val.maxValue if val.maxValue else '-' }]"
output+=f"{i} | {", ".join(val.units)}|{', '.join(f"[{e}](#{e})" for e in val.enums)}{rangeVal} | {val.description}\n"
else:
output+=f"{i} | | | ?\n"
output+=f"\n"
return output
def display_info(self):
print(f"Debug: CommandConstant: display_info")
print(f" name: {self.name}, type: {self.type}, value: {self.value}, comment: {self.comment}, line: {self.line_number}")
print(f" description: {self.description}\n param1: {self.param1}\n param2: {self.param2}\n param3: {self.param3}\n param4: {self.param4}\n param5: {self.param5}\n param6: {self.param6}\n param7: {self.param7}")
class MessageField:
"""
Represents a field.
Encapsulates parsing of the field information.
"""
def __init__(self, name, type, comment, line_number, parentMessage):
self.name = name
self.type = type
self.comment = comment
self.unit = None
self.enums = None
self.minValue = None
self.maxValue = None
self.invalidValue = None
self.frameValue = None
self.lineNumber = line_number
self.parent = parentMessage
#print(f"MessageComment: {comment}")
match = None
if self.comment:
match = re.match(r'^((?:\[[^\]]*\]\s*)+)(.*)$', comment)
self.description = comment
bracketed_part = None
if match:
bracketed_part = match.group(1).strip() # .strip() removes trailing whitespace from the bracketed part
self.description = match.group(2).strip()
if bracketed_part:
# get units
bracket_content_matches = re.findall(r'\[(.*?)\]', bracketed_part)
#print(f"bracket_content_matches: {bracket_content_matches}")
for item in bracket_content_matches:
item = item.strip()
if item.startswith('@'): # Not a unit:
if item.startswith('@enum'):
item = item.split(" ")
self.enums = item[1:]
# Create parent enum objects
for enumName in self.enums:
if not enumName in parentMessage.enums:
parentMessage.enums[enumName]=Enum(enumName,parentMessage)
elif item.startswith('@range'):
item = item[6:].strip().split(",")
self.minValue = item[0].strip()
self.maxValue = item[1].strip()
elif item.startswith('@invalid'):
self.invalidValue = item[8:].strip()
#TODO: Do we require a description? (not currently)
if self.invalidValue.split(" ")[0] not in ALLOWED_INVALID_VALUES:
error = Error("unknown_invalid_value", self.parent.filename, self.lineNumber, self.invalidValue, self.name)
#error.display_error()
if not "unknown_invalid_value" in self.parent.errors:
self.parent.errors["unknown_invalid_value"] = []
self.parent.errors["unknown_invalid_value"].append(error)
elif item.startswith('@frame'):
self.frameValue = item[6:].strip()
if self.frameValue not in ALLOWED_FRAMES:
error = Error("unknown_frame", self.parent.filename, self.lineNumber, self.frameValue, self.name)
#error.display_error()
if not "unknown_frame" in self.parent.errors:
self.parent.errors["unknown_frame"] = []
self.parent.errors["unknown_frame"].append(error)
else:
print(f"WARNING: Unhandled metadata in message comment: {item}")
# TODO - report errors for different kinds of metadata
exit()
else: # bracket is a unit
self.unit = item
if self.unit not in ALLOWED_UNITS:
invalid_units.add(self.unit)
error = Error("unknown_unit", self.parent.filename, self.lineNumber, self.unit, self.name)
#error.display_error()
if not "unknown_unit" in self.parent.errors:
self.parent.errors["unknown_unit"] = []
self.parent.errors["unknown_unit"].append(error)
if item == "-":
self.unit = ""
def display_info(self):
print(f"Debug: MessageField: display_info")
print(f" name: {self.name}, type: {self.type}, description: {self.description}, enums: {self.enums}, minValue: {self.minValue}, maxValue: {self.maxValue}, invalidValue: {self.invalidValue}, frameValue: {self.frameValue}")
class UORBMessage:
"""
Represents a whole message, including fields, enums, commands, constants.
The parser function delegates the parsing of each part of the message to
more appropriate classes, once the specific type of line has been identified.
"""
def __init__(self, filename):
self.filename = filename
msg_path = os.path.join(os.path.dirname(os.path.realpath(__file__)),"../../msg")
self.msg_filename = os.path.join(msg_path, self.filename)
self.name = os.path.splitext(os.path.basename(msg_file))[0]
self.shortDescription = ""
self.longDescription = ""
self.fields = []
self.constantFields = dict()
self.commandConstants = dict()
self.enums = dict()
self.output_file = os.path.join(output_dir, f"{self.name}.md")
self.topics = []
self.errors = dict()
self.parseFile()
if args.errors:
#print(f"DEBUG: args.errors: {args.errors}")
if args.error_messages:
messages = args.error_messages.split(" ")
#print(f"DEBUG: args.errors: {messages},self.name: {self.name}")
if self.name in messages:
self.reportErrors()
#print(f"Debug: {self.name} in {messages}")
else:
self.reportErrors()
def reportErrors(self):
#print(f"Debug: UORBMessage: reportErrors()")
for errorType, errors in self.errors.items():
for error in errors:
error.display_error()
def markdown_out(self):
#print(f"Debug: UORBMessage: markdown_out()")
# Add page header (forces wide pages)
markdown = f"""---
pageClass: is-wide-page
---
# {self.name} (UORB message)
"""
## Append description info if present
markdown += f"{self.shortDescription}\n\n" if self.shortDescription else ""
markdown += f"{self.longDescription}\n\n" if self.longDescription else ""
topicList = " ".join(self.topics)
markdown += f"**TOPICS:** {topicList}\n\n"
# Generate field docs
markdown += f"## Fields\n\n"
markdown += "Name | Type | Unit [Frame] | Range/Enum | Description\n"
markdown += "--- | --- | --- | --- | ---\n"
for field in self.fields:
unit = f"{field.unit}" if field.unit else ""
frame = f"[{field.frameValue}]" if field.frameValue else ""
unit = f"{unit} {frame}"
unit.strip()
unit = f" {unit}"
value = " "
if field.enums:
value = ""
for enum in field.enums:
value += f"[{enum}](#{enum})"
value = value.strip()
value = f"{value}"
elif field.minValue or field.maxValue:
value = f"[{field.minValue if field.minValue else '-'} : {field.maxValue if field.maxValue else '-' }]"
description = f" {field.description}" if field.description else ""
invalid = f" (Invalid: {field.invalidValue}) " if field.invalidValue else ""
markdown += f"{field.name} | `{field.type}` |{unit}|{value}|{description}{invalid}\n"
# Generate table for command docs
if len(self.commandConstants) > 0:
#print("DEBUGCOMMAND")
markdown += f"\n## Commands\n\n"
"""
markdown += "Name | Type | Value | Description\n"
markdown += "--- | --- | --- |---\n"
for name, command in self.commandConstants.items():
description = f" {command.comment} " if enum.comment else " "
markdown += f'<a href="#{name}"></a> {name} | `{command.type}` | {command.value} |{description}\n'
"""
for commandConstant in self.commandConstants.values():
#print(commandConstant)
markdown += commandConstant.markdown_out()
# Generate enum docs
if len(self.enums) > 0:
markdown += f"\n## Enums\n"
for name, enum in self.enums.items():
markdown += f"\n### {name} {{#{name}}}\n\n"
markdown += "Name | Type | Value | Description\n"
markdown += "--- | --- | --- | ---\n"
for enumValueName, enumValue in enum.enumValues.items():
description = f" {enumValue.comment} " if enumValue.comment else " "
markdown += f'<a href="#{enumValueName}"></a> {enumValueName} | `{enumValue.type}` | {enumValue.value} |{description}\n'
# Generate table for constants docs
if len(self.constantFields) > 0:
markdown += f"\n## Constants\n\n"
markdown += "Name | Type | Value | Description\n"
markdown += "--- | --- | --- |---\n"
for name, enum in self.constantFields.items():
description = f" {enum.comment} " if enum.comment else " "
markdown += f'<a href="#{name}"></a> {name} | `{enum.type}` | {enum.value} |{description}\n'
# Append msg contents to the end
with open(self.msg_filename, 'r') as source_file:
msg_contents = source_file.read()
msg_contents = msg_contents.strip()
#Format markdown using msg name, comment, url, contents.
markdown += f"""
## Source Message
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/{self.filename})
::: details Click here to see original file
```c
{msg_contents}
```
:::
"""
with open(self.output_file, 'w') as content_file:
content_file.write(markdown)
#exit()
def display_info(self):
print(f"UORBMessage: display_info")
print(f" name: {self.name}")
print(f" filename: {self.filename}, ")
print(f" msg_filename: {self.msg_filename}, ")
print(f"self.shortDescription: {self.shortDescription}")
print(f"self.longDescription: {self.longDescription}")
print(f"self.enums: {self.enums}")
for enum, enumObject in self.enums.items():
enumObject.display_info()
# Output our data so far
for field in self.fields:
field.display_info()
for enumvalue in self.constantFields:
print(enumvalue)
self.constantFields[enumvalue].display_info()
def handleField(self, line, line_number, parentMessage):
#print(f"debug: handleField: (line): \n {line}")
# Note, here we know we don't have a comment or a topic.
# We expect it to be a field.
# Check field doesn't have leading whitespace (trailing spaces already checked)
if line[:1].isspace(): # Returns True for ' ', '\t', '\n', '\r', etc.
#print("First character is whitespace")
error = Error("leading_whitespace_field_or_constant", self.filename, line_number, line)
if not "leading_whitespace_field_or_constant" in self.errors:
self.errors["leading_whitespace_field_or_constant"] = []
self.errors["leading_whitespace_field_or_constant"].append(error)
# Now we can parse the stripped line
fieldOrConstant = line.strip()
# Check that the field or constant has only single whitespace separators
stripped_fieldOrConstant = re.sub(r'\s+', ' ', fieldOrConstant) # Collapse all spaces to a single space (LHS already stripped).
if stripped_fieldOrConstant != fieldOrConstant:
#print("Field/Constant has multiple whitespace characters") # Since the collapsed version shows them.
error = Error("field_or_constant_has_multiple_whitepsace", self.filename, line_number, line)
if not "field_or_constant_has_multiple_whitepsace" in self.errors:
self.errors["field_or_constant_has_multiple_whitepsace"] = []
self.errors["field_or_constant_has_multiple_whitepsace"].append(error)
fieldOrConstant = stripped_fieldOrConstant
comment = None
if "#" in line:
commentExtract = line.split("#", 1) # Split once on left-most '#'
fieldOrConstant = commentExtract[0].strip()
comment = commentExtract[-1].strip()
if "=" not in fieldOrConstant:
# Is a field:
field = fieldOrConstant.split(" ")
type = field[0].strip()
name = field[1].strip()
field = MessageField(name, type, comment, line_number, parentMessage)
self.fields.append(field)
else:
temp = fieldOrConstant.split("=")
value = temp[-1]
typeAndName = temp[0].split(" ")
type = typeAndName[0]
name = typeAndName[1]
if name.startswith("VEHICLE_CMD_") and parentMessage.name == 'VehicleCommand': #it's a command.
#print(f"DEBUG: startswith VEHICLE_CMD_ {name}")
commandConstant = CommandConstant(name, type, value, comment, line_number, parentMessage)
#commandConstant.display_info()
self.commandConstants[name]=commandConstant
else: #it's a constant (or part of an enum)
constantField = ConstantValue(name, type, value, comment, line_number)
self.constantFields[name]=constantField
def parseFile(self):
initial_block_lines = []
#stopping_token = None
found_first_relevant_content = False
gettingInitialComments = False
gettingFields = False
with open(self.msg_filename, 'r', encoding='utf-8') as uorbfile:
lines = uorbfile.read().splitlines()
for line_number, line in enumerate(lines, 1):
if line != line.rstrip():
#print(f"[{self.filename}] Trailing whitespace on line {line_number}: XX{line}YY")
error = Error("trailing_whitespace", self.filename, line_number, line)
if not "trailing_whitespace" in self.errors:
self.errors["trailing_whitespace"] = []
self.errors["trailing_whitespace"].append(error)
#print(f"line: {line}")
stripped_line = re.sub(r'\s+', ' ', line).strip() # Collapse all spaces to a single space and strip stuff off end.
#print(f"stripped_line: {stripped_line}")
# TODO? Perhaps report whitespace if the size of those two is different and it is empty
# Or perhaps we just fix it on request
isEmptyLine = False if line.strip() else True
if not found_first_relevant_content and isEmptyLine: #Empty line
#print(f"{self.filename}: Empty line at start of file: [{line_number}]\n {line}")
error = Error("empty_start_line", self.filename, line_number, line)
if not "empty_start_line" in self.errors:
self.errors["empty_start_line"] = []
self.errors["empty_start_line"].append(error)
#error.display_error()
continue
if not found_first_relevant_content and not isEmptyLine:
found_first_relevant_content = True
if stripped_line.startswith("#"):
gettingInitialComments = True
else:
gettingInitialComments = False
gettingFields = True
if gettingInitialComments and stripped_line.startswith("#"):
stripped_line=stripped_line[1:].strip()
#print(f"DEBUG: gettingInitialComments: comment line: {stripped_line}")
initial_block_lines.append(stripped_line)
else:
gettingInitialComments = False
gettingFields = True #Getting fields and constants
if gettingFields:
if isEmptyLine:
continue # empty line
if stripped_line.startswith("# TOPICS "):
stripped_line = stripped_line[9:]
stripped_line = stripped_line.split(" ")
self.topics+= stripped_line
# Note, default topic and topic errors handled after all lines parsed
continue
if stripped_line.startswith("#"):
# Its an internal comment
stripped_line=stripped_line[1:].strip()
if stripped_line:
#print(f"{self.filename}: Internal comment: [{line_number}]\n {line}")
error = Error("internal_comment", self.filename, line_number, line)
if not "internal_comment" in self.errors:
self.errors["internal_comment"] = []
self.errors["internal_comment"].append(error)
else:
#print(f"{self.filename}: Empty internal comment: [{line_number}]\n {line}")
error = Error("internal_comment_empty", self.filename, line_number, line)
if not "internal_comment_empty" in self.errors:
self.errors["internal_comment_empty"] = []
self.errors["internal_comment_empty"].append(error)
#pass # Empty comment
continue
# Must be a field or a comment.
self.handleField(line, line_number, parentMessage=self)
# Fix up topics if the topic is empty
def camel_to_snake(name):
# Match upper case not at start of string
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
# Handle cases with multiple capital first letter
return re.sub('([A-Z]+)([A-Z][a-z]*)', r'\1_\2', s1).lower()
defaultTopic = camel_to_snake(self.name)
if len(self.topics) == 0:
# We have no topic declared, so set the default topic
self.topics.append(defaultTopic)
elif len(self.topics) == 1:
# We have 1 topic declared - either it is default or there is some issue.
if defaultTopic in self.topics:
# Declared topic is default topic
error = Error("topic_error", self.filename, "", f"WARNING: TOPIC {defaultTopic} unnecessarily declared for {self.name}")
else:
# Declared topic is not default topic
error = Error("topic_error", self.filename, "", f"NOTE: TOPIC {self.topics[1]}: Only Declared topic is not default topic {defaultTopic} for {self.name}")
if not "topic_error" in self.errors:
self.errors["topic_error"] = []
self.errors["topic_error"].append(error)
elif len(self.topics) > 1:
if defaultTopic not in self.topics:
error = Error("topic_error", self.filename, "", f"NOTE: TOPIC - Default topic {defaultTopic} for {self.name} not in {self.topics}")
# Parse our short and long description
#print(f"DEBUG: initial_block_lines: {initial_block_lines}")
doingLongDescription = False
for summaryline in initial_block_lines:
if not self.shortDescription and summaryline.strip() == '':
continue
if not doingLongDescription and not summaryline.strip() == '':
self.shortDescription += f" {summaryline}"
self.shortDescription = self.shortDescription.strip()
if not self.shortDescription[-1:] == ".": # Add terminating fullstop if not present.
self.shortDescription += "."
if not doingLongDescription and summaryline.strip() == '':
doingLongDescription = True
continue
if doingLongDescription:
self.longDescription += f"{summaryline}\n"
if self.longDescription:
self.longDescription.strip()
if not self.shortDescription:
# Summary has not been defined
error = Error("summary_missing", self.filename)
if not "summary_missing" in self.errors:
self.errors["summary_missing"] = []
self.errors["summary_missing"].append(error)
# TODO Parse our constantValues into enums, leaving only constants
constantValuesToRemove = []
#print(f"DEBUG: Self.enums: {self.enums}")
for enumName, enumObject in self.enums.items():
for enumValueName, enumValueObject in self.constantFields.items():
if enumValueName.startswith(enumName):
# Copy this value into the object (cant be duplicate because parent is dict)
enumObject.enumValues[enumValueName]=enumValueObject
constantValuesToRemove.append(enumValueName)
# Now delete the original enumvalues
for enumValName in constantValuesToRemove:
del self.constantFields[enumValName]
constantsNotAssignedToEnums = len(self.constantFields)
if constantsNotAssignedToEnums > 0:
#print(f"Debug: WARNING constantsNotAssignedToEnums: {constantsNotAssignedToEnums}")
for enumValueName, enumValue in self.constantFields.items():
if enumValueName in ALLOWED_CONSTANTS_NOT_IN_ENUM: # Ignore constants
pass
else:
error = Error("constant_not_in_assigned_enum", self.filename, enumValue.line_number, enumValueName)
if not "constant_not_in_assigned_enum" in self.errors:
self.errors["constant_not_in_assigned_enum"] = []
self.errors["constant_not_in_assigned_enum"].append(error)
# TODO Maybe present as list of possible enums.
import yaml
@ -127,83 +924,50 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Generate docs from .msg files')
parser.add_argument('-d', dest='dir', help='output directory', required=True)
parser.add_argument('-e', dest='errors', action='store_true', help='Report errors')
parser.add_argument('-m', dest='error_messages', help='Message to report errors against (by default all)')
args = parser.parse_args()
output_dir = args.dir
if not os.path.isdir(output_dir):
print(f"making output_dir {output_dir}")
os.mkdir(output_dir)
msg_path = os.path.join(os.path.dirname(os.path.realpath(__file__)),"../../msg")
msg_files = get_msgs_list(msg_path)
msg_files.sort()
versioned_msgs_list = ''
unversioned_msgs_list = ''
msgTypes = set()
for msg_file in msg_files:
# Add messages to set of allowed types (compound types)
#msg_type = msg_file.rsplit('/')[-1]
#msg_type = msg_type.rsplit('\\')[-1]
#msg_type = msg_type.rsplit('.')[0]
msg_name = os.path.splitext(os.path.basename(msg_file))[0]
output_file = os.path.join(output_dir, msg_name+'.md')
msg_filename = os.path.join(msg_path, msg_file)
print("{:} -> {:}".format(msg_filename, output_file))
msgTypes.add(msg_name)
#Format msg url
msg_url="[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/%s)" % msg_file
msg_description = ""
summary_description = ""
#Get msg description (first non-empty comment line from top of msg)
with open(msg_filename, 'r') as lineparser:
line = lineparser.readline()
while line.startswith('#') or (line.strip() == ''):
print('DEBUG: line: %s' % line)
line=line[1:].strip()+'\n'
stripped_line=line.strip()
if msg_description and not summary_description and stripped_line=='':
summary_description = msg_description.strip()
msg_description+=line
line = lineparser.readline()
msg_description=msg_description.strip()
if not summary_description and msg_description:
summary_description = msg_description
print('msg_description: Z%sZ' % msg_description)
print('summary_description: Z%sZ' % summary_description)
summary_description
msg_contents = ""
#Get msg contents (read the file)
with open(msg_filename, 'r') as source_file:
msg_contents = source_file.read()
#Format markdown using msg name, comment, url, contents.
markdown_output="""# %s (UORB message)
%s
%s
```c
%s
```
""" % (msg_name, msg_description, msg_url, msg_contents)
with open(output_file, 'w') as content_file:
content_file.write(markdown_output)
for msg_file in msg_files:
message = UORBMessage(msg_file)
# Any additional tests that can't be in UORBMessage parser go here.
message.markdown_out()
# Categorize as versioned or unversioned
if "versioned" in msg_file:
versioned_msgs_list += '- [%s](%s.md)' % (msg_name, msg_name)
if summary_description:
versioned_msgs_list += "%s" % summary_description
versioned_msgs_list += f"- [{message.name}]({message.name}.md)"
if message.shortDescription:
versioned_msgs_list += f"{message.shortDescription}"
versioned_msgs_list += "\n"
else:
unversioned_msgs_list += '- [%s](%s.md)' % (msg_name, msg_name)
if summary_description:
unversioned_msgs_list += "%s" % summary_description
unversioned_msgs_list += f"- [{message.name}]({message.name}.md)"
if message.shortDescription:
unversioned_msgs_list += f"{message.shortDescription}"
unversioned_msgs_list += "\n"
# Write out the index.md file
index_text="""# uORB Message Reference
index_text=f"""# uORB Message Reference
::: info
This list is [auto-generated](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/msg/generate_msg_docs.py) from the source code.
@ -218,14 +982,14 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
## Versioned Messages
%s
{versioned_msgs_list}
## Unversioned Messages
%s
""" % (versioned_msgs_list, unversioned_msgs_list)
{unversioned_msgs_list}
"""
index_file = os.path.join(output_dir, 'index.md')
with open(index_file, 'w') as content_file:
with open(index_file, 'w', encoding='utf-8') as content_file:
content_file.write(index_text)
generate_dds_yaml_doc(msg_files)

View File

@ -1138,6 +1138,8 @@ if num_mags >= 1:
if not math.isnan(sensor_mag_0['temperature'][0]):
mag_0_params['TC_M0_ID'] = int(np.median(sensor_mag_0['device_id']))
# find the min, max and reference temperature
mag_0_params['TC_M0_TMIN'] = np.amin(sensor_mag_0['temperature'])
mag_0_params['TC_M0_TMAX'] = np.amax(sensor_mag_0['temperature'])
@ -1656,9 +1658,9 @@ sensor_baro_0['pressure'] = median_filter(sensor_baro_0['pressure'])
# fit data
median_pressure = np.median(sensor_baro_0['pressure'])
if noResample:
coef_baro_0_x = np.polyfit(temp_rel,100*(sensor_baro_0['pressure']-median_pressure),5) # convert from hPa to Pa
coef_baro_0_x = np.polyfit(temp_rel,(sensor_baro_0['pressure']-median_pressure),5) # pressure in Pascal
else:
temperature, baro = resampleWithDeltaX(temp_rel,100*(sensor_baro_0['pressure']-median_pressure)) # convert from hPa to Pa
temperature, baro = resampleWithDeltaX(temp_rel,(sensor_baro_0['pressure']-median_pressure)) # pressure in Pascal
coef_baro_0_x = np.polyfit(temperature,baro,5)
baro_0_params['TC_B0_X5'] = coef_baro_0_x[0]
@ -1675,7 +1677,7 @@ baro_0_x_resample = fit_coef_baro_0_x(temp_rel_resample)
plt.figure(13,figsize=(20,13))
# draw plots
plt.plot(sensor_baro_0['temperature'],100*sensor_baro_0['pressure']-100*median_pressure,'b')
plt.plot(sensor_baro_0['temperature'],sensor_baro_0['pressure']-median_pressure,'b')
plt.plot(temp_resample,baro_0_x_resample,'r')
plt.title('Baro 0 ({}) Bias vs Temperature'.format(baro_0_params['TC_B0_ID']))
plt.ylabel('Z bias (Pa)')
@ -1717,9 +1719,9 @@ if num_baros >= 2:
# fit data
median_pressure = np.median(sensor_baro_1['pressure'])
if noResample:
coef_baro_1_x = np.polyfit(temp_rel,100*(sensor_baro_1['pressure']-median_pressure),5) # convert from hPa to Pa
coef_baro_1_x = np.polyfit(temp_rel,(sensor_baro_1['pressure']-median_pressure),5) # pressure in Pascal
else:
temperature, baro = resampleWithDeltaX(temp_rel,100*(sensor_baro_1['pressure']-median_pressure)) # convert from hPa to Pa
temperature, baro = resampleWithDeltaX(temp_rel,(sensor_baro_1['pressure']-median_pressure)) # pressure in Pascal
coef_baro_1_x = np.polyfit(temperature,baro,5)
baro_1_params['TC_B1_X5'] = coef_baro_1_x[0]
@ -1736,7 +1738,7 @@ if num_baros >= 2:
plt.figure(14,figsize=(20,13))
# draw plots
plt.plot(sensor_baro_1['temperature'],100*sensor_baro_1['pressure']-100*median_pressure,'b')
plt.plot(sensor_baro_1['temperature'],sensor_baro_1['pressure']-median_pressure,'b')
plt.plot(temp_resample,baro_1_x_resample,'r')
plt.title('Baro 1 ({}) Bias vs Temperature'.format(baro_1_params['TC_B1_ID']))
plt.ylabel('Z bias (Pa)')
@ -1778,9 +1780,9 @@ if num_baros >= 3:
# fit data
median_pressure = np.median(sensor_baro_2['pressure'])
if noResample:
coef_baro_2_x = np.polyfit(temp_rel,100*(sensor_baro_2['pressure']-median_pressure),5) # convert from hPa to Pa
coef_baro_2_x = np.polyfit(temp_rel,(sensor_baro_2['pressure']-median_pressure),5) # pressure in Pascal
else:
temperature, baro = resampleWithDeltaX(temp_rel,100*(sensor_baro_2['pressure']-median_pressure)) # convert from hPa to Pa
temperature, baro = resampleWithDeltaX(temp_rel,(sensor_baro_2['pressure']-median_pressure)) # pressure in Pascal
coef_baro_2_x = np.polyfit(temperature,baro,5)
baro_2_params['TC_B2_X5'] = coef_baro_2_x[0]
@ -1797,7 +1799,7 @@ if num_baros >= 3:
plt.figure(15,figsize=(20,13))
# draw plots
plt.plot(sensor_baro_2['temperature'],100*sensor_baro_2['pressure']-100*median_pressure,'b')
plt.plot(sensor_baro_2['temperature'],sensor_baro_2['pressure']-median_pressure,'b')
plt.plot(temp_resample,baro_2_x_resample,'r')
plt.title('Baro 2 ({}) Bias vs Temperature'.format(baro_2_params['TC_B2_ID']))
plt.ylabel('Z bias (Pa)')
@ -1838,7 +1840,7 @@ if num_baros >= 4:
# fit data
median_pressure = np.median(sensor_baro_3['pressure'])
coef_baro_3_x = np.polyfit(temp_rel,100*(sensor_baro_3['pressure']-median_pressure),5) # convert from hPa to Pa
coef_baro_3_x = np.polyfit(temp_rel,(sensor_baro_3['pressure']-median_pressure),5) # pressure in Pascal
baro_3_params['TC_B3_X5'] = coef_baro_3_x[0]
baro_3_params['TC_B3_X4'] = coef_baro_3_x[1]
baro_3_params['TC_B3_X3'] = coef_baro_3_x[2]
@ -1853,7 +1855,7 @@ if num_baros >= 4:
plt.figure(16,figsize=(20,13))
# draw plots
plt.plot(sensor_baro_3['temperature'],100*sensor_baro_3['pressure']-100*median_pressure,'b')
plt.plot(sensor_baro_3['temperature'],sensor_baro_3['pressure']-median_pressure,'b')
plt.plot(temp_resample,baro_3_x_resample,'r')
plt.title('Baro 3 ({}) Bias vs Temperature'.format(baro_3_params['TC_B3_ID']))
plt.ylabel('Z bias (Pa)')

2113
Tools/px4_uploader.py Executable file

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@ class ModuleDocumentation(object):
# TOC in https://github.com/PX4/PX4-Autopilot/blob/main/docs/en/SUMMARY.md
valid_categories = ['driver', 'estimator', 'controller', 'system',
'communication', 'command', 'template', 'simulation', 'autotune']
valid_subcategories = ['', 'camera', 'distance_sensor', 'imu', 'ins', 'airspeed_sensor',
valid_subcategories = ['', 'adc', 'camera', 'distance_sensor', 'imu', 'ins', 'airspeed_sensor',
'magnetometer', 'baro', 'optical_flow', 'radio_control','rpm_sensor', 'transponder']
max_line_length = 80 # wrap lines that are longer than this

Some files were not shown because too many files have changed in this diff Show More