====== PX4 Firmware ======
Today (10.2.2019) the firmware for the PX4 is a custom build based on the 1.8.2 release. The firmware is maintained in the github repository:
[[https://github.com/fredowski/Firmware|SearchWing PX4 Firmware]]
This is a fork from the [[https://github.com/PX4/Firmware|PX4 Firmware]] maintained by PX4 team. I have contributed two commits to the firmware which landed in upstream
* [[https://github.com/PX4/Firmware/commit/a21d352388447c3acd6214df0fdd570982949a4a|X-UAV Mini Talon airframe]]
* [[https://github.com/PX4/Firmware/pull/10699|A fix for the airframe]]
The above changes to the upstream firmware are after the 1.8.2 release. I cherry-picked the above changes and applied them to the stable (1.8.2) branch. All changes for searchwing are maintained in the
* [[https://github.com/fredowski/Firmware/tree/searchwing18|searchwing18 branch]]
which branched off the stable branch from upstream. The changes for the reduced Telemetry2 activity are missing.
===== Build =====
The build command for the 1.8.2 based firmeware is
make px4fmu-v4_default
Note the missing "_" compared to the [[https://dev.px4.io/en/setup/building_px4.html|official build description]]. You can find out the possible build targets via
make help
make list_config_targets
===== Firmware installation =====
The firmware is [[https://docs.px4.io/en/config/firmware.html|installed]] on the PixRacer via the QGroundControl Software. You have to select the "Custom Firmware File" that you find in the folder "Firmware/build". The name of the firmware file is "px4fmu-v4_default.px4".
=== Find out Firmware version ===
The SearchWing Firmware version is displayed in QGC as 1.8.2dev, i.e. the internal 1.8.2-1 or 1.8.2-2 is not shown directly. This can be done via the [[https://docs.qgroundcontrol.com/en/analyze_view/mavlink_console.html|Mavlink Console]]. You can figure out the firmware version via
ver all
You can then compare the git hash.
=== Mag Sensor Setup ===
Make sure that only the mag sensor in the GPS Module is enabled. The two mag sensors in the pixracer should be disabled, because there is too much disturbance from the power cable below the autopilot. When the [[https://store.mrobotics.io/mRo-GPS-u-Blox-Neo-M8N-HMC5983-Compass-p/mro-gps003-mr.htm|mRobotics GPS Module]] is installed with the arrow showing forward, then the mag sensor has a rotation of 90 Degrees Yaw (yes, this is strange). The parameters have to be setup like this
* CAL_MAG0_EN=1 (Enabled)
* CAL_MAG0_ROT=2 (Yaw 90 Degrees)
* CAL_MAG1_EN=CAL_MAG2_EN=0 (Disabled)
After the mag setup is changed, the mag sensors have to be calibrated. If you see a "Mag Inconsistent Error" in QGC, then this setup is wrong.
===== Parameter =====
==== Procedure ====
- Export parameter from QGC (.params file)
- Compare with the concurrent or for a new plane with an already existing file in [[https://gitlab.com/searchwing/operational/searchwing-config/tree/master/PX4|searchwing-config]], e.g. with git diff
- Optional: Delete the not needed parameter and push the new file.
==== Failsafes ====
- Low Battery Failsafe:
- BAT_CRIT_THR = 0.1 (capacity [%])
- BAT_EMERGEN_THR = 0.05 (capacity [%])
- BAT_LOW_THR = 0.2 (capacity [%])
- COM_LOW_BAT_ACT = 1 (return mode)
- RC Loss Failsafe:
- COM_RC_LOSS_T = 5 (time to detect RC-loss [s])
- NAV_RCL_ACT = 0 (no action)
- Data Link Loss Failsafe:
- COM_DL_LOSS_T = 10 (time to detect datalink-loss [s])
- NAV_DLL_ACT = 2 (return mode)
- Geofence Failsafe:
- GF_ACTION = 3 (return mode)
- GF_COUNT = -1 (counter limit to detect geofence breach)
- GF_MAX_HOR_DIST = 3000 (max horizontal distance home-plane [m])
- GF_MAX_VER_DIST = 250 (max vertical distance home-plane [m])
- Return Home Settings:
- RTL_DESCEND_ALT = 100 (altitude to loiter above home [m])
- RTL_LAND_DELAY = -1 (no land, just loiter [s])
- RTL_RETURN_ALT = 100 (altitude to flight to home [m])
- RTL_TYPE = 0 (direkt path to home)
- Land Mode Settings:
- COM_DISARM_LAND = 1 (disarm after delay [s])
- Position (GPS) Loss Failsafe:
- COM_POSCTL_NAVL = 1 (assume no RC → Land Mode with heigt, Termination without)
- COM_POS_FS_DELAY = 5 (time to detect GPS-loss [s])
- NAV_GPSF_LT = 10 (loiter time to recover GPS [s])
- NAV_GPSF_P = 0 (loiter pitch [deg])
- NAV_GPSF_R = 15 (loiter roll [deg])
- NAV_GPSF_TR = 0 (loiter thrust [%])
- Mission Failsafe
- MIS_DIST_1WP = 1500 (max distance home-wp1 [m])
- MIS_DIST_WPS = 2000 (max distance wp-wp [m])
- Set both values to -1, if more than 10km are needed.
- Traffic Avoidance Failsafe
- NAV_TRAFF_AVOID = 2 (Return Mode)
===== Releases =====
=== searchwing-1.8.2-1 ===
* Based on upstream 1.8.2
* Added X-UAV Mini Talon Airframe
* {{:searchwing-1.8.2-1.px4.zip|searchwing-1.8.2-1.px4.zip}}
* Git Hash: 1172edd2a093e614b9ca77bee753c19262295be3
=== searchwing-1.8.2-2 (27.2.2019) ===
* Added Björns minimal telemetry patch for the Raspberry Pi Camera Trigger from the autopilot
* {{:searchwing-1.8.2-2.px4.zip|searchwing-1.8.2-2.px4.zip}}
* Git Hash: 2786d39b71068917de6fab381e802f1205988af1
* [[https://github.com/fredowski/Firmware/commits/searchwing-1.8.2-2|View it on github]]