Compare commits

..

382 Commits

Author SHA1 Message Date
Christian Rauch 437b6b9844 remove unused debug.h 2023-08-14 11:03:24 -04:00
Christian Rauch 43ec73165f BMI0xx: remove unused board_dma_alloc.h 2023-08-14 11:03:24 -04:00
Christian Rauch ecbbaeb457 ADIS16497: replace NuttX specific up_udelay with HAL version px4_udelay 2023-08-14 11:03:24 -04:00
Christian Rauch 345d814ca4 enable common barometer, IMU and magnetometer 2023-08-14 11:03:24 -04:00
Christian Rauch c2b10ced8d linux_pwm_out must link mixer_module 2023-08-14 10:52:37 -04:00
Christian Rauch 2bcb3ea3f7 skip SSH key check for simpler builds in the Docker container 2023-08-14 10:50:28 -04:00
bresch dcb4c182fe ekf2: stop GNSS fusion when fix is loss 2023-07-21 10:21:57 +02:00
Matthias Grob 5736a31a67 rc.interface: explicitly save empty ESC mask 2023-07-13 16:27:38 +02:00
Mathieu Bresciani cc26cf4121 mc_pos_control: fix potential thrust spike on hover thrust change
Co-authored-by: Josh Henderson <hendjoshsr71@gmail.com>
Co-authored-by: Matthias Grob <maetugr@gmail.com>
2023-06-16 15:52:52 +02:00
Beat Küng 504d951c75 fix kconfig: rename LINUX to LINUX_TARGET
LINUX is defined by cmake >= 3.25:
https://cmake.org/cmake/help/latest/variable/LINUX.html
2023-04-21 07:42:20 +02:00
David Sidrane 1c8ab2a0d7 [BACKPORT] px4_fmu-v6c:Add Mini & fix Rev 1 (#21227) 2023-03-06 12:21:07 -08:00
Julian Oes 6d27784013 nuttx: update submodule to clean backport branch
This should be identical but now cleanly pointing to the
px4_firmware_nuttx-10.1.0+ branch.
2023-03-02 03:53:29 -08:00
David Sidrane a8f29bc2aa px4_fmu-v6x:Fix CUAV Sensor Set startup (#21221)
Reverts part of 3c10e34a49 not
   applicable to V1.13 VER/REV system.
2023-03-01 09:15:03 -08:00
Beat Küng 4bcbfec6cb nuttx: update submodule (DMA + mmcsd fixes) 2023-02-22 06:32:16 +13:00
Leonardo Garcia c7b9e160b8 mro/pixracerpro: add missing px4_platform_configure() call (#21161) 2023-02-21 09:30:59 +01:00
alexklimaj 5334ec1ef0 Move uavcan start to end of rcS to prevent sd card read lock 2023-02-13 22:34:58 -05:00
alexklimaj 486674a652 Add ARK PAB Carrier
Add ARK_FMU_V6X to RCS netman

Remove arkv6x rc single wire

Fix arkv6x mtd

arkv6x bootloader init all pins to prevent power cycling peripherals on boot

arkv6x don't power cycle sd card on boot

arkv6x add UART4 Telem 4
2023-02-13 22:34:58 -05:00
alexklimaj 6af8e34596 boards: arkv6x add pulldowns to GPIO pins UART7 RTS and UART7 CTS 2023-02-13 22:34:58 -05:00
FriedrichTuttas ec06fae3fd boards: px4_fmu-v6x add pulldowns to GPIO pins UART7 RTS and UART7 CTS (#20974)
- https://github.com/PX4/PX4-Autopilot/issues/20762

Co-authored-by: David Sidrane <David.Sidrane@Nscdg.com>
2023-02-07 22:29:52 -05:00
Daniel Agar 7001d90d84 lib/sensor_calibration: BiasCorrectedSensorOffset() don't incorporate thermal offsets
- the thermal offsets are an optional correction applied to the raw data, so when updating an existing calibration offset with new learned bias we don't want this incorporated
2023-02-07 09:12:09 -05:00
CUAVmengxiao ca9af1ca9e drivers: add support for ICP101XX and ICP201XX 2023-02-06 15:19:49 -05:00
Ryan Meagher 7a6cfce0ca drivers/barometer/invensense: fix icp10111 and icp10100
* fix icp so it compiles
* add icp10111 and icp10100 DEVTPYE
2023-02-06 15:19:39 -05:00
David Sidrane 3c10e34a49 fmu-v6x:CUAV HW Version changes 2023-02-06 15:17:32 -05:00
CUAVmengxiao 58cc105493 px4_fmu-v6X: add CUAV board 2023-02-06 15:16:28 -05:00
Thomas Watson 9cf38206f6 boards/mro/pixracerpro: fix voltage/current monitoring
This corrects the board definition to use the proper polarity
for the brick power valid signal, thus allowing the board to
detect the battery and monitor it properly.
2023-02-06 15:13:25 -05:00
Claudio 2295ee9164 msg/tools/generate_microRTPS_bridge.py allow ROS2 distro humble
Co-authored-by: Claudio Fritsche <claudio@onesecdelivery.com>
2023-01-23 09:48:24 -05:00
Julian Oes 37cb24afd8 mavlink_shell: fix stall on CubeOrange
On CubeOrange where no console is configured by default, starting
MAVLink shell just stalls, and doesn't work.

Also, logfile download has been reported not to work, and again, seems
to work with this change.

Signed-off-by: Julian Oes <julian@oes.ch>
2023-01-04 22:33:36 -05:00
Beat Küng 985482badb mixer_module: only advertise actuator_outputs when mixer is loaded 2022-12-16 07:50:57 +01:00
bresch beddb3969e GyroCalibration: update sensor correction before using it
Otherwise, the thermal offset value can be outdated
2022-11-23 14:25:31 -05:00
bresch 4481c3bc1f TC: erase current calibration when temp cal is completed 2022-11-23 14:25:31 -05:00
Julian Oes 46a12a09bf fmu-v2: make optional sensor startup quiet
Signed-off-by: Julian Oes <julian@oes.ch>
2022-11-22 21:12:09 +13:00
bresch 72becdf407 ekf2: do not fuse ZVU if other velocity source is active 2022-11-15 13:11:06 -05:00
Matthias Grob 228def6081 mission_block: explicitly (re)set the acceptance radius to default for takeoff items
otherwise a previously adjusted or uninitialized radius from the last flight
can cause problems during the new takeoff
2022-11-11 14:48:45 +13:00
Matthias Grob 092562dc51 mission_block: minimal acceptance radius of 1mm
to avoid float rounding errors leading to tiny acceptance radii
getting considered
2022-11-11 14:48:45 +13:00
Daniel Agar 9fdf5ada40 boards: px4_fmu-v6x_default include systemcmds/gpio 2022-11-07 17:11:28 -05:00
Daniel Agar 872ac68daf vehicle_magnetometer: fix standalone mag bias est factored into in flight mag cal
- preflight mag bias estimate is in the vehicle body frame and removed from the raw mag data after it's rotated, calibrated, etc
 - in flight mag bias (from ekf2) is in the vehicle body frame, but stored as a sensor frame offset immediately
2022-11-07 09:31:49 -05:00
David Sidrane b46c608f6e px4_fmu-v6:Add Revision 1 to manifest to note I2C4 is only internal 2022-11-03 07:32:40 +13:00
Julian Oes 37cf8024c3 Holybro PX4Vision: Don't use IO 2022-11-03 07:32:25 +13:00
Silvan Fuhrer 65d22120b2 Navigator: initialize _mission_item for all navigation modes in Navigator::Navigator()
This fixes the issue where the init happended in the initializer list, at which point
the params were not yet initialized and thus resulted in random values for the init
values of _mission_item.loiter_radius and .acceptance_radius.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-10-27 13:20:29 +02:00
Thomas Stastny dc7f29e2ec welford mean: protect against negative variances 2022-10-05 10:29:03 -04:00
Thomas Stastny fbef296890 welford mean: convert to matrix only template 2022-10-05 10:29:03 -04:00
Daniel Agar 6ce38b8296 vehicle_imu: only reset raw accel/gyro Welford mean periodically
- vehicle_imu_status can publish immediately on any measured sample
rate change or sensor error increment, but the windowed mean/variance
shouldn't necessarily reset that often
2022-10-05 10:29:03 -04:00
Julian Oes e3d730ea37 ms5611: ignore reading 0
This prevents publishing a negative pressure which leads to a NAN
altitude estimate further down the line.
2022-10-04 09:42:16 -04:00
alexklimaj d22d33e936 Fix ARKV6X control allocator with base boards 2022-09-29 14:24:20 -04:00
bresch 1ea4fe9b7b Mag: fix estimated bias save to calibration
Clear the calibration at the end only otherwise everything gets erased
at the end of the first iteration of the outer loop
2022-09-28 10:03:35 -04:00
Julian Oes 2e7df77bff uavcan: fix RTCM corrections publication
Before this fix, this function would stall and somehow never return.
2022-09-27 22:01:48 -04:00
Julian Oes 241abb933a libuavcan: update submodule
This fixes a Python 3.10 issue for me.
2022-09-27 21:55:08 -04:00
Julian Oes 02c281c3e8 fmu-v5x: support for mini base board
This was forgotton with all the merges and shuffling previously.
2022-09-27 05:45:22 +13:00
Julian Oes 280f2e3abc fmu-v3: make optional sensor startup quiet
This fixes the errors showing up at startup for me with a Black Cube.
2022-09-27 05:45:22 +13:00
Julian Oes 22f338b58c fmu-v6x: alias, add VX43
- alias from hw_mft_list_v0650 to hw_mft_list_v0600 as it is the same
- add V6X50 again
2022-09-27 05:45:22 +13:00
Julian Oes 5b60985494 fmu-v5x: alias for duplicates, remove commented
- Removed commented out config data.
- hw_mft_list_v0540 was the same as hw_mft_list_v0500
2022-09-27 05:45:22 +13:00
Julian Oes 51607928c0 fmu-v6: disable Rev 0, Rev 1 for HB Mini, and CM4
As I understand it, only Rev 3 and Rev 4 were shipped by HB for Mini and
CM4, and are likely to be used for it.

It would be nice to have all combinations but it requires quite some
flash in the current implementation.
2022-09-27 05:45:22 +13:00
Julian Oes 426d13a82e fmu-v5x: disable rev0 for HB Mini and CM4 base
As I understand it, only Rev 1 and Rev 2 were shipped by HB, and likely
to be used for the Mini and CM4.
2022-09-27 05:45:22 +13:00
Julian Oes 90c0d77c7b platforms: decrease flash usage by type for bus id
My assumption is that the bus are numbered < 127.
This saves about 100 bytes of flash.
2022-09-27 05:45:22 +13:00
vincentpoont2 fdc7ee3674 update fmu-v6x rc.board_sensors, add V6X004003 2022-09-27 05:45:22 +13:00
vincentpoont2 eef7b35747 update fmuv5x rc.board_sensors with V5X004000 2022-09-27 05:45:22 +13:00
Vincent Poon 65b1370ad1 update v5x rc.board_sensors
add V5X004002
2022-09-27 05:45:22 +13:00
Vincentpoont2 0e0324de5d Correct BOARD_NUM_SPI_CFG_HW_VERSIONS at board_config.h 2022-09-27 05:45:22 +13:00
Vincentpoont2 73e6660411 Fix Error on manifest.c 2022-09-27 05:45:22 +13:00
Vincentpoont2 7ff373fee2 Fix Error on board_config.h Define on FMUv5X & FMUv6X 2022-09-27 05:45:22 +13:00
Vincentpoont2 f4a5c71ccd Add Holybro Pixhawk Pi CM4 Baseboard Support 2022-09-27 05:45:22 +13:00
Julian Oes 3ccde2f4db cuav_x7pro: save flash on test target 2022-09-23 20:55:41 +12:00
Julian Oes dbf1f31bec boards/platform: remove confusing override
This removes the odd px4_i2c_bus_external override which was confusing
me and lead to odd and inconsistent results.

The function is now only available with an int as the argument.
2022-09-23 20:55:41 +12:00
alexklimaj 61d2b13e43 Add BMP390 to BMP388 driver 2022-09-20 20:34:23 -04:00
Julian Oes 8cfc4fc7ca boards: save some flash on CubeOrange test config 2022-09-20 18:56:04 -04:00
vincentpoont2 ebc67464c3 Add PX4 vision v1.5 Airframe 2022-09-20 18:56:04 -04:00
Daniel Agar a5a9b1011a [DO NOT MERGE] px4_i2c_device_external hacks 2022-09-20 18:54:28 -04:00
Julian Oes 1ad71eefa1 px4_fmu-v6c: Move I2C 4 back to External
This is a revert of the revert.
This reverts commit 1080855f4d.
2022-09-20 18:54:28 -04:00
Julian Oes 7786bf6dbc fmu-v6c: internal baro and mag on external bus
This swaps the internal baro and mag back to the bus which is both
internal an external but configured as external for this case.
2022-09-20 18:54:28 -04:00
Alex Klimaj af0d53cdc9 boards: V1.13.0 ARKV6X Backport (#20253) 2022-09-20 18:53:48 -04:00
RomanBapst 79367ed417 standard: fixed pusher assist in hover
- in hover mode the pusher assist is already set in update_mc_state()

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-09-15 13:07:27 -04:00
David Sidrane 417c973cc9 px4_fmu-v6x:HB Mini add Ver 3, Ver 4 init 2022-09-09 15:43:10 +12:00
Daniel Agar 26f912eb8a icm42670p run at full speed 2022-09-06 16:23:14 +12:00
Daniel Agar e7d18960a5 drivers/imu/invensense/icm42670p: cleanup and small fixes 2022-09-06 16:23:14 +12:00
Daniel Agar 8a54b21e7d adis16470: fix accel and gyro scaling 2022-08-17 11:40:30 -04:00
RomanBapst baab4501f6 gps_inject_data: fixed integer overflow
- array length of data was increased without changing the data type of
the variable holding the length

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-07-13 11:20:35 -04:00
bresch b30c2c22b3 ekf2: do not run rng kinematic consistency check for fixed-wings
As they are always moving horizontally, the check doesn't make sense
for fixed-wings.
Also don't run the check while on ground to prevent getting a failed
check during pre-takeoff manipulation.
2022-07-12 13:54:30 -04:00
Daniel Agar cc7e709597 uavcan: GNSS optionally publish RTCMStream or MovingBaselineData 2022-07-12 13:54:21 -04:00
Daniel Agar 416610afc3 differential_pressure/sdp3x: sdp3x_main fix 'keep running' regression 2022-07-12 13:54:11 -04:00
David Sidrane 841797da2a px4_fmu-v6X:Added Holybro mini base board 2022-07-01 15:33:08 -04:00
David Sidrane 55706108b6 uc_stm32h7_can:Correct initalization of the mumber of interfaces
H7 Only supports 2 not 3 CAN interfaces.

   CanInitHelper passes in in the run time configuration of
   the number of interfaces. The code was ignoring these!
2022-07-01 15:32:53 -04:00
David Sidrane e1f86f510b px4_fmu-v5X:Added Holybro mini base board 2022-07-01 15:32:44 -04:00
David Sidrane 17ef175402 px4_fmu-v6x:Add Rev 4 Sensors 2022-07-01 15:32:09 -04:00
Alex Klimaj f9980e0721 uavcannode: Fix dronecan baro units 2022-06-17 14:44:32 -04:00
Daniel Agar 6823cbc414 sensors/vehicle_angular_velocity: add IMU_GYRO_RATEMAX constraints 2022-06-07 16:23:01 -04:00
Daniel Agar beaebe4d0b sensors/vehicle_imu: don't bother checking IMU_GYRO_RATEMAX 2022-06-07 16:22:54 -04:00
Daniel Agar 0bddca6b9b boards: NuttX update all boards to preallocated sem holder list
- CONFIG_SEM_PREALLOCHOLDERS=32
 - CONFIG_SEM_NNESTPRIO=16 (default)
2022-05-29 13:49:01 -04:00
Daniel Agar c50c1e3982 update NuttX and apps to latest with sem holder fixes and updated ostest 2022-05-29 13:48:15 -04:00
Daniel Agar a249b77647 boards: reduce SPI DMA buffers on older STM32F4 boards
- on common IMUs like the mpu6000, mpu9250, icm20602, etc each FIFO
sample is only 12 bytes so this is still more than large enough for the
worst case transfer
2022-05-27 16:28:26 -04:00
Daniel Agar 17de164e95 boards: pixhawk 2 cube skip starting low quality l3gd20 gyro to save memory and cpu
- free memory is getting tight on these older boards (depending on
configuratoin) and the pixhawk 2 cube still has 2 other superior IMUs, so this is just
dropping dead weight
2022-05-27 16:28:22 -04:00
David Sidrane a057b38c40 Update all H7 Bootloders 2022-05-27 14:52:00 -04:00
David Sidrane 39e53711d5 flash_cache:Flush complete cache line 2022-05-27 14:44:54 -04:00
David Sidrane 1294851bb6 boards: STM32H7 pad to 256 bit - 32 bytes (#19724) 2022-05-27 14:44:51 -04:00
David Sidrane 1c15a1a7f4 px4_fmu-v6c:Fix mag rotation 2022-05-27 14:43:47 -04:00
David Sidrane 21567ca187 boards: new px4_fmu-v6c board support (#19544) 2022-05-27 14:42:55 -04:00
bresch 8e789bcc7f ekf2_post-processing: use estimator_status_flags instead of bitmasks 2022-05-24 10:30:52 -04:00
Julian Oes d699d5f27e sitl_gazebo: update submodule
This fixes the issue where HITL doesn't connect over USB.
2022-05-24 09:43:05 -04:00
Julian Oes 4ae97c505f commander: lockdown is not termination
We use lockdown to prevent outputs like motors and servos from being
active in HITL simulation. This means that we can't treat the lockdown
flag as a flight_terminated, otherwise we can't arm in HITL at all.
2022-05-24 09:42:38 -04:00
Daniel Agar b8ce2a6039 icm42688p: only check configured registers periodically (as intended) 2022-05-23 14:58:37 -04:00
bresch 1f399e5b33 ekf2: use explicit flags instead of bitmask position
This prevents bitmask mismatch when a new flag is inserted
2022-05-23 14:57:17 -04:00
Serhat Aksun d67cddae7d sensors/vehicle_magnetometer: fix multi_mode check
Signed-off-by: Serhat Aksun <serhat.aksun@maxwell-innovations.com>
2022-05-23 10:10:22 -04:00
Julian Oes 0290282b17 ROMFS: disable UAVCAN in HITL
Without this, uavcan creates MixingOutput classes which then create
empty actuator_outputs publications. This then prevents the motor
output in HITL to be forwarded to the simulator via mavlink.
2022-05-22 10:27:07 -04:00
Nicolas MARTIN 39d1c79f48 HITL: undefined time_remaining_s should be NAN 2022-05-20 09:40:28 -04:00
Nico van Duijn ad410a2512 Commander: ignore MAV_CMD_REQUEST_MSG
This commit adds the MAV_CMD_REQUEST_MESSAGE to the list of vehicle
commands which are ignored without generating a warning sound.
2022-05-20 09:40:22 -04:00
Daniel Agar 453acdce31 .vscode/.gitignore ignore all log files 2022-05-20 09:40:07 -04:00
Beat Küng afb2538da3 output drivers: init SmartLock after exit_and_cleanup
This fixes an invalid memory access when exiting the module:
exit_and_cleanup destroys the object, but lock_guard is destructed after
and accesses the lock.
2022-05-12 08:17:15 -04:00
alexklimaj af58c412c3 Fix uavcan battery causing immediate RTL time remaining low 2022-05-11 21:49:13 -04:00
Daniel Agar d5226b28ce drivers/rc_input: ensure RC inversion is disabled initially and latch RC_INPUT_PROTO conservatively
- this allows jumping straight to a non-SBUS RC protocol
 - increased the scan time per protocol 300->500 ms, which the newer DSM parser seems to need in some cases.
 - only set RC_INPUT_PROTO if we've had a successful RC lock for > 3 seconds
2022-05-11 14:31:51 -04:00
Beat Küng b091ea9fd9 log_writer_file: fix corner case when mission log is enabled
Normally _should_run for mission is only ever true if _should_run for the
normal log is. There are exceptions though:
- the log buffer fails to allocate
- there was a write failure (e.g. due to SD card removal)
In that situation, the writer would not wait anymore but busy-loop.
2022-05-11 10:07:46 -04:00
Beat Küng 9e91ca8294 log_writer_file: protect access to _should_run, use px4::atomicbool for _exit_thread 2022-05-11 10:07:46 -04:00
Igor Mišić 8302f076e7 uavcan: use timer 6 by default on stm32f7 2022-05-10 12:43:26 -04:00
Thomas Stastny de26ffa6e0 fw pos ctrl: turn back to takeoff point with npfg 2022-05-06 13:08:07 -04:00
Thomas Stastny f60d38db65 fw pos ctrl: add missing guidance control interval setting to control_manual_position() 2022-05-06 13:08:07 -04:00
Thomas Stastny 5e3c8d2fa0 fw pos ctrl: fix state switching logic for takeoff and landing 2022-05-06 13:08:07 -04:00
Matthias Grob 90998837ec Commander: ensure diconnected battery is cleared from bit field 2022-05-06 10:46:40 -04:00
Beat Küng 8cff9a1e04 commander: fix incorrect return in set_link_loss_nav_state()
If both local position and altitude were not valid, then both RC loss and
datalink loss would not trigger any failsafe at all, independently from
the configured action.
2022-05-06 10:15:30 -04:00
bresch f8ff34f82d ekf2: optimize KHP computation
Calculating K(HP) takes less operations than (KH)P because K and H are
vectors.

Without considering the sparsity optimization:
- KH (24*24 operations) is then a 24x24 matrix an it takes
24^3 operations to multiply it with P. Total: 14400 op

- HP (24*(24+24-1) operations) is a row vector
and it takes 24 operations to left-multiply it by K. Total:1152 op
2022-05-06 10:15:26 -04:00
Beat Küng e69d9ec48f dshot: avoid using pwm failsafe params when dynamic mixing is enabled 2022-05-02 11:43:51 +02:00
Beat Küng f033e164fe fix dshot: remove setAllFailsafeValues
Fixes a regression from c1e5e666f0,
where with static mixers the dshot outputs would go to max instead of 0
in a failsafe case.
2022-04-28 13:29:40 -04:00
Daniel Agar 41191765ad drivers/rc_input: RC_INPUT_PROTO parameter minimal implementation (#19539)
Co-authored-by: chris1seto <chris12892@gmail.com>

Co-authored-by: chris1seto <chris12892@gmail.com>
2022-04-28 13:27:15 -04:00
Daniel Agar fc7e979d84 boards: px4_fmu-v5_uavcanv0periph disable modules to save flash 2022-04-26 08:39:19 -04:00
Daniel Agar 7ab9b0c6e2 boards: cubepilot_cubeorange_test disable examples/fake_gps to save flash 2022-04-26 08:39:19 -04:00
Daniel Agar f390f52058 drivers/differential_pressure: remove lib/drivers/airspeed dependency and cleanup
- split ms4525_airspeed into separate ms4515 and ms4525 drivers
2022-04-26 08:39:19 -04:00
Daniel Agar d1d15a6f6d differential pressure remove filters from drivers and average in sensors/airspeed 2022-04-26 08:39:19 -04:00
Daniel Agar 258f558fea apply differential pressure calibration (SENS_DPRES_OFF) centrally
- remove drv_airspeed.h and ioctls
2022-04-26 08:39:19 -04:00
JaeyoungLim c6ab4c466e Separate takeoff and landing to individual fixed wing states for FW pos control (#19495) 2022-04-26 10:24:36 +02:00
Daniel Agar d6210d1725 boards: px4_fmu-v6x_default disable common barometers to save flash 2022-04-26 01:43:10 -04:00
Daniel Agar 3d7a6b4021 mc_pos_control: silence invalid setpoint warning when disarmed 2022-04-26 01:37:37 -04:00
Daniel Agar b2bcd2631a boards/diatone/mamba-f405-mk2: disable modules to save flash 2022-04-26 01:08:18 -04:00
Daniel Agar c8d2d83e55 boards: px4_fmu-v2 restore systemcmds/ver needed for board init 2022-04-25 22:47:08 -04:00
Daniel Agar 7bb789cb23 boards: update bootloaders to latest 2022-04-25 22:39:25 -04:00
Daniel Agar d8a57e15b0 boards/mro/ctrl-zero-classic: fix code style 2022-04-25 22:07:32 -04:00
Daniel Agar 248f42f9ec boards/diatone/mamba-f405-mk2: fix code style 2022-04-25 22:07:21 -04:00
achim adacdad32d boards: add new Diatone Mamba F405 mk2 2022-04-25 21:53:58 -04:00
achim 1bf16cb4df boards: add new mRo Control Zero Classic 2022-04-25 21:52:38 -04:00
Daniel Agar 3d590af115 mc_att_control: only apply quat reset if estimate is newer than setpoint 2022-04-25 21:25:29 -04:00
Daniel Agar 23c89429ac systemcmds/param: set-default should mark parameter active to avoid race conditions 2022-04-25 21:24:18 -04:00
bresch e32a484906 [AUTO COMMIT] update change indication 2022-04-25 12:58:18 -04:00
bresch db0274e19b ekf: robustify bad_acc_vertical check
when the vertical pos or vel innov ratio is above the threshold, the
other one needs to be significant too and not just positive to trigger
the failure
2022-04-25 12:58:18 -04:00
Daniel Agar 980f696023 commander: mag calibration tolerate fit failure if sensor disabled 2022-04-25 12:41:20 -04:00
Daniel Agar 89374b2e1d mavlink: delete Mavlink instance if early startup fails 2022-04-25 12:38:28 -04:00
Alex Mikhalev 45dff7f71a commander: Add prearm check for flight termination 2022-04-25 11:57:37 -04:00
Daniel Agar 6359c8c008 mavlink: shell expand locking (#19308)
- on some H7 boards (cuav x7pro tested) there's an occasional hard fault when starting the mavlink shell that is no longer reproducible with the slightly expanded locking
 - this is likely just changing the timing (holding the sched lock for longer), but this should be harmless for now until we can identify the root cause
2022-04-25 11:53:22 -04:00
Junwoo Hwang af839c828d Set Tune's Volume for Power-Off in Commander to default volume of tune_control message 2022-04-25 11:47:43 -04:00
Daniel Agar 8df3932d6a icm20948: disable debug output (_debug_enabled=true) 2022-04-24 15:45:51 -04:00
Kirill Shilov 6981a70859 boards: new Sky-Drones AIRLink board support 2022-04-24 13:57:42 -04:00
Daniel Agar 503f97c8bc logger: add default ground truth logging for HITL/SITL 2022-04-24 12:45:23 -04:00
Silvan Fuhrer 680fe86c05 FlightTaskAuto: fix Weather Vane during landing
Weather vane should only set a yawrate setpoint, but no yaw setpoint.
Setting it to NAN when WV is active makes sure that whatever _yaw_setpoint
is set previously (e.g. through Waypoint) is not used.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-04-23 18:14:42 +02:00
Silvan Fuhrer ae5725e71a ROMFS: fix typo in convergence and clair configs
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-04-23 10:29:57 -04:00
Silvan Fuhrer bd1b0cab73 Mission: don't do anything in set_current_mission_index() when index=current already
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-04-22 22:32:06 -04:00
Daniel Agar 6f87a4546d platforms/nuttx: cdc_acm_check implement mavlink reboot directly 2022-04-22 21:16:07 -04:00
Daniel Agar 9073f3ccdf px4flow allow delayed background startup 2022-04-22 21:11:02 -04:00
mcsauder fef47513f5 Add gyro and accel range register values to the icm42688p driver. 2022-04-22 21:03:01 -04:00
Hamish Willee e1d3728208 13004_quad+_tailsitter - outputs mixed up 2022-04-22 07:34:05 +02:00
Daniel Agar 435a474dff Update submodule GPSDrivers to latest Thu Apr 21 12:38:20 UTC 2022
- GPSDrivers in PX4/Firmware (e9c07fac6f): https://github.com/PX4/PX4-GPSDrivers/commit/ddb1825fe33f517853ca8a3ef75ac6f2df76f613
    - GPSDrivers current upstream: https://github.com/PX4/PX4-GPSDrivers/commit/6534b050ee1a48af7932c46a9a87277eed1cc997
    - Changes: https://github.com/PX4/PX4-GPSDrivers/compare/ddb1825fe33f517853ca8a3ef75ac6f2df76f613...6534b050ee1a48af7932c46a9a87277eed1cc997

    6534b05 2022-04-19 Jonas Perolini - ubx: disable gps heading for in RTK float fix type (#104)

Co-authored-by: PX4 BuildBot <bot@px4.io>
2022-04-21 11:41:24 -04:00
bresch e9c07fac6f EKF: move python tuning tools to EKF module 2022-04-21 13:39:26 +02:00
bresch 49bc5082e7 Tools: add baro pressure coefficient tuning script 2022-04-21 13:39:26 +02:00
bresch ea7009546b mc wind: rename MC wind estimor tuning script 2022-04-21 13:39:26 +02:00
Julian Oes 37fa4bccb6 mavsdk_tests: update MAVSDK dependency
This should fix the CI issue where the test just hangs trying to
connect.
2022-04-20 11:48:53 -04:00
bresch 3c6b72c33b commander: improve set_in_air_position
- set local home using global pos and global home
- set local home using GNSS pos and global home
- set global home using global ref of local frame and local home
2022-04-19 15:29:25 +02:00
bresch e9a2b3f260 geofence: remove unused function parameters 2022-04-19 15:29:25 +02:00
bresch 3f3a4ac5c1 navigator: home_positionvalid -> global_home_position_valid
This is to make clear that the relevant part of the home position
message for navigator is the global one. Local home position isn't
required as everything is done in global coordinates.
The specific home_alt_valid is used when lat/lon are not used
2022-04-19 15:29:25 +02:00
bresch d2f2ba59a4 commander: refactor home position setter
- always try to set local or global home position when possible
- set global home with GNSS position if global pos from EKF isn't
  available
- reset home when significantly moved from home before takeoff (checking
  lpos or gpos or GNSS)
- reset home on takeoff transition
- reset home on mavlink arm command
- remove "home required accuracy" parameters, rely on validity flags
2022-04-19 15:29:25 +02:00
RomanBapst a7683eea07 mission_block: fix vehicle not exiting loiter after reaching exit heading
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-04-19 13:32:18 +02:00
Thomas Stastny d5a6174e7f mission block: fix incorrectly calculated ccw loiter exit (#19487)
* mission block: fix incorrectly calculated ccw loiter exit

* mission block: update comment on orbit exit location
2022-04-19 13:30:11 +02:00
Daniel Agar 5e05d98fe2 output modules simplify locking for mixer reset and load
- fixes the deadlock in px4io ioctl mixer reset
   - px4io Run() locks (CDev semaphore)
   - mixer load goes through px4io ioctl MIXERIOCRESET which calls MixingOutput::resetMixerThreadSafe()
   - MixingOutput::resetMixerThreadSafe() stores a Command::Type::resetMixer command in an atomic variable, schedules a work queue cycle, then sleep spins until the command is cleared
   - the execution of the cycle eventually calls back into PX4IO::updateOutputs(), which tries to lock (and waits forever)
2022-04-19 08:52:17 +02:00
bazooka joe 5d95cc001f small cleanup for FlightTask::_evaluateDistanceToGround if-else 2022-04-18 20:47:41 -04:00
Daniel Agar 2e290345d3 boards: px4_fmu-v5_stackcheck disable unused systemcmds to save flash 2022-04-18 10:01:29 -04:00
Daniel Agar 90e2cab3fa boards: px4_fmu-v5/v5x run default & rtps boards through kconfiglib to cleanup 2022-04-18 09:58:36 -04:00
Daniel Agar 3cdeeb8d64 px4iofirmware: convert most files to c++ 2022-04-17 20:44:30 -04:00
Daniel Agar 3211d0ff19 boards: px4_fmu-v2_multicopter disable lightware_laser_serial to save flash 2022-04-17 18:59:56 -04:00
Daniel Agar d06032d7f3 boards: px4_fmu-v5_uacanv0periph disable systecmds/sd_bench to save flash 2022-04-17 16:04:01 -04:00
stmoon e7562df13a boards: px4_fmu_v5x_rtps disable several modules to save flash 2022-04-17 13:36:24 -04:00
Daniel Agar cbc37f9fcd boards: px4_fmu-v6x_default disable systemcmds/sd_bench to save flash 2022-04-14 20:07:28 -04:00
alexklimaj 6e0ac66c3c drivers/optical_flow: new PixArt PAA3905 optical flow driver 2022-04-14 16:47:53 -04:00
Beat Küng 9a9aad98a1 mavlink: add COMPONENT_METADATA message
And still support the previous message COMPONENT_INFORMATION for now.
2022-04-14 09:55:06 -04:00
Igor Misic cdfa65d792 commander/safety: set early safety_button_available 2022-04-14 08:03:37 +02:00
Thomas Debrunner f6bdc42977 param-reset: Add option to reset all configurable params, but not the ones that store vehicle information 2022-04-14 07:57:48 +02:00
Daniel Agar 3f13c70cae px4io cleanup LED and heater handling
- most px4_io-v2 boards have a blue LED that breathes for status
 - the pixhawk 2.1 (hex) re-used this blue LED for as an IMU heater (active low), but kept the same board id (so we have to detect at runtime)
 - the new cubepilot boards (yellow, orange) inverted the polarity of this heater pin
 - untangle the mess slightly so that things we know statically (eg cubepilot cubeorange LEDs and heater polarity) are handled at build time.
2022-04-13 18:43:59 -04:00
Alessandro Simovic 510ad00024 dronecan beeper: remove unneded var 2022-04-13 18:06:58 -04:00
chris1seto 912962f109 lib/rc: Fix DSM2/DSMX guessing routine and DSM range checking (#18270)
* Add Orangerx test case

Co-authored-by: Chris Seto <chris.seto@bossanova.com>
2022-04-13 17:29:08 -04:00
PX4 BuildBot 93268a285d Update submodule mavlink to latest Wed Apr 13 12:39:05 UTC 2022
- mavlink in PX4/Firmware (16fd85d9b9133f21a79a5c1bccbf4756f4b3c781): https://github.com/mavlink/mavlink/commit/56a5110d38b77c8477b0a1d6ee909607a588f98d
    - mavlink current upstream: https://github.com/mavlink/mavlink/commit/3b52eac09c2e37325e4bc49cd2667ea37bf1d7d2
    - Changes: https://github.com/mavlink/mavlink/compare/56a5110d38b77c8477b0a1d6ee909607a588f98d...3b52eac09c2e37325e4bc49cd2667ea37bf1d7d2

    3b52eac0 2022-04-13 Beat Küng - add COMPONENT_METADATA, deprecate COMPONENT_INFORMATION (#1823)
2022-04-13 14:09:03 -04:00
Daniel Agar 9c381a60b5 Tools/ecl_ekf: fix vibe_metrics usage (moved to vehicle_imu_status instances) 2022-04-13 10:36:45 -04:00
Daniel Agar b4158c1b48 sensors/vehicle_imu: Integrator use 1 microsecond for minimum DT
- this is a more realistic minimum for the system
2022-04-13 10:36:45 -04:00
Daniel Agar d2f1349d1a sensors/vehicle_imu: replace coning metric with actual integrator coning correction (averaged)
- this saves a relatively expensive higih rate cross product and gives
better visibility into what's actually happening internally
2022-04-13 10:36:45 -04:00
bresch 37cafe7dcd ekf rng kin: reduce minimum rng variance 2022-04-13 11:41:48 +02:00
bresch 4994649500 ekf rng kin: increase default gate size
The user needs to tune the range finder noise parameters properly and we
shouldn't need such a small gate
2022-04-13 11:41:48 +02:00
bresch 1fbe04986f ekf rng finder consistency: simplify class member names 2022-04-13 11:41:48 +02:00
bresch 4c03f0bc50 ekf: make range finder kin consistency gate tunable by parameter 2022-04-13 11:41:48 +02:00
bresch 079a5e92ba ekf: run rng consistency check only when not horizontally moving
The check assumes a non-moving terrain height
2022-04-13 11:41:48 +02:00
bresch d903613c9c ekf: add logging for rng kinematic consistency check 2022-04-13 11:41:48 +02:00
bresch 8693ad15a7 ekf: add logging of range finder consistency check 2022-04-13 11:41:48 +02:00
bresch baf9cc9597 ekf: use uint64_t for time variables 2022-04-13 11:41:48 +02:00
bresch 9fc331b7ea ekf: requires kinematically consistent range finder data to continue terrain aiding 2022-04-13 11:41:48 +02:00
bresch 78211f9dbb ekf: improve rng consistency check
To pass from invalid to valid:
- time hysteresis
- some vertical velocity
- test ratio < 1
- low-passed signed test ratio < 1

To pass from valid to invalid:
- low-passed signed test ratio >= 1
2022-04-13 11:41:48 +02:00
bresch b1ea2e4e15 ekf: use same gate for innov and innov sequence monitoring 2022-04-13 11:41:48 +02:00
bresch f96287b80a ekf: access member variable without getter 2022-04-13 11:41:48 +02:00
bresch 904bf8ef9f ekf: add range finder kinematic consistency check
At each new valid range measurement, the time derivative of the distance
to the ground is computed and compared with the estimated velocity.
The average of a normalized innovation squared statistic check is used
to detect a bias in the derivative of distance measurement,
indicating that the distance measurements are kinematically inconsistent
with the filter.
2022-04-13 11:41:48 +02:00
bresch 064518f57a ekf: extract range finder noise computation 2022-04-13 11:41:48 +02:00
Matthias Grob 97b2947416 FlightTaskAuto: refactor _commanded_speed_ts -> _time_last_cruise_speed_override 2022-04-13 12:23:27 +03:00
Matthias Grob 68cf686892 FlightTask: rename and move setCruisingSpeed() -> overrideCruiseSpeed() 2022-04-13 12:23:27 +03:00
Matthias Grob f892a624b7 FlightModeManager/FixedwingPositionControl: robustify vehicle command parameter casting 2022-04-13 12:23:27 +03:00
Matthias Grob 6ce3e88f9d vehicle_command: specify what SPEED_TYPEs are for 2022-04-13 12:23:27 +03:00
RomanBapst 3ed929c7b6 addressed review comments
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-04-13 12:23:27 +03:00
RomanBapst b335710655 vehicle_command: added enum for speed types
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-04-13 12:23:27 +03:00
RomanBapst d41de33a85 FlightModeManager: handle MAV_CMD_DO_CHANGE_SPEED
- support setting the cruise speed of the auto flight task via command

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-04-13 12:23:27 +03:00
RomanBapst ca657f36ef FixedWingPositionControl: handle VEHICLE_CMD_DO_CHANGE_SPEED
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-04-13 12:23:27 +03:00
RomanBapst 36e32ecd7b navigator: stop handling speed changes via reposition triplet
- the mc and fw controllers are handling the speed changes directly

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-04-13 12:23:27 +03:00
Junwoo Hwang 35613df210 uORB : Don't automatically include message name as default topic name in uORBTopics source files, to handle case where user doesn't use default messgae name for multi topic definition in .msg file 2022-04-13 09:08:51 +02:00
alexklimaj 4fc161192a Add ARK CANnode board config 2022-04-12 21:23:18 -04:00
Daniel Agar 0a0987a6e0 ROMFS: move px4flow start to rc.sensors 2022-04-12 21:22:41 -04:00
Daniel Agar 1d66f2cf83 posix: HRT hrt_lock() sem_wait try again if error returned 2022-04-12 12:46:29 -04:00
Matthias Grob 10f927ae2b MulticopterPositionControl: remove unused return value parameters_update() 2022-04-12 10:13:11 -04:00
Daniel Agar c30475b04b Update submodule GPSDrivers to latest Tue Apr 12 12:38:56 UTC 2022
- GPSDrivers in PX4/Firmware (c04e66a890c75f57f5588d669eec45c8da8c3ed5): https://github.com/PX4/PX4-GPSDrivers/commit/ad1094aaf16fcc650b270431a1d0bdcf38e8d89a
    - GPSDrivers current upstream: https://github.com/PX4/PX4-GPSDrivers/commit/ddb1825fe33f517853ca8a3ef75ac6f2df76f613
    - Changes: https://github.com/PX4/PX4-GPSDrivers/compare/ad1094aaf16fcc650b270431a1d0bdcf38e8d89a...ddb1825fe33f517853ca8a3ef75ac6f2df76f613

    ddb1825 2022-03-29 Daniel Agar - ubx: print relevent UBX-MON-VER output

Co-authored-by: PX4 BuildBot <bot@px4.io>
2022-04-12 10:12:46 -04:00
PX4 BuildBot 5e6fb9b537 Update submodule sitl_gazebo to latest Tue Apr 12 12:38:53 UTC 2022
- sitl_gazebo in PX4/Firmware (bb2ea574aa): https://github.com/PX4/PX4-SITL_gazebo/commit/25138e803ee8525ee5fe4e6d511506e88e3f819c
    - sitl_gazebo current upstream: https://github.com/PX4/PX4-SITL_gazebo/commit/2cf56d0bf8a9119cadc1a44d20d641ab24a6a42d
    - Changes: https://github.com/PX4/PX4-SITL_gazebo/compare/25138e803ee8525ee5fe4e6d511506e88e3f819c...2cf56d0bf8a9119cadc1a44d20d641ab24a6a42d

    2cf56d0 2022-03-23 Julian Oes - Revert "models: Add model for standard_vtol_ctrlalloc"
b3ab8de 2022-03-18 JamesAnawati - Update cloudship.sdf.jinja
2022-04-12 10:12:12 -04:00
Daniel Agar 8166a500ac Update world_magnetic_model to latest Mon Apr 11 11:14:11 UTC 2022 (#19475) 2022-04-12 10:11:51 -04:00
Daniel Agar bb2ea574aa ekf2: properly reset IMU biases on calibration change (non-multi-EKF)
- this was working in the multi-EKF case using vehicle_imu, but missing
in sensor_combined
2022-04-11 12:23:55 -04:00
Daniel Agar 8f891332f1 boards: px4_fmu-v2_multicopter disable load_mon to save flash 2022-04-11 12:23:35 -04:00
bresch 76a59d5c66 Tools: add drag fusion tuning script 2022-04-11 09:56:01 -04:00
Daniel Agar 04f37222f8 ekf2: fix IMU missed perf count when not using multi-EKF 2022-04-10 11:07:33 -04:00
PX4 BuildBot f2c5d70d3a Update submodule mavlink to latest Sun Apr 10 12:39:00 UTC 2022
- mavlink in PX4/Firmware (a1530591764f0c694560e4bb6ae41c15d3e35c9b): https://github.com/mavlink/mavlink/commit/0133e5db7fd640dcf250f3ba7817d6f0f7bb7589
    - mavlink current upstream: https://github.com/mavlink/mavlink/commit/56a5110d38b77c8477b0a1d6ee909607a588f98d
    - Changes: https://github.com/mavlink/mavlink/compare/0133e5db7fd640dcf250f3ba7817d6f0f7bb7589...56a5110d38b77c8477b0a1d6ee909607a588f98d

    56a5110d 2022-04-09 Tom Pittenger - Add radius to DO_REPOSITION (#1825)
3b5959bd 2022-04-07 Thomas Debrunner - Option to not reset non-configurable params in preflight storage (#1826)
2022-04-10 10:21:14 -04:00
Silvan Fuhrer 6096620828 ROMFS: remove duplicate setting of NAV_LOITER_RAD to 80
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-04-09 14:31:17 -04:00
Silvan Fuhrer c7023e5879 Increase NAV_LOITER_RAD and RTL_LOITER_RAD to 80m each
For many VTOLs/fixed-wing drones a 50m loiter radius is too tight, and
going to 80m is a better and safer default.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-04-09 14:31:17 -04:00
Nicolas MARTIN eb1bb4335b commander: fix enable_failsafe reason (#19391)
- In this case, no action is configured for datalink lost. Action is configured for RC lost.
 - In case of no data link and no rc failsafe is enabled but reporting a "no_datalink" reason but "no_rc_and_no_datalink" seems more explicit.
2022-04-09 14:30:49 -04:00
Daniel Agar 091fca701e px4io: input_rc only publish new successful decodes
- previously an invalid decode would continue to be transferred to the FMU (at 50 Hz) and published to the rest of the system as successfully decoded new RC data
 - by only publishing new successful decodes we can more effectively discard invalid data in downstream consumers
2022-04-09 14:28:16 -04:00
alexklimaj 017f860f44 Add I2C retries in INA226 to prevent publishing 0's on a single read failure 2022-04-09 14:23:52 -04:00
Ryan Johnston 777540bd02 boards/matek/gnss-m9n-f4: RM3100 orientation fix
- the RM3100 needs to be pitched 180º for correction orientation on this board.
2022-04-09 14:22:21 -04:00
Ryan Johnston c585758f67 boards/matek/gnss-m9n-f4: IMU orientation update
- the icm20602 needs to be rolled 180º and yaw 90º for this board.
2022-04-09 14:21:45 -04:00
Jacob Dahl 3bffe3087d use new safety_button topic for uavcannode Button publishing 2022-04-09 14:20:18 -04:00
Matthias Grob fe26ee244d modeCheck: allow arming in land mode for MAVSDK compatibility
ideally we can remove it again when the workflow is changed to
first changing mode then arming.
2022-04-08 09:56:47 +02:00
Ramon Roche 889a5aa0b1 ci: build and deploy kakuteh7 2022-04-07 19:09:19 -04:00
Daniel Agar 77a37c26bf rc_update: further tighten timing requirements for valid data
- any real RC data input will be much faster than 3 Hz, so this is an
easy way to minimize bogus decoded data from propagating
2022-04-07 14:42:05 -04:00
Daniel Agar 98623f69a3 update mavlink submodule to latest
- update MAV_TYPE VTOL usage for current mavlink
2022-04-07 20:35:41 +02:00
Julian Oes a5bd65b923 mavlink: set correct param capability
PX4 supports int32 parameter types by interpreting the 32 bits in
the float field as an int32 field. To signal this behaviour, it should
set the bit which is described as PARAM_ENCODE_BYTEWISE.

PX4 had always handled parameters this way but never actually sent the
capability (which back then was called PARAM_UNION), however, it should
have. This came up recently in the MAVLink devcall when these flags were
discussed. The takeaway was to remove the flags to make it clearer and
to make sure the projects (like PX4) send them out correctly.
2022-04-07 20:35:41 +02:00
Matthias Grob 92adc71424 ArmStateMachine: port over unit tests to functional gtests 2022-04-06 10:02:14 +02:00
Matthias Grob f968a5947d ArmStateMachine: port arming_state_names into the class 2022-04-06 10:02:14 +02:00
Matthias Grob 074080c816 Commander: separate out arm state machine to class
Pure refactoring and just the first step to avoid conflicts on the way.
2022-04-06 10:02:14 +02:00
Daniel Agar 6e9c673262 boards: omnibus_f4sd_ekf2 disable frsky telemetry to save flash (and fix build)
- this isn't great, but our options are limited at the moment and this
can be fixed later once the old mixing system is deleted
2022-04-05 11:10:33 -04:00
Thomas Stastny e4b11c49c3 mathlib: add second order reference model filter with optional rate feedback (#19246)
mathlib: add second order reference model filter with optional rate feedback (#19246)

Reference models can be used as filters which exhibit a particular, chosen (reference) dynamic behavior. This PR implements a simple second order transfer function which can be used as such a reference model, additionally with rate feedback. The system is parameterized by explicitly set natural frequency and damping ratio. Another nice externality is that the output state and rate are kinematically consistent. Forward-euler and bilinear transform discretizations for the state space integration step are available.
2022-04-05 10:31:41 +02:00
Igor Misic 80aef942cd safety and safety button: refactoring #19413 2022-04-05 07:57:37 +02:00
Jacob Dahl 1f17a1470a uavcan: update safety button
updated uavcannode/Publishers/SafetyButton.hpp
tested successfully
make format
revert cannode publishing
2022-04-05 07:57:37 +02:00
Daniel Agar 8c3ba7adb4 commander: silence GPS no longer validity PX4_WARN 2022-04-04 14:43:11 -04:00
Alessandro Simovic 47b08fd698 precland: save flash space 2022-04-04 17:26:52 +02:00
Hovergames 457130fb69 Support for NXP UWB position sensor
uwb_sr150 driver for the sensor, and some
modifications in precision landing to allow
landing on a platform using the UWB system.
2022-04-04 17:26:52 +02:00
Beat Küng 3381a5914d holybro/kakuteh7: fix BOARD_FLASH_SIZE
The BL was reporting a flash size of 1703936, whereas it should be 1835008.
2022-04-04 10:44:11 -04:00
Matthias Grob dd28c3e019 battery: update average current also when no capacity is configured 2022-04-04 10:02:55 +02:00
Matthias Grob 13c3eae6d0 battery: use mechanism to keep an up to date armed state 2022-04-04 10:02:55 +02:00
Silvan Fuhrer 3f6ab5ea19 battery: improve flight time remaining improvements
- introduce BAT_AVRG_CURRENT param that is used for init of average current estimate
- increase filtering of average current estimation
- only update average current filter when armed

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-04-04 10:02:55 +02:00
Beat Küng 6652718354 metadata.cmake: enable ethernet parameters 2022-04-04 09:54:47 +02:00
alessandro 8af0eeae46 1011_iris_irlock: require precland (#19431) 2022-04-04 08:27:31 +02:00
stmoon 179820cead boards: px4_fmu_v5x_rtps disable common telemetry modules to save flash 2022-04-02 11:46:37 -04:00
Daniel Agar 803cc6814f boards: px4_fmu-v2_fixedwing disable drivers/camera_trigger to save flash 2022-04-01 11:08:03 -04:00
Daniel Agar f0be554857 boards: px4_fmu-v5_uavcanv0periph disable modules to save flash 2022-03-31 09:59:58 -04:00
Matthias Grob 3aee2497bb commander_params: add precision land option for mode switch 2022-03-30 18:11:44 +02:00
David Sidrane d6db06faf3 px_update_git_header:Extract latest release tag 2022-03-30 11:19:02 -04:00
Daniel Agar 82c1ffb8f8 boards: px4_fmu-v5_stackcheck disable common telemetry modules to save flash 2022-03-30 10:07:05 -04:00
Alex Mikhalev 9e57c5d217 tunes: Print warning if there is a tune error 2022-03-30 09:58:33 -04:00
Alex Mikhalev f6cda64f0d tunes: Fixed unspecified behaviour
This fixes unspecified behaviour due to evaluation order of args.
It's up to the compiler whether next_number() or next_dots() is executed
first which means that the behaviour is not properly specified.
2022-03-30 09:58:33 -04:00
Kabir Mohammed d3b3de7159 mavlink: Use round instead of ceil on BATTERY_STATUS percentage
Co-authored-by: Alex Mikhalev <alex@corvus-robotics.com>
2022-03-30 09:49:11 -04:00
CUAVmengxiao 1870b9245b fmu-v5: add macro definitions for different version revisions 2022-03-29 17:09:34 -04:00
CUAVmengxiao f540335998 spi: get the correct version revision 2022-03-29 17:09:34 -04:00
CUAVmengxiao c0d5ae2f9f fmu-v5: Add support for ICM-42688-P 2022-03-29 17:09:34 -04:00
Matthias Grob 7cd57b4415 FlightTaskOrbit: alert user about exceeded radius (mavlink_log) 2022-03-29 18:46:37 +02:00
Matthias Grob 3e8d2fea94 FlightTaskOrbit: alert user about exceeded radius (events) 2022-03-29 18:46:37 +02:00
Matthias Grob 8ad44ee128 FlightModeManager: remove needless space at the end of invalid task error string 2022-03-29 18:46:37 +02:00
Matthias Grob 9bdde98a68 FlightModeManager: refactor flight task switch result condition for vehicle commands 2022-03-29 18:46:37 +02:00
Matthias Grob ffaef906c4 FlightModeManager: don't ack with result failed when parameters are invalid
Command denied is defined as "supported but has invalid parameters"
which matches the case.
2022-03-29 18:46:37 +02:00
Matthias Grob fc0be6c4fc FlightModeManager: switch to failsafe task if orbit is rejected 2022-03-29 18:46:37 +02:00
RomanBapst 18074dec5a simulator: fix conversion from hPa to Pa
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-03-29 17:41:54 +03:00
Daniel Agar 8a552fac78 uavcannode: publish RelPosHeading (from sensor_gnss_relative) 2022-03-29 07:59:41 +02:00
Daniel Agar 84e796c385 drives/gps: add new sensor_gnsss_relative msg
- for ublox this corresponds to NAV_RELPOSNED
2022-03-29 07:59:41 +02:00
Daniel Agar dfe13e16e8 boards: px4_fmu-v2_multicopter disable distance_sensor/tfmini to save flash 2022-03-28 15:40:46 -04:00
Daniel Agar 67920f089b boards: px4_fmu-v5x_rtps disable unused systemcmds and examples to save flash 2022-03-28 12:01:21 -04:00
Matthias Grob c7f114a26a FlightTaskOrbit: increase radius limit 2022-03-28 17:57:56 +02:00
Matthias Grob d0794c1189 FlightTaskOrbit: don't start Orbit if radius is not in range 2022-03-28 17:57:56 +02:00
Daniel Agar 0595efbd9b sensors/vehicle_magnetometer: publish sensors_status_mag and other minor updates to stay in sync with air data 2022-03-26 16:08:41 -04:00
Daniel Agar 0c31f63896 sensors: add baro calibration and cleanup
- sensor_baro.msg use SI (pressure in Pascals)
 - update all barometer drivers to publish directly and remove PX4Barometer helper
 - introduce baro cal (offset) mainly as a mechanism to adjust
relative priority
 - commander: add simple baro cal that sets baro offsets to align with
GPS altitude (if available)
 - create new sensors_status.msg to generalize sensor reporting
2022-03-26 16:08:41 -04:00
Daniel Agar 5800c417c8 boards: px4_fmu-v2_rover disable unused drivers to save flash 2022-03-25 17:30:42 -04:00
Daniel Agar 01eb27c703 Jenkinsfile-compile: skip px4_sitl_rtps for now 2022-03-25 15:07:20 -04:00
Daniel Agar eb666e94a4 bords: omnibus_f4sd move ekf2 from default to new ekf2 board variant
- temporary solution to flash overflow
2022-03-25 12:47:25 -04:00
Daniel Agar bc26b73c07 px4io: only publish valid input_rc 2022-03-25 10:56:24 -04:00
Daniel Agar 3d08e031d2 rc_update: improve manual_switches simple protections
- require back to back matching switch decode to match within 1 second
 - clear any previous manual switches if RC is unstable
2022-03-25 10:56:24 -04:00
Daniel Agar 875a2cc423 commander: remove loop counters and update UI LED control to use monotonic time 2022-03-24 22:43:26 -04:00
Daniel Agar 879622547c commander: only process one vehicle_command/action_request per cycle
- things like arming requests can be dependent on current nav state
that might requested by a previous command, but the state machine
transition will only happen after command processing
2022-03-24 22:43:26 -04:00
Daniel Agar e528eb5dc4 commander: fix status flags usage (condition_global_position_valid->global_position_valid)
- broken due to the merge timing of https://github.com/PX4/PX4-Autopilot/pull/19378 and https://github.com/PX4/PX4-Autopilot/pull/19351
2022-03-24 09:40:15 -04:00
Jaeyoung-Lim 106044be38 Initialize global local projection for rovers
This commit initializes the global and local projection for rovers
2022-03-24 08:57:53 -04:00
Jonas Perolini e31304d7d5 Quadchute param update (#19351)
New parameter for actions after a quadchute (COM_QC_ACT)

Co-authored-by: Jonas <jonas.perolini@rigi.tech>
Co-authored-by: Matthias Grob <maetugr@gmail.com>
2022-03-24 10:27:32 +01:00
Jacob Schloss 5ae4cae073 orb_advertise_multi: might return nullptr (#19387) 2022-03-24 07:47:48 +01:00
Daniel Agar 6135bb384b cleanup module callback registration failed errors 2022-03-23 20:44:50 -04:00
Daniel Agar f4c3084c26 init adjustments to ensure used topics are advertised early (primarily for logging)
- multi-EKF create each instance as soon as IMU & mag are advertised (before device id populated)
2022-03-23 16:51:16 -04:00
Matthias Grob e6ed595651 Commander: make last_fail_time_us parameter a reference instead of pointer 2022-03-23 15:04:48 -04:00
Matthias Grob eee4aaee4f Commander: remove dynamic position velocity probation period 2022-03-23 15:04:48 -04:00
David Sidrane 9fe2dfc2e3 px4_fmuv-6x Sensor set 3 2022-03-23 12:24:31 -04:00
Thies Lennart Alff f1ec6ea026 make mavlink atttitude setpoints non-exlusive for offboard setpoints 2022-03-23 11:06:40 -04:00
Daniel Agar 94e30f5efb boards: delete unused px4_fmu-v2_test 2022-03-23 10:39:58 -04:00
Silvan Fuhrer a7ddaf08c4 vehicle_status_flags.msg: remove condition_ prefix to reduce message size
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-03-23 10:37:51 -04:00
Silvan Fuhrer c30f2b9493 vehicle_status_flags.msg: remove unused condition_system_returned_to_home
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2022-03-23 10:37:51 -04:00
Jaeyoung-Lim 194a281fae Project local coordinates for all fw landing states 2022-03-23 13:34:13 +01:00
Jaeyoung-Lim cb81c6ac8c Address review comments 2022-03-23 13:34:13 +01:00
Jaeyoung-Lim 71bfb9c0de Convert NPFG to local coordinates 2022-03-23 13:34:13 +01:00
Jaeyoung-Lim f804b3516f Remove local planar vector 2022-03-23 13:34:13 +01:00
Jaeyoung Lim 28d34bf095 Convert L1 controller to local coordinates 2022-03-23 13:34:13 +01:00
Matthias Grob 897506267d Sticks: name getThrottle() explicitly about range 2022-03-23 11:54:05 +01:00
Junwoo Hwang 0e5c305163 Stick Verbose Functinos : Make get functions for roll, pitch, yaw and throttle const to specify that it's not changing Sticks' internal variables 2022-03-23 11:54:05 +01:00
Junwoo Hwang f78465428c Stick Verbose Functions : Edit other FlightTasks using checkAndUpdateStickInputs() functions and correct Throttle returned value inverse issue 2022-03-23 11:54:05 +01:00
Junwoo Hwang 8266a4df98 Sticks : Add utility functions to get pitch, roll, throttle and yaw values intuitively and rename ambiguously named function checkAndSetStickInputs() 2022-03-23 11:54:05 +01:00
Matthias Grob db7430aa65 matrix helper: remove needless comment line 2022-03-23 10:51:45 +01:00
Matthias Grob 18629bb535 FlightTaskOrbit: fix tangential yaw stick input for rotation direction changes 2022-03-23 10:51:45 +01:00
Matthias Grob 74c0ae6e55 Functions: add sign from boolean function with unit tests 2022-03-23 10:51:45 +01:00
Matthias Grob e03585ca06 FlightTaskOrbit: remap stick input when vehicle faces tangential 2022-03-23 10:51:45 +01:00
Matthias Grob db1fb6acf7 Commander: no battery time based RTL when already landed 2022-03-23 10:49:38 +01:00
Matthias Grob 69f6092031 mavlink_receiver: remove unused land detection publication 2022-03-23 10:49:38 +01:00
Matthias Grob c1b9b8a1c0 MulticopterLandDetector: correct comment with outdated time constant reference 2022-03-23 10:49:38 +01:00
Matthias Grob b85c4ec475 Commander: rename land detection subscription for consistency 2022-03-23 10:49:38 +01:00
Matthias Grob 4a5a8d59fe matrix helper: add documentation for sign function 2022-03-23 08:47:52 +01:00
Matthias Grob d0abcc1ca3 MatrixHelperTest: add unit tests for the signum function 2022-03-23 08:47:52 +01:00
Matthias Grob 03f836f79d matrix helper: fix sign function zero case 2022-03-23 08:47:52 +01:00
David Sidrane 1a17e9df4d board_hw_rev_ve:Use 97.50% for ADC ref for "High" detection 2022-03-22 21:15:03 -04:00
David Sidrane ebc8ecdee6 board_hw_rev_ve:ADC returns 32 bits 2022-03-22 21:15:03 -04:00
David Sidrane 1c224be8f6 stm32h7:ADC fix CCr Access 2022-03-22 21:15:03 -04:00
RomanBapst 60231bbcb6 navigator: don't reset cruise speed and throttle during a transition as part
of the VTOL takeoff navigation state

- the reset causes the loiter circle to be reset to home

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2022-03-22 15:14:02 +01:00
Daniel Mesham 06a9be74fa microdds: add xrce client 2022-03-22 09:01:05 +01:00
Konrad e080fab8f6 Set up landing gear logic for tiltrotor and tailsitter VTOL. Gear is set down when in hover mode, esle gear is set up. 2022-03-21 09:30:04 +01:00
Konrad d7de67844f Set up landing gear logic for standard VTOL. Gear is set down when in hover mode, else gear is set up. 2022-03-21 09:30:04 +01:00
Daniel Agar c86d5769ea boards: px4_fmu-v2_{fixedwing,multicopter} module selection changes to save flash 2022-03-19 14:43:45 -04:00
Daniel Agar 475bd42ab8 sensors: add 2nd static notch and migrate existing parameters
- new static notch filter configured via IMU_GYRO_NF1_FRQ and IMU_GYRO_NF1_BW
 - existing notch parameters IMU_GYRO_NF_FREQ and IMU_GYRO_NF_BW become
IMU_GYRO_NF0_FRQ and IMU_GYRO_NF0_BW
2022-03-19 14:38:04 -04:00
Daniel Agar afeab9587e gyro_fft: peak detection exclude side FFT buckets
- when estimating the peak frequency the magnitude of side buckets will
be factored in, so it doesn't make sense to potentially treat them as
separatey detected peaks
2022-03-19 14:37:36 -04:00
Matthias Grob 9ab99a7689 MatrixHelperTest: don't rely on FLOAT_EQ accepting FLT_EPSILON inaccuracy 2022-03-18 13:35:18 +01:00
Thomas Stastny 144697bb6a MatrixHelperTest: correct wrap compare values 2022-03-18 13:35:18 +01:00
benjinne 620f25503c Add geofence predict param (#17795) 2022-03-18 11:44:13 +01:00
Thomas Debrunner 5b0fc8f507 print_load: Removed unused variable to fix compilation on macos 2022-03-18 10:42:19 +01:00
Daniel Agar 36e6527013 ROMFS: MAV_TYPE cleanup
- set MAV_TYPE as a parameter default per vehicle type, or airframe if necessary
 - cleanup MAV_TYPE param metadata and commander helper to only include
what's currently used in PX4
2022-03-17 09:28:10 -04:00
Matthias Grob cde7b1bc41 Matrix: remove deprecated minimal test framework 2022-03-17 13:02:22 +01:00
Matthias Grob 91493307b9 Matrix: convert vector test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 4b63f6b29a Matrix: convert vector assignment test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob f4b53d2762 Matrix: convert vector3 test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob ddfd62dfc2 Matrix: convert vector2 test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob be28aeb3ee Matrix: convert upper right triangle test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 4d43aad847 Matrix: convert transpose test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob b3cc18c6de Matrix: convert square test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 555ed9b9d8 Matrix: convert slice test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 46df8ab60c Matrix: convert set identity test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 831f0e9aac Matrix: convert scalar multiplication test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 38d742f1b5 Matrix: convert pseudo inverse test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 57e443c4a4 Matrix: convert multiplication test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 719898f1e3 Matrix: convert least squares test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob fddcf342e9 Matrix: convert inverse test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob f5ec4b2339 Matrix: convert integral test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 7c9e28c168 Matrix: convert helper test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 0c4c3a917c Matrix: convert hat vee test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 8f695a5613 Matrix: convert filter test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 79e8152f05 Matrix: convert dual test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 62571b6984 Matrix: convert copy to test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob 35b035e880 Matrix: convert attitude test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob c33bf5b705 Matrix: convert assignment test to gtest 2022-03-17 13:02:22 +01:00
Matthias Grob fa35635486 Matrix: change naming of sparse vector test 2022-03-17 13:02:22 +01:00
Jukka Laitinen 3d35929f3e Put gyro_fft in kernel by default in protected build
It is a performance issue to run it on user side

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 4658a627d7 Separate i2c and spi board bus configuration into and own library for protected build target
This info is needed on both kernel and user sides, and is just data.

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 543c7bd0c5 uORB: Build uorb systemcmd always in kernel side in memory protected build
Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen d167f91eb8 logger/watchdog: Disable watchdog for NuttX protected/kernel builds
It accesses kernel internal structures directly; this needs to be
worked out with some proper userspace-kernel interface

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 56c6120e83 Use IOCTL for board_read_VBUS_state in NuttX protected builds
Direct gpio read is not possible from user side applications, so use boardctl
interface instead.

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 0cf3079401 px4_fmuv5: Implement BOARD_*_LOCKOUT_STATE in protected/kernel builds
In memory protected builds these perform nuttx boardctl ioctl calls to kerenel

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 356328056a Add px4_fmu-v5_protected target
Add a target for nuttx protected build development

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 005095d199 Add gran allocator also to user side in protected build
This is needed for DMA capable memory for fat also in the user side;
the file system doesn't seem to work reliably without.

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 49b089f149 Add a simple way to launch kernel side modules
Add launch_kmod command to start/execute px4 modules in kenel space
in NuttX protected build

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen c43c71f4af platforms/nuttx/src/px4/common/board_ctrl: Add handlers for vbus & shutdown lockout
Add kernel side ioctls and handlers for vbus state and managing shutdown lockout

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen 4a74d266be Initialize cxx static variables also in kernel side
For protected/kernel builds the cxx static initializations
needs to be done also in kernel side, since px4 creates
c++ objects in kernel

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
Jukka Laitinen c1a7b8df1d Add a px4 userspace initialization in protected build
The px4_userspace_init function is called from userspace
entrypoint before starting NSH

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-17 08:01:51 +01:00
bresch f3f09c1344 PreFlightCheck: add data timeout detection for mag, baro accel and gyro 2022-03-16 11:46:01 +01:00
bresch 75aa11c955 PreFlightCheck: refactor sensors preflight checks 2022-03-16 11:46:01 +01:00
bresch b1c1163ee4 PreFlightCheck: remove unused device_id argument 2022-03-16 11:46:01 +01:00
bresch 5f1b577b6d PreFlightCheck: mark sensor required if used by an EKF2 instance 2022-03-16 11:46:01 +01:00
stmoon 6d0b11ca99 add custom target for uorb_sources_microcdr_gen 2022-03-15 17:59:22 -04:00
wangwwno1 746c16400a Typo Fix: ChangeWorkQeue
Fix the typo of 'WorkItem::ChangeWorkQeue' to 'WorkItem::ChangeWorkQueue'
2022-03-15 13:31:52 -04:00
Daniel Agar 4746a19c0c boards: px4_fmu-v5_stackcheck disable UUV modules to save flash 2022-03-15 12:10:03 -04:00
Daniel Agar 233c7fd293 goertek/spl06: parameters.c add copyright header and fix formatting 2022-03-15 10:14:46 -04:00
Ncerzzk cb23179c50 Add Goertek SPL06 barometer driver (#19229)
Signed-off-by: ncer <huangzzk@bupt.edu.cn>
2022-03-15 10:13:03 -04:00
Konrad 963f6a91d9 exclude Mixer for Tailsitter with x motor configuration and elevons for fmu-v2 and omnibus to avoid flash size issues 2022-03-15 10:44:27 +01:00
KonradRudin 5f43be9d60 preflight checks: add check for distance sensor (via parameter) 2022-03-15 10:44:27 +01:00
Jukka Laitinen 0d31aadcc3 src/lib/paramters: Add a new interface library for protected build user side
Implement an interface for protected build to access parameters.

The implementation only does IOCTL calls to the kernel, where the parameters
live.

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-15 07:52:26 +01:00
Jukka Laitinen 41a7ae3db2 src/lib/parameters: Refactor common functions to an own file
Put all functions which are commont to flat build and protected kernel and
userspace to an own source file

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
2022-03-15 07:52:26 +01:00
Daniel Agar 7ef38112d2 ekf2: return saved mag bias variance when not in 3d magnetometer fusion
- the estimated mag bias was requiring > 30 seconds of continuous 3d
mag fusion to be reported stable (and saved back to mag cal), this
restores the original intent requiring 30 seconds of accumulated valid
3d mag fusion
2022-03-14 21:03:41 -04:00
947 changed files with 86848 additions and 14089 deletions
+5 -1
View File
@@ -28,7 +28,7 @@ pipeline {
]
def base_builds = [
target: ["px4_sitl_rtps"],
target: ["px4_sitl_default"],
image: docker_images.base,
archive: false
]
@@ -52,12 +52,14 @@ pipeline {
"cuav_x7pro_default",
"cubepilot_cubeorange_default",
"cubepilot_cubeyellow_default",
"diatone_mamba-f405-mk2_default",
"freefly_can-rtk-gps_canbootloader",
"freefly_can-rtk-gps_default",
"holybro_can-gps-v1_canbootloader",
"holybro_can-gps-v1_default",
"holybro_durandal-v1_default",
"holybro_kakutef7_default",
"holybro_kakuteh7_default",
"holybro_pix32v5_default",
"matek_h743-slim",
"matek_gnss-m9n-f4_canbootloader",
@@ -100,9 +102,11 @@ pipeline {
"px4_fmu-v5_uavcanv0periph",
"px4_fmu-v5_uavcanv1",
"px4_fmu-v5x_default",
"px4_fmu-v6c_default",
"px4_fmu-v6u_default",
"px4_fmu-v6x_default",
"px4_io-v2_default",
"sky-drones_smartap-airlink_default",
"spracing_h7extreme_default",
"uvify_core_default"
],
+7 -4
View File
@@ -705,18 +705,21 @@ void quickCalibrate() {
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "gyro_calibration status || true"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate accel quick"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate accel quick; sleep 1"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param show CAL_ACC*"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate gyro"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate gyro; sleep 2"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param show CAL_GYRO*"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate level"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate level; sleep 2"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param show SENS*"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate mag quick"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate mag quick; sleep 1"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param show CAL_MAG*"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "commander calibrate baro; sleep 5"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param show CAL_BARO*"'
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param show CAL_*"' // parameters after
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "sensors status"'
}
+5
View File
@@ -20,6 +20,8 @@ jobs:
ark_can-flow,
ark_can-gps,
ark_can-rtk-gps,
ark_cannode,
ark_fmu-v6x,
atl_mantis-edu,
av_x-v1,
bitcraze_crazyflie,
@@ -29,6 +31,7 @@ jobs:
cuav_x7pro,
cubepilot_cubeorange,
cubepilot_cubeyellow,
diatone_mamba-f405-mk2,
freefly_can-rtk-gps,
holybro_can-gps-v1,
holybro_durandal-v1,
@@ -58,8 +61,10 @@ jobs:
px4_fmu-v4pro,
px4_fmu-v5,
px4_fmu-v5x,
px4_fmu-v6c,
px4_fmu-v6u,
px4_fmu-v6x,
sky-drones_smartap-airlink,
spracing_h7extreme,
uvify_core
]
+2 -2
View File
@@ -29,9 +29,9 @@ jobs:
token: ${{ secrets.ACCESS_TOKEN }}
- name: Download MAVSDK
run: wget "https://github.com/mavlink/MAVSDK/releases/download/v$(cat test/mavsdk_tests/MAVSDK_VERSION)/mavsdk_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
run: wget "https://github.com/mavlink/MAVSDK/releases/download/v$(cat test/mavsdk_tests/MAVSDK_VERSION)/libmavsdk-dev_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
- name: Install MAVSDK
run: dpkg -i "mavsdk_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
run: dpkg -i "libmavsdk-dev_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
- name: Prepare ccache timestamp
id: ccache_cache_timestamp
+5 -2
View File
@@ -24,8 +24,8 @@
branch = master
[submodule "platforms/nuttx/NuttX/nuttx"]
path = platforms/nuttx/NuttX/nuttx
url = https://github.com/JacobCrabill/incubator-nuttx.git
branch = dev-h7-socketcan
url = https://github.com/PX4/NuttX.git
branch = px4_firmware_nuttx-10.1.0+
[submodule "platforms/nuttx/NuttX/apps"]
path = platforms/nuttx/NuttX/apps
url = https://github.com/PX4/NuttX-apps.git
@@ -64,3 +64,6 @@
path = src/lib/crypto/libtommath
url = https://github.com/PX4/libtommath.git
branch = px4
[submodule "src/modules/microdds_client/Micro-XRCE-DDS-Client"]
path = src/modules/microdds_client/Micro-XRCE-DDS-Client
url = https://github.com/eProsima/Micro-XRCE-DDS-Client.git
+2
View File
@@ -9,3 +9,5 @@ launch.json
ipch/
browse.vc.db*
*.log
+20
View File
@@ -121,6 +121,26 @@ CONFIG:
buildType: MinSizeRel
settings:
CONFIG: ark_can-rtk-gps_canbootloader
ark_cannode_default:
short: ark_cannode_default
buildType: MinSizeRel
settings:
CONFIG: ark_cannode_default
ark_cannode_canbootloader:
short: ark_cannode_canbootloader
buildType: MinSizeRel
settings:
CONFIG: ark_cannode_canbootloader
ark_fmu-v6x_bootloader:
short: ark_fmu-v6x_bootloader
buildType: MinSizeRel
settings:
CONFIG: ark_fmu-v6x_bootloader
ark_fmu-v6x_default:
short: ark_fmu-v6x_default
buildType: MinSizeRel
settings:
CONFIG: ark_fmu-v6x_default
atl_mantis-edu_default:
short: atl_mantis-edu
buildType: MinSizeRel
+7
View File
@@ -412,6 +412,7 @@ endif()
# subdirectories
#
add_library(parameters_interface INTERFACE)
add_library(kernel_parameters_interface INTERFACE)
include(px4_add_library)
add_subdirectory(src/lib EXCLUDE_FROM_ALL)
@@ -434,7 +435,13 @@ add_subdirectory(src/lib/metadata EXCLUDE_FROM_ALL)
# must be the last module before firmware
add_subdirectory(src/lib/parameters EXCLUDE_FROM_ALL)
if(${PX4_PLATFORM} STREQUAL "nuttx" AND NOT CONFIG_BUILD_FLAT)
target_link_libraries(parameters_interface INTERFACE usr_parameters)
target_link_libraries(kernel_parameters_interface INTERFACE parameters)
else()
target_link_libraries(parameters_interface INTERFACE parameters)
endif()
# firmware added last to generate the builtin for included modules
add_subdirectory(platforms/${PX4_PLATFORM})
+2 -2
View File
@@ -37,8 +37,8 @@ menu "Toolchain"
help
forces nolockstep behaviour, despite REPLAY env variable
config BOARD_LINUX
bool "Linux OS"
config BOARD_LINUX_TARGET
bool "Linux OS Target"
depends on PLATFORM_POSIX
help
Board Platform is running the Linux operating system
+2 -1
View File
@@ -325,12 +325,13 @@ px4io_update: px4_io-v2_default cubepilot_io-v2_default
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v5/extras/px4_io-v2_default.bin
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v5x/extras/px4_io-v2_default.bin
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v6x/extras/px4_io-v2_default.bin
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v6c/extras/px4_io-v2_default.bin
# cubepilot_io-v2_default
cp build/cubepilot_io-v2_default/cubepilot_io-v2_default.bin boards/cubepilot/cubeorange/extras/cubepilot_io-v2_default.bin
cp build/cubepilot_io-v2_default/cubepilot_io-v2_default.bin boards/cubepilot/cubeyellow/extras/cubepilot_io-v2_default.bin
git status
bootloaders_update: cuav_nora_bootloader cuav_x7pro_bootloader cubepilot_cubeorange_bootloader holybro_durandal-v1_bootloader matek_h743-slim_bootloader modalai_fc-v2_bootloader mro_ctrl-zero-h7_bootloader mro_ctrl-zero-h7-oem_bootloader mro_pixracerpro_bootloader px4_fmu-v6u_bootloader px4_fmu-v6x_bootloader
bootloaders_update: cuav_nora_bootloader cuav_x7pro_bootloader cubepilot_cubeorange_bootloader holybro_durandal-v1_bootloader holybro_kakuteh7_bootloader matek_h743-slim_bootloader modalai_fc-v2_bootloader mro_ctrl-zero-classic_bootloader mro_ctrl-zero-h7_bootloader mro_ctrl-zero-h7-oem_bootloader mro_pixracerpro_bootloader px4_fmu-v6c_bootloader px4_fmu-v6u_bootloader px4_fmu-v6x_bootloader
git status
.PHONY: coverity_scan
+1 -1
View File
@@ -88,7 +88,7 @@ unset BOARD_RC_SENSORS
# Check for flow sensor
if param compare SENS_EN_PX4FLOW 1
then
px4flow start -X
px4flow start -X &
fi
uavcannode start
@@ -10,6 +10,7 @@
# enable fusion of landing target velocity
param set-default LTEST_MODE 1
param set-default PLD_HACC_RAD 0.1
param set-default RTL_PLD_MD 2
# Start up Landing Target Estimator module
landing_target_estimator start
@@ -8,8 +8,5 @@
# disable circuit breaker for airspeed sensor
param set-default CBRK_AIRSPD_CHK 162128
set MAV_TYPE 12
param set MAV_TYPE ${MAV_TYPE}
set MIXER_FILE etc/mixers-sitl/uuv_x_sitl.main.mix
set MIXER custom
@@ -8,8 +8,5 @@
# disable circuit breaker for airspeed sensor
param set-default CBRK_AIRSPD_CHK 162128
set MAV_TYPE 12
param set MAV_TYPE ${MAV_TYPE}
set MIXER_FILE etc/mixers-sitl/uuv_x_sitl.main.mix
set MIXER custom
@@ -67,4 +67,3 @@ param set-default PWM_MAIN_FUNC7 107
param set-default PWM_MAIN_FUNC8 108
set MIXER skip
@@ -71,7 +71,6 @@ param set-default MPC_XY_VEL_I_ACC 4
param set-default MPC_XY_VEL_D_ACC 0.1
param set-default NAV_ACC_RAD 5
param set-default NAV_LOITER_RAD 80
param set-default VT_FWD_THRUST_EN 4
param set-default VT_F_TRANS_THR 0.75
@@ -80,7 +79,5 @@ param set-default VT_FW_MOT_OFFID 1234
param set-default VT_B_TRANS_DUR 8
param set-default VT_TYPE 2
set MAV_TYPE 22
set MIXER_FILE etc/mixers-sitl/standard_vtol_sitl.main.mix
set MIXER custom
@@ -7,6 +7,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 20
# param set-default SYS_CTRL_ALLOC 1
param set-default CA_AIRFRAME 4
@@ -68,7 +70,6 @@ param set-default MPC_XY_VEL_I_ACC 4
param set-default MPC_XY_VEL_D_ACC 0.1
param set-default NAV_ACC_RAD 5
param set-default NAV_LOITER_RAD 80
param set-default VT_FW_DIFTHR_EN 1
param set-default VT_FW_DIFTHR_SC 0.5
@@ -78,7 +79,5 @@ param set-default VT_TYPE 0
param set-default WV_EN 0
set MAV_TYPE 20
set MIXER_FILE etc/mixers-sitl/quad_x_vtol.main.mix
set MIXER custom
@@ -7,6 +7,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 21
# param set-default SYS_CTRL_ALLOC 1
param set-default CA_AIRFRAME 3
@@ -80,7 +82,6 @@ param set-default MPC_XY_VEL_I_ACC 4
param set-default MPC_XY_VEL_D_ACC 0.1
param set-default NAV_ACC_RAD 5
param set-default NAV_LOITER_RAD 80
param set-default VT_B_TRANS_DUR 8
param set-default VT_FWD_THRUST_EN 4
@@ -88,7 +89,5 @@ param set-default VT_MOT_ID 1234
param set-default VT_TILT_TRANS 0.6
param set-default VT_TYPE 1
set MAV_TYPE 21
set MIXER_FILE etc/mixers-sitl/tiltrotor_sitl.main.mix
set MIXER custom
@@ -38,7 +38,6 @@ param set-default MPC_XY_VEL_I_ACC 4
param set-default MPC_XY_VEL_D_ACC 0.1
param set-default NAV_ACC_RAD 5
param set-default NAV_LOITER_RAD 80
param set-default VT_FWD_THRUST_EN 4
param set-default VT_F_TRANS_THR 0.75
@@ -51,7 +50,5 @@ param set-default RC_MAP_AUX1 8
param set-default RC_MAP_AUX2 9
param set-default RC_MAP_AUX3 10
set MAV_TYPE 22
set MIXER_FILE etc/mixers-sitl/standard_vtol_sitl.main.mix
set MIXER custom
@@ -37,6 +37,4 @@ param set-default PWM_MAIN_FUNC2 201
param set-default PWM_MAIN_FUNC6 101
param set-default PWM_MAIN_FUNC7 101
set MAV_TYPE 10
set MIXER_FILE skip
@@ -37,6 +37,4 @@ param set-default PWM_MAIN_FUNC2 101
param set-default PWM_MAIN_FUNC6 102
param set-default PWM_MAIN_FUNC7 102
set MAV_TYPE 10
set MIXER_FILE skip
@@ -10,6 +10,8 @@
. ${R}etc/init.d/rc.rover_defaults
param set-default MAV_TYPE 10
param set-default GND_L1_DIST 5
param set-default GND_SP_CTRL_MODE 1
param set-default GND_SPEED_D 3
@@ -33,6 +35,4 @@ param set-default CBRK_AIRSPD_CHK 162128
param set-default GND_MAX_ANG 0.6
param set-default GND_WHEEL_BASE 3.0
set MAV_TYPE 10
set MIXER_FILE etc/mixers-sitl/rover_ackermann_sitl.main.mix
@@ -47,6 +47,4 @@ param set-default CA_R_REV 3
param set-default PWM_MAIN_FUNC1 101
param set-default PWM_MAIN_FUNC2 102
set MAV_TYPE 11
set MIXER skip
@@ -9,6 +9,8 @@
. ${R}etc/init.d/rc.mc_defaults
param set-default MAV_TYPE 13
param set-default MC_PITCHRATE_P 0.1
param set-default MC_PITCHRATE_I 0.05
param set-default MC_PITCH_P 6.0
@@ -24,6 +26,4 @@ param set-default TRIG_MODE 4
param set-default MNT_MODE_IN 4
param set-default MNT_DO_STAB 2
set MAV_TYPE 13
set MIXER hexa_x
@@ -7,6 +7,8 @@
. ${R}etc/init.d/rc.mc_defaults
param set-default MAV_TYPE 13
param set-default MC_PITCHRATE_P 0.0800
param set-default MC_PITCHRATE_I 0.0400
param set-default MC_PITCHRATE_D 0.0010
@@ -26,6 +28,4 @@ param set-default MNT_MODE_IN 4
param set-default MNT_MODE_OUT 2
param set-default MAV_PROTO_VER 2
set MAV_TYPE 13
set MIXER hexa_x
@@ -7,6 +7,8 @@
. ${R}etc/init.d/rc.mc_defaults
param set-default MAV_TYPE 13
param set-default SYS_CTRL_ALLOC 1
param set-default MC_PITCHRATE_P 0.0800
@@ -58,7 +60,5 @@ param set-default PWM_MAIN_FUNC4 104
param set-default PWM_MAIN_FUNC5 105
param set-default PWM_MAIN_FUNC6 106
set MAV_TYPE 13
set MIXER skip
set MIXER_AUX none
+7 -7
View File
@@ -24,7 +24,6 @@ fi
# initialize script variables
set IO_PRESENT no
set MAV_TYPE none
set MIXER none
set MIXER_AUX none
set MIXER_FILE none
@@ -224,6 +223,13 @@ rc_update start
manual_control start
sensors start
commander start
# Configure vehicle type specific parameters.
# Note: rc.vehicle_setup is the entry point for rc.interface,
# rc.fw_apps, rc.mc_apps, rc.rover_apps, and rc.vtol_apps.
#
. ${R}etc/init.d/rc.vehicle_setup
navigator start
# Try to start the micrortps_client with UDP transport if module exists
@@ -253,12 +259,6 @@ then
gyro_calibration start
fi
# Configure vehicle type specific parameters.
# Note: rc.vehicle_setup is the entry point for rc.interface,
# rc.fw_apps, rc.mc_apps, rc.rover_apps, and rc.vtol_apps.
#
. ${R}etc/init.d/rc.vehicle_setup
#user defined mavlink streams for instances can be in PATH
. px4-rc.mavlink
@@ -61,6 +61,8 @@ param set-default HIL_ACT_FUNC6 400
param set SYS_HITL 1
param set UAVCAN_ENABLE 0
# disable some checks to allow to fly
# - with usb
param set-default CBRK_USB_CHK 197848
@@ -36,4 +36,5 @@ param set-default MC_PITCHRATE_P 0.19
param set-default MC_PITCHRATE_I 0.05
param set-default MC_PITCHRATE_D 0.004
param set-default MC_YAW_P 4
set MIXER quad_w
@@ -15,6 +15,8 @@ set MIXER quad_x
param set SYS_HITL 1
param set UAVCAN_ENABLE 0
param set-default CA_ROTOR_COUNT 4
param set-default CA_ROTOR0_PX 0.15
param set-default CA_ROTOR0_PY 0.15
@@ -49,7 +49,6 @@ param set-default MPC_Z_VEL_MAX_DN 1.5
param set-default NAV_ACC_RAD 5
param set-default NAV_DLL_ACT 2
param set-default NAV_LOITER_RAD 80
param set-default RTL_DESCEND_ALT 10
param set-default RTL_RETURN_ALT 30
@@ -95,6 +94,8 @@ param set-default HIL_ACT_FUNC8 203
param set SYS_HITL 1
param set UAVCAN_ENABLE 0
# disable some checks to allow to fly
# - with usb
param set-default CBRK_USB_CHK 197848
@@ -104,7 +105,7 @@ param set-default CBRK_SUPPLY_CHK 894281
param set-default COM_PREARM_MODE 0
param set-default CBRK_IO_SAFETY 22027
set MAV_TYPE 22
param set-default MAV_TYPE 22
set MIXER standard_vtol_hitl
@@ -47,7 +47,7 @@ param set-default HIL_ACT_FUNC6 201
param set-default HIL_ACT_REV 32
param set-default MAV_TYPE 19
set MAV_TYPE 19
set MIXER vtol_tailsitter_duo_sat
set PWM_OUT 1234
@@ -54,7 +54,8 @@ param set-default PWM_AUX_DIS5 950
param set-default VT_TYPE 2
param set-default VT_MOT_ID 1234
param set-default VT_FW_MOT_OFFID 1234
set MAV_TYPE 22
param set-default MAV_TYPE 22
set MIXER quad_x
set MIXER_AUX vtol_AAERT
@@ -19,7 +19,6 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 19
param set-default MC_ROLL_P 6
@@ -38,7 +37,6 @@ param set-default VT_IDLE_PWM_MC 1080
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_MOT_ID 12
param set-default VT_TYPE 0
set MAV_TYPE 19
set MIXER vtol_tailsitter_duo
@@ -23,6 +23,7 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 21
param set-default MC_ROLL_P 7
param set-default MC_ROLLRATE_P 0.19
@@ -45,7 +46,6 @@ param set-default VT_TILT_TRANS 0.5
param set-default VT_TILT_FW 0.9
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_TYPE 1
set MAV_TYPE 21
set MIXER firefly6
set MIXER_AUX firefly6
@@ -13,6 +13,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 20
param set-default CA_AIRFRAME 4
param set-default CA_ROTOR_COUNT 4
param set-default CA_ROTOR0_PX 0.15
@@ -38,7 +40,6 @@ param set-default PWM_MAIN_MAX 2000
param set-default VT_MOT_ID 1234
param set-default VT_IDLE_PWM_MC 1080
param set-default VT_TYPE 0
set MAV_TYPE 20
set MIXER quad_x_vtol
@@ -7,8 +7,8 @@
#
# @output MAIN1 motor 1
# @output MAIN2 motor 2
# @output MAIN3 motor 4
# @output MAIN4 motor 5
# @output MAIN3 motor 3
# @output MAIN4 motor 4
# @output MAIN5 elevon left
# @output MAIN6 elevon right
# @output MAIN7 canard surface
@@ -22,13 +22,13 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 20
param set-default PWM_MAIN_MAX 2000
param set-default VT_IDLE_PWM_MC 1080
param set-default VT_TYPE 0
set MAV_TYPE 20
set MIXER quad_+_vtol
set PWM_OUT 1234
@@ -52,7 +52,6 @@ param set-default VT_MOT_ID 1234
param set-default VT_FW_MOT_OFFID 1234
param set-default VT_IDLE_PWM_MC 1080
param set-default VT_TYPE 2
set MAV_TYPE 22
set MIXER quad_x
set MIXER_AUX vtol_AAERT
@@ -41,7 +41,6 @@ param set-default VT_FW_MOT_OFFID 1234
param set-default VT_F_TRANS_THR 0.75
param set-default VT_IDLE_PWM_MC 1080
param set-default VT_TYPE 2
set MAV_TYPE 22
set MIXER quad_x
set MIXER_AUX vtol_delta
@@ -33,7 +33,6 @@ param set-default VT_MOT_ID 1234
param set-default VT_FW_MOT_OFFID 1234
param set-default VT_IDLE_PWM_MC 1080
param set-default VT_TYPE 2
set MAV_TYPE 22
set MIXER quad_x
set MIXER_AUX vtol_AAVVT
@@ -46,7 +46,6 @@ param set-default VT_IDLE_PWM_MC 1080
param set-default VT_MOT_ID 1234
param set-default VT_FW_MOT_OFFID 1234
param set-default VT_TYPE 2
set MAV_TYPE 22
set MIXER quad_x
set MIXER_AUX vtol_AAERT
@@ -77,8 +77,6 @@ param set-default VT_TRANS_MIN_TM 5
param set-default VT_TRANS_TIMEOUT 30
param set-default VT_TYPE 2
set MAV_TYPE 22
set MIXER quad_x
set MIXER_AUX vtol_AAERT
@@ -13,6 +13,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 21
param set-default PWM_AUX_DISARM 1000
param set-default PWM_AUX_MAX 2000
param set-default PWM_AUX_MIN 1000
@@ -28,7 +30,6 @@ param set-default VT_TILT_MC 0.08
param set-default VT_TILT_TRANS 0.5
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_TYPE 1
set MAV_TYPE 21
set MIXER claire
set MIXER_AUX claire
@@ -22,6 +22,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 21
param set-default CBRK_AIRSPD_CHK 162128
param set-default FW_ARSP_MODE 1
@@ -64,7 +66,6 @@ param set-default VT_TRANS_MIN_TM 1.2
param set-default VT_TRANS_P2_DUR 1.3
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_TYPE 1
set MAV_TYPE 21
set MIXER vtol_convergence
@@ -22,6 +22,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 22
param set-default BAT1_CAPACITY 23000
param set-default BAT1_N_CELLS 4
param set-default BAT1_R_INTERNAL 0.0025
@@ -134,7 +136,6 @@ param set-default VT_TRANS_TIMEOUT 22
param set-default VT_F_TRANS_RAMP 4
param set-default COM_RC_OVERRIDE 0
set MAV_TYPE 22
set MIXER deltaquad
set MIXER_AUX pass
@@ -23,6 +23,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 22
param set-default BAT1_N_CELLS 6
param set-default FW_AIRSPD_MAX 30
@@ -94,8 +96,6 @@ param set-default VT_PSHER_RMP_DT 2
param set-default VT_TRANS_MIN_TM 4
param set-default VT_TYPE 2
set MAV_TYPE 22
set MIXER babyshark
set MIXER_AUX pass
@@ -27,6 +27,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 21
param set-default VT_IDLE_PWM_MC 1100
param set-default VT_TYPE 1
param set-default VT_MOT_ID 1234
@@ -57,8 +59,6 @@ param set-default CA_SV_CS3_TRQ_Y 1.0
param set-default CA_SV_CS3_TYPE 4
param set-default CA_SV_TL_COUNT 4
set MAV_TYPE 21
set MIXER quad_x
set MIXER_AUX vtol_TTTTAAER
@@ -31,7 +31,6 @@ param set-default PWM_AUX_DIS5 950
param set-default VT_TYPE 2
param set-default VT_MOT_ID 12345678
param set-default VT_FW_MOT_OFFID 12345678
set MAV_TYPE 22
set MIXER octo_cox
set MIXER_AUX vtol_AAERT
@@ -19,6 +19,8 @@
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 19
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_MOT_COUNT 2
param set-default VT_TYPE 0
@@ -37,8 +39,6 @@ param set-default CA_SV_CS1_TRQ_P 0.5
param set-default CA_SV_CS1_TRQ_Y -0.5
param set-default CA_SV_CS1_TYPE 6
param set-default MAV_TYPE 19
set MAV_TYPE 19
set MIXER vtol_tailsitter_duo
set PWM_OUT 1234
@@ -18,4 +18,7 @@
. ${R}etc/init.d/rc.mc_defaults
# MAV_TYPE_TRICOPTER 15
param set-default MAV_TYPE 15
set MIXER tri_y_yaw+
@@ -18,4 +18,7 @@
. ${R}etc/init.d/rc.mc_defaults
# MAV_TYPE_TRICOPTER 15
param set-default MAV_TYPE 15
set MIXER tri_y_yaw-
@@ -17,7 +17,9 @@
#
. ${R}etc/init.d/rc.mc_defaults
set MIXER coax
# MAV_TYPE_COAXIAL 3
param set-default MAV_TYPE 3
param set-default MC_ROLLRATE_P 0.17
param set-default MC_ROLLRATE_I 0.05
@@ -36,6 +38,9 @@ param set-default PWM_MAIN_RATE 400
param set-default RTL_RETURN_ALT 30
param set-default RTL_DESCEND_ALT 10
set MIXER coax
# This is the gimbal pass mixer
set MIXER_AUX pass
@@ -20,7 +20,7 @@
. ${R}etc/init.d/rc.mc_defaults
# Configure as helicopter (number 4 defined in commander_helper.cpp)
set MAV_TYPE 4
param set-default MAV_TYPE 4
set MIXER blade130
@@ -41,5 +41,6 @@ param set-default FW_R_LIM 40
param set-default FW_P_LIM_MAX 25
param set-default FW_P_LIM_MIN -5
param set-default FW_P_RMAX_NEG 20
set MIXER TF-G2
set MIXER_AUX pass
@@ -24,8 +24,5 @@ param set-default MAV_0_CONFIG 102
param set-default GPS_UBX_DYNMODEL 8
param set-default SER_TEL2_BAUD 9600
set MAV_TYPE 8
param set MAV_TYPE ${MAV_TYPE}
set MIXER IO_pass
set MIXER_AUX pass
@@ -26,7 +26,7 @@
# @board px4_fmu-v2 exclude
#
set VEHICLE_TYPE mc
. ${R}etc/init.d/rc.mc_defaults
param set-default NAV_ACC_RAD 2
@@ -39,6 +39,7 @@ param set-default PWM_MAIN_RATE 400
param set-default RTL_DESCEND_ALT 10
param set-default RTL_RETURN_ALT 30
set MIXER dodeca_top_cox
set MIXER_AUX dodeca_bottom_cox
@@ -41,9 +41,6 @@ param set-default FW_RR_P 0.04
param set-default PWM_MAIN_DISARM 1000
# Configure this as plane.
set MAV_TYPE 1
# Set mixer.
set MIXER fw_generic_wing
@@ -1,6 +1,6 @@
#!/bin/sh
#
# @name PX4 Vision DevKit Platform
# @name PX4 Vision Dev Kit v1
#
# @type Quadrotor x
# @class Copter
@@ -0,0 +1,134 @@
#!/bin/sh
#
# @name PX4 Vision Dev Kit v1.5
#
# @type Quadrotor x
# @class Copter
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#
. ${R}etc/init.d/rc.mc_defaults
# System parameters
# use FMU motor outputs for less delay in the rate control loop
param set-default SYS_USE_IO 0
# Commander Parameters
param set-default COM_OBS_AVOID 1
param set-default COM_DISARM_LAND 0.5
# EKF2 parameters
param set-default EKF2_AID_MASK 35
param set-default EKF2_IMU_POS_X 0.02
param set-default EKF2_GPS_POS_X 0.055
param set-default EKF2_GPS_POS_Z -0.15
param set-default EKF2_MIN_RNG 0.03
param set-default EKF2_OF_POS_X 0.055
param set-default EKF2_OF_POS_Y 0.02
param set-default EKF2_OF_POS_Z 0.065
param set-default EKF2_REQ_HDRIFT 0.3
param set-default EKF2_REQ_SACC 1
param set-default EKF2_REQ_VDRIFT 0.3
param set-default EKF2_RNG_A_HMAX 8
param set-default EKF2_RNG_A_VMAX 2
param set-default EKF2_RNG_POS_X 0.055
param set-default EKF2_RNG_POS_Y -0.01
param set-default EKF2_RNG_POS_Z 0.065
param set-default EKF2_PCOEF_XP -0.25
param set-default EKF2_PCOEF_YN -0.55
param set-default EKF2_PCOEF_YP -0.55
# MAVLink parameters
param set-default MAV_0_CONFIG 101
param set-default MAV_1_CONFIG 102
param set-default MAV_1_RATE 80000
param set-default MAV_1_MODE 9
param set-default SER_TEL1_BAUD 921600
# Vehicle attitude PID tuning
param set-default MC_ACRO_EXPO 0
param set-default MC_ACRO_EXPO_Y 0
param set-default MC_ACRO_P_MAX 200
param set-default MC_ACRO_R_MAX 200
param set-default MC_ACRO_SUPEXPO 0
param set-default MC_ACRO_SUPEXPOY 0
param set-default MC_ACRO_Y_MAX 150
param set-default MC_PITCHRATE_D 0.0015
param set-default MC_ROLLRATE_D 0.0015
param set-default MC_YAWRATE_P 0.3
# Position Control Tuning
param set-default CP_DIST 6
param set-default MPC_ACC_DOWN_MAX 5
param set-default MPC_ACC_HOR_MAX 10
param set-default MPC_ACC_UP_MAX 4
param set-default MPC_MANTHR_MIN 0
param set-default MPC_MAN_Y_MAX 120
param set-default MPC_TILTMAX_AIR 45
param set-default MPC_THR_HOVER 0.3
param set-default MPC_TKO_SPEED 1
param set-default MPC_VEL_MANUAL 5
param set-default MPC_XY_CRUISE 5
param set-default MPC_XY_VEL_MAX 5
param set-default MPC_XY_VEL_P_ACC 1.58
param set-default MPC_XY_TRAJ_P 0.3
param set-default MPC_Z_TRAJ_P 0.3
param set-default MPC_Z_VEL_P_ACC 5
param set-default MPC_Z_VEL_I_ACC 3
param set-default MPC_LAND_ALT1 3
param set-default MPC_LAND_ALT2 1
param set-default MPC_POS_MODE 3
param set-default CP_GO_NO_DATA 1
# Navigator Parameters
param set-default NAV_ACC_RAD 2
# use oneshot motor output protocol
param set-default PWM_MAIN_RATE 0
# RTL Parameters
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
param set-default SENS_FLOW_MINHGT 0.5
param set-default IMU_GYRO_CUTOFF 100
param set-default SENS_TFLOW_CFG 103
# Power Parameters
param set-default BAT1_N_CELLS 4
param set-default BAT1_A_PER_V 36.364
param set-default BAT1_V_DIV 18.182
# Circuit breakers
param set-default CBRK_IO_SAFETY 22027
param set-default THR_MDL_FAC 0.3
param set-default CA_ROTOR_COUNT 4
param set-default CA_ROTOR0_PX 0.15
param set-default CA_ROTOR0_PY 0.15
param set-default CA_ROTOR0_KM 0.05
param set-default CA_ROTOR1_PX -0.15
param set-default CA_ROTOR1_PY -0.15
param set-default CA_ROTOR1_KM 0.05
param set-default CA_ROTOR2_PX 0.15
param set-default CA_ROTOR2_PY -0.15
param set-default CA_ROTOR2_KM -0.05
param set-default CA_ROTOR3_PX -0.15
param set-default CA_ROTOR3_PY 0.15
param set-default CA_ROTOR3_KM -0.05
# Outputs
param set-default PWM_AUX_FUNC1 101
param set-default PWM_AUX_FUNC2 102
param set-default PWM_AUX_FUNC3 103
param set-default PWM_AUX_FUNC4 104
@@ -24,8 +24,6 @@
set MIXER quad_s250aq
set MAV_TYPE 2
param set-default ATT_BIAS_MAX 0
param set-default CBRK_IO_SAFETY 22027
@@ -21,10 +21,7 @@
# @board cuav_x7pro exclude
#
set VEHICLE_TYPE mc
set MIXER quad_x
set PWM_OUT 1234
. ${R}etc/init.d/rc.mc_defaults
# Attitude & rate gains
param set-default MC_ROLLRATE_D 0.0013
@@ -21,10 +21,7 @@
# @maintainer Hyon Lim <lim@uvify.com>
#
set VEHICLE_TYPE mc
set MIXER quad_x
set PWM_OUT 1234
. ${R}etc/init.d/rc.mc_defaults
# Attitude & rate gains
param set-default MC_ROLLRATE_D 0.0013
@@ -24,10 +24,6 @@
. ${R}etc/init.d/rc.mc_defaults
# Configure this as Quadrotor
# set MAV_TYPE 14
# Set mixer
set MIXER tilt_quad
set MIXER_AUX tilt_quad
@@ -48,8 +48,6 @@ param set-default NAV_ACC_RAD 0.5
param set-default PWM_MAIN_DISARM 1500
param set-default PWM_MAIN_MAX 2000
param set-default PWM_MAIN_MIN 1000
# Configure this as rover
set MAV_TYPE 10
# Set mixer
set MIXER rover_generic
@@ -76,9 +76,6 @@ param set-default RBCLW_SER_CFG 104
# Start this driver after setting parameters, because the driver uses some of those parameters.
# roboclaw start /dev/ttyS3
# Configure this as rover
set MAV_TYPE 10
# Set mixer
set MIXER generic_diff_rover
@@ -65,9 +65,6 @@ param set-default PWM_MAIN_MIN4 970
# Enable Airspeed check circuit breaker because Rovers will have no airspeed sensor
param set-default CBRK_AIRSPD_CHK 162128
# Configure this as rover
set MAV_TYPE 10
# Set mixer
set MIXER rover_diff_and_servo
@@ -16,7 +16,4 @@
# disable circuit breaker for airspeed sensor
param set-default CBRK_AIRSPD_CHK 162128
set MAV_TYPE 12
param set MAV_TYPE ${MAV_TYPE}
set MIXER uuv_x
@@ -16,7 +16,4 @@
# disable circuit breaker for airspeed sensor
param set-default CBRK_AIRSPD_CHK 162128
set MAV_TYPE 12
param set MAV_TYPE ${MAV_TYPE}
set MIXER uuv_x
@@ -23,6 +23,9 @@
. ${R}etc/init.d/rc.mc_defaults
# MAV_TYPE_HEXAROTOR 13
param set-default MAV_TYPE 13
param set-default CA_ROTOR_COUNT 6
param set-default CA_ROTOR0_PX 0.0
param set-default CA_ROTOR0_PY 0.5
@@ -27,9 +27,8 @@
. ${R}etc/init.d/rc.mc_defaults
set MIXER hexa_x
set PWM_OUT 12345678
# MAV_TYPE_HEXAROTOR 13
param set-default MAV_TYPE 13
###############################################
# Attitude & rate gains
@@ -120,3 +119,7 @@ param set-default MAV_1_MODE 2
param set-default MAV_1_FORWARD 1
param set-default MAV_1_RATE 800000
param set-default SER_TEL2_BAUD 921600
set MIXER hexa_x
set PWM_OUT 12345678
@@ -23,6 +23,9 @@
. ${R}etc/init.d/rc.mc_defaults
# MAV_TYPE_HEXAROTOR 13
param set-default MAV_TYPE 13
param set-default CA_ROTOR_COUNT 6
param set-default CA_ROTOR0_PX 0.5
param set-default CA_ROTOR0_PY 0.0
@@ -25,6 +25,9 @@
. ${R}etc/init.d/rc.mc_defaults
# MAV_TYPE_OCTOROTOR 14
param set-default MAV_TYPE 14
param set-default CA_ROTOR_COUNT 8
param set-default CA_ROTOR0_KM -0.05
param set-default CA_ROTOR0_PX 0.46
@@ -25,6 +25,9 @@
. ${R}etc/init.d/rc.mc_defaults
# MAV_TYPE_OCTOROTOR 14
param set-default MAV_TYPE 14
set MIXER octo_+
set PWM_OUT 12345678
@@ -73,6 +73,7 @@ px4_add_romfs_files(
4016_holybro_px4vision
4017_nxp_hovergames
4019_x500_v2
4020_holybro_px4vision_v1_5
4030_3dr_solo
4031_3dr_quad
4040_reaper
@@ -7,6 +7,9 @@
set VEHICLE_TYPE airship
# MAV_TYPE_AIRSHIP 7
param set-default MAV_TYPE 7
#
# This is the gimbal pass mixer.
#
@@ -7,6 +7,9 @@
set VEHICLE_TYPE fw
# MAV_TYPE_FREE_BALLOON 8
param set-default MAV_TYPE 8
#
# Default parameters for balloon UAVs.
#
@@ -7,6 +7,9 @@
set VEHICLE_TYPE rover
# MAV_TYPE_SURFACE_BOAT 11
param set-default MAV_TYPE 11
#
# Default parameters for UGVs.
#
+3 -2
View File
@@ -7,14 +7,15 @@
set VEHICLE_TYPE fw
# MAV_TYPE_FIXED_WING 1
param set-default MAV_TYPE 1
#
# Default parameters for fixed wing UAVs.
#
param set-default COM_POS_FS_DELAY 5
param set-default COM_POS_FS_EPH 15
param set-default COM_POS_FS_EPV 30
param set-default COM_POS_FS_GAIN 0
param set-default COM_POS_FS_PROB 1
param set-default COM_VEL_FS_EVH 5
# Disable preflight disarm to not interfere with external launching
param set-default COM_DISARM_PRFLT -1
+6 -2
View File
@@ -17,17 +17,21 @@ set OUTPUT_DEV none
set OUTPUT_AUX_DEV /dev/pwm_output1
set OUTPUT_EXTRA_DEV /dev/pwm_output0
# set these before starting the modules
# set ESC mask before starting the modules
# setting the numeric parameter to "none" would make the startup script fail
if [ $PWM_AUX_OUT != none ]
then
param set PWM_AUX_OUT ${PWM_AUX_OUT}
else
param set PWM_AUX_OUT 0
fi
if [ $PWM_OUT != none ]
then
param set PWM_MAIN_OUT ${PWM_OUT}
else
param set PWM_AUX_OUT 0
fi
#
@@ -7,6 +7,9 @@
set VEHICLE_TYPE mc
# MAV_TYPE_QUADROTOR 2
param set-default MAV_TYPE 2
if param compare IMU_GYRO_RATEMAX 400
then
param set-default IMU_GYRO_RATEMAX 800
@@ -7,6 +7,9 @@
set VEHICLE_TYPE rover
# MAV_TYPE_GROUND_ROVER 10
param set-default MAV_TYPE 10
#
# Default parameters for UGVs.
#
+37 -24
View File
@@ -83,18 +83,24 @@ then
teraranger start -X
fi
# Possible external pmw3901 optical flow sensor
if param greater -s SENS_EN_PMW3901 0
# paa3905 optical flow sensor (external SPI)
if param greater -s SENS_EN_PAA3905 0
then
pmw3901 -S start
paa3905 -S start
fi
# Possible external paw3902 optical flow sensor
# paw3902 optical flow sensor (external SPI)
if param greater -s SENS_EN_PAW3902 0
then
paw3902 -S start
fi
# pmw3901 optical flow sensor (external SPI)
if param greater -s SENS_EN_PMW3901 0
then
pmw3901 -S start
fi
# vl53l1x i2c distance sensor
if param compare -s SENS_EN_VL53L1X 1
then
@@ -123,13 +129,31 @@ fi
# Sensirion SDP3X differential pressure sensor external I2C
if param compare -s SENS_EN_SDP3X 1
then
if ! sdp3x_airspeed start -X
if ! sdp3x start -X
then
# try another common address
sdp3x_airspeed start -X -a 0x22
sdp3x start -X -a 0x22
fi
fi
# TE MS4515 differential pressure sensor external I2C
if param compare -s SENS_EN_MS4515 1
then
ms4515 start -X
fi
# TE MS4525DO differential pressure sensor external I2C
if param compare -s SENS_EN_MS4525DO 1
then
ms4525do start -X
fi
# TE MS5525DSO differential pressure sensor external I2C
if param compare -s SENS_EN_MS5525DS 1
then
ms5525dso start -X
fi
# SHT3x temperature and hygrometer sensor, external I2C
if param compare -s SENS_EN_SHT3X 1
then
@@ -137,24 +161,19 @@ then
sht3x start -X -a 0x45
fi
# TE MS4525 differential pressure sensor external I2C
if param compare -s SENS_EN_MS4525 1
then
ms4525_airspeed start -X
fi
# TE MS5525 differential pressure sensor external I2C
if param compare -s SENS_EN_MS5525 1
then
ms5525_airspeed start -X
fi
# IR-LOCK sensor external I2C
if param compare -s SENS_EN_IRLOCK 1
then
irlock start -X
fi
# SPL06 sensor external I2C
if param compare -s SENS_EN_SPL06 1
then
spl06 -X start
spl06 -X -a 0x77 start
fi
# PCF8583 counter (RPM sensor)
if param compare -s SENS_EN_PCF8583 1
then
@@ -179,9 +198,3 @@ then
# start last (wait for possible icm20948 passthrough mode)
ak09916 -X -q start
fi
###############################################################################
# End Optional drivers #
###############################################################################
sensors start
@@ -7,6 +7,9 @@
set VEHICLE_TYPE uuv
# MAV_TYPE_SUBMARINE 12
param set-default MAV_TYPE 12
param set-default PWM_MAIN_MAX 1950
param set-default PWM_MAIN_MIN 1050
param set-default PWM_MAIN_DISARM 1500
+2 -93
View File
@@ -12,19 +12,9 @@ if [ $VEHICLE_TYPE = fw ]
then
if [ $MIXER = none ]
then
# Set default mixer for fixed wing if not defined.
set MIXER AERT
echo "FW mixer undefined"
fi
if [ $MAV_TYPE = none ]
then
# Set a default MAV_TYPE = 1 if not defined.
set MAV_TYPE 1
fi
# Set the mav type parameter.
param set MAV_TYPE ${MAV_TYPE}
# Load mixer and configure outputs.
. ${R}etc/init.d/rc.interface
@@ -42,41 +32,6 @@ then
echo "MC mixer undefined"
fi
if [ $MAV_TYPE = none ]
then
# Set a default MAV_TYPE = 2 if not defined.
set MAV_TYPE 2
# Use mixer to detect vehicle type
if [ $MIXER = coax ]
then
set MAV_TYPE 3
fi
if [ $MIXER = hexa_x -o $MIXER = hexa_+ ]
then
set MAV_TYPE 13
fi
if [ $MIXER = hexa_cox ]
then
set MAV_TYPE 13
fi
if [ $MIXER = octo_x -o $MIXER = octo_+ ]
then
set MAV_TYPE 14
fi
if [ $MIXER = octo_cox -o $MIXER = octo_cox_w ]
then
set MAV_TYPE 14
fi
if [ $MIXER = tri_y_yaw- -o $MIXER = tri_y_yaw+ ]
then
set MAV_TYPE 15
fi
fi
# Set the mav type parameter.
param set MAV_TYPE ${MAV_TYPE}
# Load mixer and configure outputs.
. ${R}etc/init.d/rc.interface
@@ -91,19 +46,9 @@ if [ $VEHICLE_TYPE = rover ]
then
if [ $MIXER = none ]
then
# Set default mixer for UGV if not defined.
set MIXER rover_generic
echo "rover mixer undefined"
fi
if [ $MAV_TYPE = none ]
then
# Set a default MAV_TYPE = 10 if not defined.
set MAV_TYPE 10
fi
# Set the mav type parameter.
param set MAV_TYPE ${MAV_TYPE}
# Load mixer and configure outputs.
. ${R}etc/init.d/rc.interface
@@ -121,25 +66,6 @@ then
echo "VTOL mixer undefined"
fi
if [ $MAV_TYPE = none ]
then
# Set a default MAV_TYPE = 19 if not defined.
set MAV_TYPE 19
# Use mixer to detect vehicle type.
if [ $MIXER = firefly6 ]
then
set MAV_TYPE 21
fi
if [ $MIXER = quad_x_pusher_vtol ]
then
set MAV_TYPE 22
fi
fi
# Set the mav type parameter.
param set MAV_TYPE ${MAV_TYPE}
# Load mixer and configure outputs.
. ${R}etc/init.d/rc.interface
@@ -157,15 +83,6 @@ then
echo "Airship mixer undefined"
fi
if [ $MAV_TYPE = none ]
then
# Set a default MAV_TYPE = 7 if not defined.
set MAV_TYPE 7
fi
# Set the mav type parameter.
param set MAV_TYPE ${MAV_TYPE}
# Load mixer and configure outputs.
. ${R}etc/init.d/rc.interface
@@ -183,19 +100,11 @@ then
echo "UUV mixer undefined"
fi
if [ $MAV_TYPE = none ]
then
# Set default MAV_TYPE to submarine if not defined
set MAV_TYPE 12
fi
param set MAV_TYPE ${MAV_TYPE}
# Load mixer and configure outputs.
. ${R}etc/init.d/rc.interface
# Start standard vtol apps.
. ${R}etc/init.d/rc.uuv_apps
fi
@@ -7,6 +7,9 @@
set VEHICLE_TYPE vtol
# MAV_TYPE_VTOL_FIXEDROTOR 22
param set-default MAV_TYPE 22
param set-default MIS_TAKEOFF_ALT 20
param set-default MIS_YAW_TMT 10
+37 -38
View File
@@ -29,7 +29,6 @@ set IOFW "/etc/extras/px4_io-v2_default.bin"
set IO_PRESENT no
set LOGGER_ARGS ""
set LOGGER_BUF 8
set MAV_TYPE none
set MIXER none
set MIXER_AUX none
set MIXER_FILE none
@@ -172,7 +171,7 @@ else
param select-backup /fs/microsd/parameters_backup.bson
fi
if ver hwcmp PX4_FMU_V5X PX4_FMU_V6X
if ver hwcmp PX4_FMU_V5X PX4_FMU_V6X ARK_FMU_V6X
then
netman update -i eth0
fi
@@ -283,28 +282,6 @@ else
param set SYS_AUTOCONFIG 0
fi
#
# 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
if param greater UAVCAN_ENABLE 2
then
set OUTPUT_MODE uavcan_esc
fi
else
tune_control play error
fi
else
if param greater -s UAVCAN_V1_ENABLE 0
then
uavcan_v1 start
fi
fi
#
# Check if PX4IO present and update firmware if needed.
# Assumption IOFW set to firmware file and IO_PRESENT = no
@@ -406,9 +383,17 @@ else
battery_status start
fi
sensors start
commander start
fi
#
# Configure vehicle type specific parameters.
# Note: rc.vehicle_setup is the entry point for rc.interface,
# rc.fw_apps, rc.mc_apps, rc.rover_apps, and rc.vtol_apps.
#
. ${R}etc/init.d/rc.vehicle_setup
# Pre-takeoff continuous magnetometer calibration
if param compare -s MBE_ENABLE 1
then
@@ -459,13 +444,6 @@ else
fi
fi
#
# Configure vehicle type specific parameters.
# Note: rc.vehicle_setup is the entry point for rc.interface,
# rc.fw_apps, rc.mc_apps, rc.rover_apps, and rc.vtol_apps.
#
. ${R}etc/init.d/rc.vehicle_setup
#
# Play the startup tune (if not disabled or there is an error)
#
@@ -493,12 +471,6 @@ else
gimbal start
fi
# Check for flow sensor
if param compare -s SENS_EN_PX4FLOW 1
then
px4flow start -X
fi
# Blacksheep telemetry
if param compare -s TEL_BST_EN 1
then
@@ -515,6 +487,12 @@ else
gyro_calibration start
fi
# Check for px4flow sensor
if param compare -s SENS_EN_PX4FLOW 1
then
px4flow start -X &
fi
#
# Optional board supplied extras: rc.board_extras
#
@@ -556,6 +534,28 @@ 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
if param greater UAVCAN_ENABLE 2
then
set OUTPUT_MODE uavcan_esc
fi
else
tune_control play error
fi
else
if param greater -s UAVCAN_V1_ENABLE 0
then
uavcan_v1 start
fi
fi
#
# End of autostart.
#
@@ -573,7 +573,6 @@ unset IO_PRESENT
unset IOFW
unset LOGGER_ARGS
unset LOGGER_BUF
unset MAV_TYPE
unset MIXER
unset MIXER_AUX
unset MIXER_FILE
@@ -1,5 +1,7 @@
Mixer for Tailsitter with x motor configuration and elevons
===========================================================
# @board px4_fmu-v2 exclude
# @board omnibus_f4sd exclude
This file defines a single mixer for tailsitter with motors in X configuration. All controls
are mixed 100%.
+3 -3
View File
@@ -16,15 +16,15 @@ if board_adc start
then
fi
if sdp3x_airspeed start -X
if sdp3x start -X
then
fi
if ms5525_airspeed start -X
if ms5525dso start -X
then
fi
if ms4525_airspeed start -X
if ms4525do start -X
then
fi
@@ -27,4 +27,5 @@ exec find boards msg src platforms test \
-path src/lib/crypto/monocypher -prune -o \
-path src/lib/crypto/libtomcrypt -prune -o \
-path src/lib/crypto/libtommath -prune -o \
-path src/modules/microdds_client/Micro-XRCE-DDS-Client -prune -o \
-type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) | grep $PATTERN
+18 -12
View File
@@ -11,7 +11,7 @@ from pyulog import ULog
from analysis.detectors import InAirDetector, PreconditionError
from analysis.metrics import calculate_ecl_ekf_metrics
from analysis.checks import perform_ecl_ekf_checks
from analysis.post_processing import get_estimator_check_flags
from analysis.post_processing import get_gps_check_fail_flags
def analyse_ekf(
ulog: ULog, check_levels: Dict[str, float], multi_instance: int = 0,
@@ -40,6 +40,11 @@ def analyse_ekf(
except:
raise PreconditionError('could not find estimator_status instance', multi_instance)
try:
estimator_status_flags = ulog.get_dataset('estimator_status_flags', multi_instance).data
except:
raise PreconditionError('could not find estimator_status_flags instance', multi_instance)
try:
_ = ulog.get_dataset('estimator_innovations', multi_instance).data
except:
@@ -61,14 +66,14 @@ def analyse_ekf(
'in_air_transition_time': round(in_air.take_off + in_air.log_start, 2),
'on_ground_transition_time': round(in_air.landing + in_air.log_start, 2)}
control_mode, innov_flags, gps_fail_flags = get_estimator_check_flags(estimator_status)
gps_fail_flags = get_gps_check_fail_flags(estimator_status)
sensor_checks, innov_fail_checks = find_checks_that_apply(
control_mode, estimator_status,
estimator_status_flags, estimator_status,
pos_checks_when_sensors_not_fused=pos_checks_when_sensors_not_fused)
metrics = calculate_ecl_ekf_metrics(
ulog, innov_flags, innov_fail_checks, sensor_checks, in_air, in_air_no_ground_effects,
ulog, estimator_status_flags, innov_fail_checks, sensor_checks, in_air, in_air_no_ground_effects,
multi_instance, red_thresh=red_thresh, amb_thresh=amb_thresh)
check_status, master_status = perform_ecl_ekf_checks(
@@ -78,12 +83,12 @@ def analyse_ekf(
def find_checks_that_apply(
control_mode: dict, estimator_status: dict, pos_checks_when_sensors_not_fused: bool = False) ->\
estimator_status_flags: dict, estimator_status: dict, pos_checks_when_sensors_not_fused: bool = False) ->\
Tuple[List[str], List[str]]:
"""
finds the checks that apply and stores them in lists for the std checks and the innovation
fail checks.
:param control_mode:
:param estimator_status_flags:
:param estimator_status:
:param b_pos_only_when_sensors_fused:
:return: a tuple of two lists that contain strings for the std checks and for the innovation
@@ -97,7 +102,7 @@ def find_checks_that_apply(
innov_fail_checks.append('posv')
# Magnetometer Sensor Checks
if (np.amax(control_mode['yaw_aligned']) > 0.5):
if (np.amax(estimator_status_flags['cs_yaw_align']) > 0.5):
sensor_checks.append('mag')
innov_fail_checks.append('magx')
@@ -106,13 +111,14 @@ def find_checks_that_apply(
innov_fail_checks.append('yaw')
# Velocity Sensor Checks
if (np.amax(control_mode['using_gps']) > 0.5):
if (np.amax(estimator_status_flags['cs_gps']) > 0.5):
sensor_checks.append('vel')
innov_fail_checks.append('vel')
innov_fail_checks.append('velh')
innov_fail_checks.append('velv')
# Position Sensor Checks
if (pos_checks_when_sensors_not_fused or (np.amax(control_mode['using_gps']) > 0.5)
or (np.amax(control_mode['using_evpos']) > 0.5)):
if (pos_checks_when_sensors_not_fused or (np.amax(estimator_status_flags['cs_gps']) > 0.5)
or (np.amax(estimator_status_flags['cs_ev_pos']) > 0.5)):
sensor_checks.append('pos')
innov_fail_checks.append('posh')
@@ -128,7 +134,7 @@ def find_checks_that_apply(
innov_fail_checks.append('hagl')
# optical flow sensor checks
if (np.amax(control_mode['using_optflow']) > 0.5):
if (np.amax(estimator_status_flags['cs_opt_flow']) > 0.5):
innov_fail_checks.append('ofx')
innov_fail_checks.append('ofy')
+3 -2
View File
@@ -55,7 +55,7 @@ def perform_imu_checks(
# perform the vibration check
imu_status['imu_vibration_check'] = 'Pass'
for imu_vibr_metric in ['imu_coning', 'imu_hfdang', 'imu_hfdvel']:
for imu_vibr_metric in ['imu_coning', 'imu_hfgyro', 'imu_hfaccel']:
mean_metric = '{:s}_mean'.format(imu_vibr_metric)
peak_metric = '{:s}_peak'.format(imu_vibr_metric)
if imu_metrics[mean_metric] > check_levels['{:s}_warn'.format(mean_metric)] \
@@ -123,7 +123,8 @@ def perform_sensor_innov_checks(
('magy', 'magy_fail_percentage', 'mag'),
('magz', 'magz_fail_percentage', 'mag'),
('yaw', 'yaw_fail_percentage', 'yaw'),
('vel', 'vel_fail_percentage', 'vel'),
('velh', 'vel_fail_percentage', 'vel'),
('velv', 'vel_fail_percentage', 'vel'),
('posh', 'pos_fail_percentage', 'pos'),
('tas', 'tas_fail_percentage', 'tas'),
('hagl', 'hagl_fail_percentage', 'hagl'),
+37 -26
View File
@@ -11,7 +11,7 @@ import numpy as np
from analysis.detectors import InAirDetector
def calculate_ecl_ekf_metrics(
ulog: ULog, innov_flags: Dict[str, float], innov_fail_checks: List[str],
ulog: ULog, estimator_status_flags: Dict[str, float], innov_fail_checks: List[str],
sensor_checks: List[str], in_air: InAirDetector, in_air_no_ground_effects: InAirDetector,
multi_instance: int = 0, red_thresh: float = 1.0, amb_thresh: float = 0.5) -> Tuple[dict, dict, dict, dict]:
@@ -20,7 +20,7 @@ def calculate_ecl_ekf_metrics(
red_thresh=red_thresh, amb_thresh=amb_thresh)
innov_fail_metrics = calculate_innov_fail_metrics(
innov_flags, innov_fail_checks, in_air, in_air_no_ground_effects)
estimator_status_flags, innov_fail_checks, in_air, in_air_no_ground_effects)
imu_metrics = calculate_imu_metrics(ulog, multi_instance, in_air_no_ground_effects)
@@ -90,10 +90,10 @@ def calculate_sensor_metrics(
def calculate_innov_fail_metrics(
innov_flags: dict, innov_fail_checks: List[str], in_air: InAirDetector,
estimator_status_flags: dict, innov_fail_checks: List[str], in_air: InAirDetector,
in_air_no_ground_effects: InAirDetector) -> dict:
"""
:param innov_flags:
:param estimator_status_flags:
:param innov_fail_checks:
:param in_air:
:param in_air_no_ground_effects:
@@ -103,17 +103,18 @@ def calculate_innov_fail_metrics(
innov_fail_metrics = dict()
# calculate innovation check fail metrics
for signal_id, signal, result in [('posv', 'posv_innov_fail', 'hgt_fail_percentage'),
('magx', 'magx_innov_fail', 'magx_fail_percentage'),
('magy', 'magy_innov_fail', 'magy_fail_percentage'),
('magz', 'magz_innov_fail', 'magz_fail_percentage'),
('yaw', 'yaw_innov_fail', 'yaw_fail_percentage'),
('vel', 'vel_innov_fail', 'vel_fail_percentage'),
('posh', 'posh_innov_fail', 'pos_fail_percentage'),
('tas', 'tas_innov_fail', 'tas_fail_percentage'),
('hagl', 'hagl_innov_fail', 'hagl_fail_percentage'),
('ofx', 'ofx_innov_fail', 'ofx_fail_percentage'),
('ofy', 'ofy_innov_fail', 'ofy_fail_percentage')]:
for signal_id, signal, result in [('posv', 'reject_ver_pos', 'hgt_fail_percentage'),
('magx', 'reject_mag_x', 'magx_fail_percentage'),
('magy', 'reject_mag_y', 'magy_fail_percentage'),
('magz', 'reject_mag_z', 'magz_fail_percentage'),
('yaw', 'reject_yaw', 'yaw_fail_percentage'),
('velh', 'reject_hor_vel', 'vel_fail_percentage'),
('velv', 'reject_ver_vel', 'vel_fail_percentage'),
('posh', 'reject_hor_pos', 'pos_fail_percentage'),
('tas', 'reject_airspeed', 'tas_fail_percentage'),
('hagl', 'reject_hagl', 'hagl_fail_percentage'),
('ofx', 'reject_optflow_x', 'ofx_fail_percentage'),
('ofy', 'reject_optflow_y', 'ofy_fail_percentage')]:
# only run innov fail checks, if they apply.
if signal_id in innov_fail_checks:
@@ -125,7 +126,7 @@ def calculate_innov_fail_metrics(
in_air_detector = in_air
innov_fail_metrics[result] = calculate_stat_from_signal(
innov_flags, 'estimator_status', signal, in_air_detector,
estimator_status_flags, 'estimator_status_flags', signal, in_air_detector,
lambda x: 100.0 * np.mean(x > 0.5))
return innov_fail_metrics
@@ -144,17 +145,27 @@ def calculate_imu_metrics(ulog: ULog, multi_instance, in_air_no_ground_effects:
imu_metrics[result] = calculate_stat_from_signal(
estimator_status_data, 'estimator_status', signal, in_air_no_ground_effects, np.median)
# calculates peak and mean for IMU vibration checks
for signal, result in [('vibe[0]', 'imu_coning'),
('vibe[1]', 'imu_hfdang'),
('vibe[2]', 'imu_hfdvel')]:
peak = calculate_stat_from_signal(
estimator_status_data, 'estimator_status', signal, in_air_no_ground_effects, np.amax)
if peak > 0.0:
imu_metrics['{:s}_peak'.format(result)] = peak
imu_metrics['{:s}_mean'.format(result)] = calculate_stat_from_signal(
estimator_status_data, 'estimator_status', signal,
in_air_no_ground_effects, np.mean)
for imu_status_instance in range(4):
try:
vehicle_imu_status_data = ulog.get_dataset('vehicle_imu_status', imu_status_instance).data
if vehicle_imu_status_data['accel_device_id'][0] == estimator_status_data['accel_device_id'][0]:
for signal, result in [('gyro_coning_vibration', 'imu_coning'),
('gyro_vibration_metric', 'imu_hfgyro'),
('accel_vibration_metric', 'imu_hfaccel')]:
peak = calculate_stat_from_signal(vehicle_imu_status_data, 'vehicle_imu_status', signal, in_air_no_ground_effects, np.amax)
if peak > 0.0:
imu_metrics['{:s}_peak'.format(result)] = peak
imu_metrics['{:s}_mean'.format(result)] = calculate_stat_from_signal(vehicle_imu_status_data, 'vehicle_imu_status', signal, in_air_no_ground_effects, np.mean)
except:
pass
# IMU bias checks
estimator_states_data = ulog.get_dataset('estimator_states', multi_instance).data
-109
View File
@@ -7,115 +7,6 @@ from typing import Tuple
import numpy as np
def get_estimator_check_flags(estimator_status: dict) -> Tuple[dict, dict, dict]:
"""
:param estimator_status:
:return:
"""
control_mode = get_control_mode_flags(estimator_status)
innov_flags = get_innovation_check_flags(estimator_status)
gps_fail_flags = get_gps_check_fail_flags(estimator_status)
return control_mode, innov_flags, gps_fail_flags
def get_control_mode_flags(estimator_status: dict) -> dict:
"""
:param estimator_status:
:return:
"""
control_mode = dict()
# extract control mode metadata from estimator_status.control_mode_flags
# 0 - true if the filter tilt alignment is complete
# 1 - true if the filter yaw alignment is complete
# 2 - true if GPS measurements are being fused
# 3 - true if optical flow measurements are being fused
# 4 - true if a simple magnetic yaw heading is being fused
# 5 - true if 3-axis magnetometer measurement are being fused
# 6 - true if synthetic magnetic declination measurements are being fused
# 7 - true when the vehicle is airborne
# 8 - true when wind velocity is being estimated
# 9 - true when baro height is being fused as a primary height reference
# 10 - true when range finder height is being fused as a primary height reference
# 11 - true when range finder height is being fused as a primary height reference
# 12 - true when local position data from external vision is being fused
# 13 - true when yaw data from external vision measurements is being fused
# 14 - true when height data from external vision measurements is being fused
# 15 - true when synthetic sideslip measurements are being fused
# 16 - true true when the mag field does not match the expected strength
# 17 - true true when the vehicle is operating as a fixed wing vehicle
# 18 - true when the magnetometer has been declared faulty and is no longer being used
# 19 - true true when airspeed measurements are being fused
# 20 - true true when protection from ground effect induced static pressure rise is active
# 21 - true when rng data wasn't ready for more than 10s and new rng values haven't changed enough
# 22 - true when yaw (not ground course) data from a GPS receiver is being fused
# 23 - true when the in-flight mag field alignment has been completed
# 24 - true when local earth frame velocity data from external vision measurements are being fused
# 25 - true when we are using a synthesized measurement for the magnetometer Z component
control_mode['tilt_aligned'] = ((2 ** 0 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['yaw_aligned'] = ((2 ** 1 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_gps'] = ((2 ** 2 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_optflow'] = ((2 ** 3 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_magyaw'] = ((2 ** 4 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_mag3d'] = ((2 ** 5 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_magdecl'] = ((2 ** 6 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['airborne'] = ((2 ** 7 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['estimating_wind'] = ((2 ** 8 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_barohgt'] = ((2 ** 9 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_rnghgt'] = ((2 ** 10 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_gpshgt'] = ((2 ** 11 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_evpos'] = ((2 ** 12 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_evyaw'] = ((2 ** 13 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['using_evhgt'] = ((2 ** 14 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['fuse_beta'] = ((2 ** 15 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['mag_field_disturbed'] = ((2 ** 16 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['fixed_wing'] = ((2 ** 17 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['mag_fault'] = ((2 ** 18 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['fuse_aspd'] = ((2 ** 19 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['gnd_effect'] = ((2 ** 20 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['rng_stuck'] = ((2 ** 21 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['gps_yaw'] = ((2 ** 22 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['mag_aligned_in_flight'] = ((2 ** 23 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['ev_vel'] = ((2 ** 24 & estimator_status['control_mode_flags']) > 0) * 1
control_mode['synthetic_mag_z'] = ((2 ** 25 & estimator_status['control_mode_flags']) > 0) * 1
return control_mode
def get_innovation_check_flags(estimator_status: dict) -> dict:
"""
:param estimator_status:
:return:
"""
innov_flags = dict()
# innovation_check_flags summary
# 0 - true if velocity observations have been rejected
# 1 - true if horizontal position observations have been rejected
# 2 - true if true if vertical position observations have been rejected
# 3 - true if the X magnetometer observation has been rejected
# 4 - true if the Y magnetometer observation has been rejected
# 5 - true if the Z magnetometer observation has been rejected
# 6 - true if the yaw observation has been rejected
# 7 - true if the airspeed observation has been rejected
# 8 - true if synthetic sideslip observation has been rejected
# 9 - true if the height above ground observation has been rejected
# 10 - true if the X optical flow observation has been rejected
# 11 - true if the Y optical flow observation has been rejected
innov_flags['vel_innov_fail'] = ((2 ** 0 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['posh_innov_fail'] = ((2 ** 1 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['posv_innov_fail'] = ((2 ** 2 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['magx_innov_fail'] = ((2 ** 3 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['magy_innov_fail'] = ((2 ** 4 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['magz_innov_fail'] = ((2 ** 5 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['yaw_innov_fail'] = ((2 ** 6 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['tas_innov_fail'] = ((2 ** 7 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['sli_innov_fail'] = ((2 ** 8 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['hagl_innov_fail'] = ((2 ** 9 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['ofx_innov_fail'] = ((2 ** 10 & estimator_status['innovation_check_flags']) > 0) * 1
innov_flags['ofy_innov_fail'] = ((2 ** 11 & estimator_status['innovation_check_flags']) > 0) * 1
return innov_flags
def get_gps_check_fail_flags(estimator_status: dict) -> dict:
"""
:param estimator_status:
+28 -28
View File
@@ -48,7 +48,7 @@ for filename in os.listdir(metadata_directory):
# # print out the check levels
# print('\n'+'The following metadata loaded from '+filename+' were used'+'\n')
# val = population_data.get(filename, {}).get('imu_hfdang_mean')
# val = population_data.get(filename, {}).get('imu_hfgyro_mean')
# print(val)
# Open pdf file for plotting
@@ -90,10 +90,10 @@ population_results = {
'ofy_fail_pct_avg':[float('NaN'),'The mean percentage of innovation test fails for the Y axis optical flow sensor'],
'imu_coning_max_avg':[float('NaN'),'The mean of the maximum in-flight values of the IMU delta angle coning vibration level (mrad)'],
'imu_coning_mean_avg':[float('NaN'),'The mean of the mean in-flight value of the IMU delta angle coning vibration level (mrad)'],
'imu_hfdang_max_avg':[float('NaN'),'The mean of the maximum in-flight values of the IMU high frequency delta angle vibration level (mrad)'],
'imu_hfdang_mean_avg':[float('NaN'),'The mean of the mean in-flight value of the IMU delta high frequency delta angle vibration level (mrad)'],
'imu_hfdvel_max_avg':[float('NaN'),'The mean of the maximum in-flight values of the IMU high frequency delta velocity vibration level (m/s)'],
'imu_hfdvel_mean_avg':[float('NaN'),'The mean of the mean in-flight value of the IMU delta high frequency delta velocity vibration level (m/s)'],
'imu_hfgyro_max_avg':[float('NaN'),'The mean of the maximum in-flight values of the IMU high frequency gyro vibration level (rad/s)'],
'imu_hfgyro_mean_avg':[float('NaN'),'The mean of the mean in-flight value of the IMU delta high frequency gyro vibration level (rad/s)'],
'imu_hfaccel_max_avg':[float('NaN'),'The mean of the maximum in-flight values of the IMU high frequency accel vibration level (m/s/s)'],
'imu_hfaccel_mean_avg':[float('NaN'),'The mean of the mean in-flight value of the IMU delta high frequency accel vibration level (m/s/s)'],
'obs_ang_median_avg':[float('NaN'),'The mean of the median in-flight value of the output observer angular tracking error magnitude (mrad)'],
'obs_vel_median_avg':[float('NaN'),'The mean of the median in-flight value of the output observer velocity tracking error magnitude (m/s)'],
'obs_pos_median_avg':[float('NaN'),'The mean of the median in-flight value of the output observer position tracking error magnitude (m)'],
@@ -360,54 +360,54 @@ if (len(result1) > 0 and len(result2) > 0):
plt.close(8)
# IMU high frequency delta angle vibration levels
temp = np.asarray([population_data[k].get('imu_hfdang_peak') for k in found_keys])
temp = np.asarray([population_data[k].get('imu_hfgyro_peak') for k in found_keys])
result1 = 1000.0 * temp[np.isfinite(temp)]
temp = np.asarray([population_data[k].get('imu_hfdang_mean') for k in found_keys])
temp = np.asarray([population_data[k].get('imu_hfgyro_mean') for k in found_keys])
result2 = 1000.0 * temp[np.isfinite(temp)]
if (len(result1) > 0 and len(result2) > 0):
population_results['imu_hfdang_max_avg'][0] = np.mean(result1)
population_results['imu_hfdang_mean_avg'][0] = np.mean(result2)
population_results['imu_hfgyro_max_avg'][0] = np.mean(result1)
population_results['imu_hfgyro_mean_avg'][0] = np.mean(result2)
plt.figure(9,figsize=(20,13))
plt.subplot(2,1,1)
plt.hist(result1)
plt.title("Gaussian Histogram - IMU HF Delta Angle Vibration Peak")
plt.xlabel("imu_hfdang_max (mrad)")
plt.title("Gaussian Histogram - IMU HF Gyroscope Vibration Peak")
plt.xlabel("imu_hfgyro_max (rad/s)")
plt.ylabel("Frequency")
plt.subplot(2,1,2)
plt.hist(result2)
plt.title("Gaussian Histogram - IMU HF Delta Angle Vibration Mean")
plt.xlabel("imu_hfdang_mean (mrad)")
plt.title("Gaussian Histogram - IMU HF Gyroscope Vibration Mean")
plt.xlabel("imu_hfgyro_mean (rad/s)")
plt.ylabel("Frequency")
pp.savefig()
plt.close(9)
# IMU high frequency delta velocity vibration levels
temp = np.asarray([population_data[k].get('imu_hfdvel_peak') for k in found_keys])
# IMU high frequency accel vibration levels
temp = np.asarray([population_data[k].get('imu_hfaccel_peak') for k in found_keys])
result1 = temp[np.isfinite(temp)]
temp = np.asarray([population_data[k].get('imu_hfdvel_mean') for k in found_keys])
temp = np.asarray([population_data[k].get('imu_hfaccel_mean') for k in found_keys])
result2 = temp[np.isfinite(temp)]
if (len(result1) > 0 and len(result2) > 0):
population_results['imu_hfdvel_max_avg'][0] = np.mean(result1)
population_results['imu_hfdvel_mean_avg'][0] = np.mean(result2)
population_results['imu_hfaccel_max_avg'][0] = np.mean(result1)
population_results['imu_hfaccel_mean_avg'][0] = np.mean(result2)
plt.figure(10,figsize=(20,13))
plt.subplot(2,1,1)
plt.hist(result1)
plt.title("Gaussian Histogram - IMU HF Delta Velocity Vibration Peak")
plt.xlabel("imu_hfdvel_max (m/s)")
plt.title("Gaussian Histogram - IMU HF Accelerometer Vibration Peak")
plt.xlabel("imu_hfaccel_max (m/s/s)")
plt.ylabel("Frequency")
plt.subplot(2,1,2)
plt.hist(result2)
plt.title("Gaussian Histogram - IMU HF Delta Velocity Vibration Mean")
plt.xlabel("imu_hfdvel_mean (m/s)")
plt.title("Gaussian Histogram - IMU HF Accelerometer Vibration Mean")
plt.xlabel("imu_hfaccel_mean (m/s/s)")
plt.ylabel("Frequency")
pp.savefig()
@@ -535,12 +535,12 @@ single_log_results = {
'hgt_sensor_status':['Pass','Height sensor check summary. This sensor data can be sourced from either Baro, GPS, range fidner or external vision system. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
'hgt_test_max':[float('NaN'),'The maximum in-flight value of the height sensor innovation consistency test ratio.'],
'hgt_test_mean':[float('NaN'),'The mean in-flight value of the height sensor innovation consistency test ratio.'],
'imu_coning_mean':[float('NaN'),'Mean in-flight value of the IMU delta angle coning vibration metric (rad)'],
'imu_coning_peak':[float('NaN'),'Peak in-flight value of the IMU delta angle coning vibration metric (rad)'],
'imu_hfdang_mean':[float('NaN'),'Mean in-flight value of the IMU delta angle high frequency vibration metric (rad)'],
'imu_hfdang_peak':[float('NaN'),'Peak in-flight value of the IMU delta angle high frequency vibration metric (rad)'],
'imu_hfdvel_mean':[float('NaN'),'Mean in-flight value of the IMU delta velocity high frequency vibration metric (m/s)'],
'imu_hfdvel_peak':[float('NaN'),'Peak in-flight value of the IMU delta velocity high frequency vibration metric (m/s)'],
'imu_coning_mean':[float('NaN'),'Mean in-flight value of the IMU delta angle coning vibration metric (rad^2)'],
'imu_coning_peak':[float('NaN'),'Peak in-flight value of the IMU delta angle coning vibration metric (rad^2)'],
'imu_hfgyro_mean':[float('NaN'),'Mean in-flight value of the IMU gyro high frequency vibration metric (rad/s)'],
'imu_hfgyro_peak':[float('NaN'),'Peak in-flight value of the IMU gyro high frequency vibration metric (rad/s)'],
'imu_hfaccel_mean':[float('NaN'),'Mean in-flight value of the IMU accel high frequency vibration metric (m/s/s)'],
'imu_hfaccel_peak':[float('NaN'),'Peak in-flight value of the IMU accel high frequency vibration metric (m/s/s)'],
'imu_sensor_status':['Pass','IMU sensor check summary. A Fail result indicates a significant error that caused a significant reduction in vehicle navigation performance was detected. A Warning result indicates that error levels higher than normal were detected but these errors did not significantly impact navigation performance. A Pass result indicates that no amonalies were detected and no further investigation is required'],
'in_air_transition_time':[float('NaN'),'The time in seconds measured from startup that the EKF transtioned into in-air mode. Set to a nan if a transition event is not detected.'],
'mag_percentage_amber':[float('NaN'),'The percentage of in-flight consolidated magnetic field sensor innovation consistency test values > 0.5.'],
+4 -4
View File
@@ -21,10 +21,10 @@ hagl_amber_warn_pct,5.0
tas_amber_warn_pct,5.0
imu_coning_peak_warn,1.8E-5
imu_coning_mean_warn,3.6E-6
imu_hfdang_peak_warn,3.0E-3
imu_hfdang_mean_warn,6.0E-4
imu_hfdvel_peak_warn,9.0E-2
imu_hfdvel_mean_warn,1.8E-2
imu_hfgyro_peak_warn,12
imu_hfgyro_mean_warn,2.4
imu_hfaccel_peak_warn,360
imu_hfaccel_mean_warn,72
obs_ang_err_median_warn,8.0E-3
obs_vel_err_median_warn,0.05
obs_pos_err_median_warn,0.15
1 check_id threshold
21 tas_amber_warn_pct 5.0
22 imu_coning_peak_warn 1.8E-5
23 imu_coning_mean_warn 3.6E-6
24 imu_hfdang_peak_warn imu_hfgyro_peak_warn 3.0E-3 12
25 imu_hfdang_mean_warn imu_hfgyro_mean_warn 6.0E-4 2.4
26 imu_hfdvel_peak_warn imu_hfaccel_peak_warn 9.0E-2 360
27 imu_hfdvel_mean_warn imu_hfaccel_mean_warn 1.8E-2 72
28 obs_ang_err_median_warn 8.0E-3
29 obs_vel_err_median_warn 0.05
30 obs_pos_err_median_warn 0.15
+6 -6
View File
@@ -49,12 +49,12 @@ hagl_test_mean, The mean in-flight value of the height above ground sensor innov
ofx_fail_percentage, The percentage of in-flight recorded failure events for the optical flow sensor X-axis innovation consistency test.
ofy_fail_percentage, The percentage of in-flight recorded failure events for the optical flow sensor Y-axis innovation consistency test.
filter_faults_max, Largest recorded value of the filter internal fault bitmask. Should always be zero.
imu_coning_peak, Peak in-flight value of the IMU delta angle coning vibration metric (rad)
imu_coning_mean, Mean in-flight value of the IMU delta angle coning vibration metric (rad)
imu_hfdang_peak, Peak in-flight value of the IMU delta angle high frequency vibration metric (rad)
imu_hfdang_mean, Mean in-flight value of the IMU delta angle high frequency vibration metric (rad)
imu_hfdvel_peak, Peak in-flight value of the IMU delta velocity high frequency vibration metric (m/s)
imu_hfdvel_mean, Mean in-flight value of the IMU delta velocity high frequency vibration metric (m/s)
imu_coning_peak, Peak in-flight value of the IMU delta angle coning vibration metric (rad^2)
imu_coning_mean, Mean in-flight value of the IMU delta angle coning vibration metric (rad^2)
imu_hfgyro_peak, Peak in-flight value of the IMU accel high frequency vibration metric (rad/s)
imu_hfgyro_mean, Mean in-flight value of the IMU accel high frequency vibration metric (rad/s)
imu_hfaccel_peak, Peak in-flight value of the IMU accel high frequency vibration metric (m/s/s)
imu_hfaccel_mean, Mean in-flight value of the IMU accel high frequency vibration metric (m/s/s)
output_obs_ang_err_median, Median in-flight value of the output observer angular error (rad)
output_obs_vel_err_median, Median in-flight value of the output observer velocity error (m/s)
output_obs_pos_err_median, Median in-flight value of the output observer position error (m)
1 check_id check_description
49 ofx_fail_percentage The percentage of in-flight recorded failure events for the optical flow sensor X-axis innovation consistency test.
50 ofy_fail_percentage The percentage of in-flight recorded failure events for the optical flow sensor Y-axis innovation consistency test.
51 filter_faults_max Largest recorded value of the filter internal fault bitmask. Should always be zero.
52 imu_coning_peak Peak in-flight value of the IMU delta angle coning vibration metric (rad) Peak in-flight value of the IMU delta angle coning vibration metric (rad^2)
53 imu_coning_mean Mean in-flight value of the IMU delta angle coning vibration metric (rad) Mean in-flight value of the IMU delta angle coning vibration metric (rad^2)
54 imu_hfdang_peak imu_hfgyro_peak Peak in-flight value of the IMU delta angle high frequency vibration metric (rad) Peak in-flight value of the IMU accel high frequency vibration metric (rad/s)
55 imu_hfdang_mean imu_hfgyro_mean Mean in-flight value of the IMU delta angle high frequency vibration metric (rad) Mean in-flight value of the IMU accel high frequency vibration metric (rad/s)
56 imu_hfdvel_peak imu_hfaccel_peak Peak in-flight value of the IMU delta velocity high frequency vibration metric (m/s) Peak in-flight value of the IMU accel high frequency vibration metric (m/s/s)
57 imu_hfdvel_mean imu_hfaccel_mean Mean in-flight value of the IMU delta velocity high frequency vibration metric (m/s) Mean in-flight value of the IMU accel high frequency vibration metric (m/s/s)
58 output_obs_ang_err_median Median in-flight value of the output observer angular error (rad)
59 output_obs_vel_err_median Median in-flight value of the output observer velocity error (m/s)
60 output_obs_pos_err_median Median in-flight value of the output observer position error (m)
+59 -39
View File
@@ -11,7 +11,7 @@ import numpy as np
from matplotlib.backends.backend_pdf import PdfPages
from pyulog import ULog
from analysis.post_processing import magnetic_field_estimates_from_states, get_estimator_check_flags
from analysis.post_processing import magnetic_field_estimates_from_states, get_gps_check_fail_flags
from plotting.data_plots import TimeSeriesPlot, InnovationPlot, ControlModeSummaryPlot, \
CheckFlagsPlot
from analysis.detectors import PreconditionError
@@ -33,6 +33,11 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
except:
raise PreconditionError('could not find estimator_status instance', multi_instance)
try:
estimator_status_flags = ulog.get_dataset('estimator_status_flags', multi_instance).data
except:
raise PreconditionError('could not find estimator_status_flags instance', multi_instance)
try:
estimator_states = ulog.get_dataset('estimator_states', multi_instance).data
except:
@@ -68,12 +73,13 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
except:
raise PreconditionError('could not find innovation data')
control_mode, innov_flags, gps_fail_flags = get_estimator_check_flags(estimator_status)
gps_fail_flags = get_gps_check_fail_flags(estimator_status)
status_time = 1e-6 * estimator_status['timestamp']
status_flags_time = 1e-6 * estimator_status_flags['timestamp']
b_finishes_in_air, b_starts_in_air, in_air_duration, in_air_transition_time, \
on_ground_transition_time = detect_airtime(control_mode, status_time)
on_ground_transition_time = detect_airtime(estimator_status_flags, status_flags_time)
with PdfPages(output_plot_filename) as pdf_pages:
@@ -173,9 +179,9 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
# plot control mode summary A
data_plot = ControlModeSummaryPlot(
status_time, control_mode, [['tilt_aligned', 'yaw_aligned'],
['using_gps', 'using_optflow', 'using_evpos'], ['using_barohgt', 'using_gpshgt',
'using_rnghgt', 'using_evhgt'], ['using_magyaw', 'using_mag3d', 'using_magdecl']],
status_flags_time, estimator_status_flags, [['cs_tilt_align', 'cs_yaw_align'],
['cs_gps', 'cs_opt_flow', 'cs_ev_pos'], ['cs_baro_hgt', 'cs_gps_hgt',
'cs_rng_hgt', 'cs_ev_hgt'], ['cs_mag_hdg', 'cs_mag_3d', 'cs_mag_dec']],
x_label='time (sec)', y_labels=['aligned', 'pos aiding', 'hgt aiding', 'mag aiding'],
annotation_text=[['tilt alignment', 'yaw alignment'], ['GPS aiding', 'optical flow aiding',
'external vision aiding'], ['Baro aiding', 'GPS aiding', 'rangefinder aiding',
@@ -188,7 +194,7 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
# plot control mode summary B
# construct additional annotations for the airborne plot
airborne_annotations = list()
if np.amin(np.diff(control_mode['airborne'])) > -0.5:
if np.amin(np.diff(estimator_status_flags['cs_in_air'])) > -0.5:
airborne_annotations.append(
(on_ground_transition_time, 'air to ground transition not detected'))
else:
@@ -197,7 +203,7 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
if in_air_duration > 0.0:
airborne_annotations.append(((in_air_transition_time + on_ground_transition_time) / 2,
'duration = {:.1f} sec'.format(in_air_duration)))
if np.amax(np.diff(control_mode['airborne'])) < 0.5:
if np.amax(np.diff(estimator_status_flags['cs_in_air'])) < 0.5:
airborne_annotations.append(
(in_air_transition_time, 'ground to air transition not detected'))
else:
@@ -205,7 +211,7 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
(in_air_transition_time, 'in-air at {:.1f} sec'.format(in_air_transition_time)))
data_plot = ControlModeSummaryPlot(
status_time, control_mode, [['airborne'], ['estimating_wind']],
status_flags_time, estimator_status_flags, [['cs_in_air'], ['cs_wind']],
x_label='time (sec)', y_labels=['airborne', 'estimating wind'], annotation_text=[[], []],
additional_annotation=[airborne_annotations, []],
plot_title='EKF Control Status - Figure B', pdf_handle=pdf_pages)
@@ -214,15 +220,15 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
# plot innovation_check_flags summary
data_plot = CheckFlagsPlot(
status_time, innov_flags, [['vel_innov_fail', 'posh_innov_fail'], ['posv_innov_fail',
'hagl_innov_fail'],
['magx_innov_fail', 'magy_innov_fail', 'magz_innov_fail',
'yaw_innov_fail'], ['tas_innov_fail'], ['sli_innov_fail'],
['ofx_innov_fail',
'ofy_innov_fail']], x_label='time (sec)',
status_flags_time, estimator_status_flags, [['reject_hor_vel', 'reject_hor_pos'], ['reject_ver_vel', 'reject_ver_pos',
'reject_hagl'],
['reject_mag_x', 'reject_mag_y', 'reject_mag_z',
'reject_yaw'], ['reject_airspeed'], ['reject_sideslip'],
['reject_optflow_x',
'reject_optflow_y']], x_label='time (sec)',
y_labels=['failed', 'failed', 'failed', 'failed', 'failed', 'failed'],
y_lim=(-0.1, 1.1),
legend=[['vel NED', 'pos NE'], ['hgt absolute', 'hgt above ground'],
legend=[['vel NE', 'pos NE'], ['vel D', 'hgt absolute', 'hgt above ground'],
['mag_x', 'mag_y', 'mag_z', 'yaw'], ['airspeed'], ['sideslip'],
['flow X', 'flow Y']],
plot_title='EKF Innovation Test Fails', annotate=False, pdf_handle=pdf_pages)
@@ -250,18 +256,32 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
data_plot.save()
data_plot.close()
# Plot the EKF IMU vibration metrics
scaled_estimator_status = {'vibe[0]': 1000. * estimator_status['vibe[0]'],
'vibe[1]': 1000. * estimator_status['vibe[1]'],
'vibe[2]': estimator_status['vibe[2]']
}
data_plot = CheckFlagsPlot(
status_time, scaled_estimator_status, [['vibe[0]'], ['vibe[1]'], ['vibe[2]']],
x_label='time (sec)', y_labels=['Del Ang Coning (mrad)', 'HF Del Ang (mrad)',
'HF Del Vel (m/s)'], plot_title='IMU Vibration Metrics',
pdf_handle=pdf_pages, annotate=True)
data_plot.save()
data_plot.close()
for imu_status_instance in range(4):
try:
vehicle_imu_status_data = ulog.get_dataset('vehicle_imu_status', imu_status_instance).data
imu_status_time = 1e-6 * vehicle_imu_status_data['timestamp']
if vehicle_imu_status_data['accel_device_id'][0] == estimator_status['accel_device_id'][0]:
scaled_estimator_status = {'delta_angle_coning_metric': 1000. * vehicle_imu_status_data['delta_angle_coning_metric'],
'gyro_vibration_metric': vehicle_imu_status_data['gyro_vibration_metric'],
'accel_vibration_metric': vehicle_imu_status_data['accel_vibration_metric']
}
data_plot = CheckFlagsPlot(
imu_status_time, scaled_estimator_status, [['delta_angle_coning_metric'], ['gyro_vibration_metric'], ['accel_vibration_metric']],
x_label='time (sec)',
y_labels=['Del Ang Coning (mrad^2)', 'HF Gyro (rad/s)', 'HF accel (m/s/s)'],
plot_title='IMU Vibration Metrics',
pdf_handle=pdf_pages, annotate=True)
data_plot.save()
data_plot.close()
except:
pass
# Plot the EKF output observer tracking errors
scaled_innovations = {
@@ -330,33 +350,33 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
data_plot.close()
def detect_airtime(control_mode, status_time):
def detect_airtime(estimator_status_flags, status_flags_time):
# define flags for starting and finishing in air
b_starts_in_air = False
b_finishes_in_air = False
# calculate in-air transition time
if (np.amin(control_mode['airborne']) < 0.5) and (np.amax(control_mode['airborne']) > 0.5):
in_air_transtion_time_arg = np.argmax(np.diff(control_mode['airborne']))
in_air_transition_time = status_time[in_air_transtion_time_arg]
elif (np.amax(control_mode['airborne']) > 0.5):
in_air_transition_time = np.amin(status_time)
if (np.amin(estimator_status_flags['cs_in_air']) < 0.5) and (np.amax(estimator_status_flags['cs_in_air']) > 0.5):
in_air_transtion_time_arg = np.argmax(np.diff(estimator_status_flags['cs_in_air']))
in_air_transition_time = status_flags_time[in_air_transtion_time_arg]
elif (np.amax(estimator_status_flags['cs_in_air']) > 0.5):
in_air_transition_time = np.amin(status_flags_time)
print('log starts while in-air at ' + str(round(in_air_transition_time, 1)) + ' sec')
b_starts_in_air = True
else:
in_air_transition_time = float('NaN')
print('always on ground')
# calculate on-ground transition time
if (np.amin(np.diff(control_mode['airborne'])) < 0.0):
on_ground_transition_time_arg = np.argmin(np.diff(control_mode['airborne']))
on_ground_transition_time = status_time[on_ground_transition_time_arg]
elif (np.amax(control_mode['airborne']) > 0.5):
on_ground_transition_time = np.amax(status_time)
if (np.amin(np.diff(estimator_status_flags['cs_in_air'])) < 0.0):
on_ground_transition_time_arg = np.argmin(np.diff(estimator_status_flags['cs_in_air']))
on_ground_transition_time = status_flags_time[on_ground_transition_time_arg]
elif (np.amax(estimator_status_flags['cs_in_air']) > 0.5):
on_ground_transition_time = np.amax(status_flags_time)
print('log finishes while in-air at ' + str(round(on_ground_transition_time, 1)) + ' sec')
b_finishes_in_air = True
else:
on_ground_transition_time = float('NaN')
print('always on ground')
if (np.amax(np.diff(control_mode['airborne'])) > 0.5) and (np.amin(np.diff(control_mode['airborne'])) < -0.5):
if (np.amax(np.diff(estimator_status_flags['cs_in_air'])) > 0.5) and (np.amin(np.diff(estimator_status_flags['cs_in_air'])) < -0.5):
if ((on_ground_transition_time - in_air_transition_time) > 0.0):
in_air_duration = on_ground_transition_time - in_air_transition_time
else:
+1
View File
@@ -139,6 +139,7 @@ mc_hover_thrust_estimator,CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
mc_pos_control,CONFIG_MODULES_MC_POS_CONTROL=y
mc_rate_control,CONFIG_MODULES_MC_RATE_CONTROL=y
micrortps_bridge,CONFIG_MODULES_MICRORTPS_BRIDGE=y
microdds_client,CONFIG_MODULES_MICRODDS_CLIENT=y
navigator,CONFIG_MODULES_NAVIGATOR=y
px4iofirmware,CONFIG_MODULES_PX4IOFIRMWARE=y
rc_update,CONFIG_MODULES_RC_UPDATE=y
@@ -130,8 +130,7 @@ CONFIG_SCHED_LPWORKSTACKSIZE=1632
CONFIG_SCHED_WAITPID=y
CONFIG_SDCLONE_DISABLE=y
CONFIG_SDIO_BLOCKSETUP=y
CONFIG_SEM_NNESTPRIO=8
CONFIG_SEM_PREALLOCHOLDERS=0
CONFIG_SEM_PREALLOCHOLDERS=32
CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y
CONFIG_SERIAL_TERMIOS=y
CONFIG_SIG_DEFAULT=y
@@ -174,7 +173,7 @@ CONFIG_STM32_SPI1=y
CONFIG_STM32_SPI2=y
CONFIG_STM32_SPI4=y
CONFIG_STM32_SPI4_DMA=y
CONFIG_STM32_SPI4_DMA_BUFFER=1024
CONFIG_STM32_SPI4_DMA_BUFFER=512
CONFIG_STM32_SPI_DMA=y
CONFIG_STM32_SPI_DMATHRESHOLD=8
CONFIG_STM32_TIM10=y

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