Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
searchwing-ardupilot-parameters [2020/02/28 16:20] wf68spef [PI Zero Telemetry for image metadata] |
searchwing-ardupilot-parameters [2022/05/23 14:29] wf68spef [Ardupilot Parameter Setup] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Ardupilot Parameter Setup ====== | ====== Ardupilot Parameter Setup ====== | ||
- | [[https://ardupilot.org/plane/docs/parameters-Plane-stable-V4.0.3.html|Ardupilot description of the parameters]] | + | [[https://ardupilot.org/plane/docs/parameters-Plane-stable-V4.2.0.html|Ardupilot description of the parameters]] |
- | [[https://gitlab.com/searchwing/operational/searchwing-config/-/tree/master/ardupilot%2Fv4.0.3|Kurdi Settings on gitlab]] | + | [[https://gitlab.com/searchwing/operational/searchwing-config/-/blob/master/ardupilot/searchwing/LATEST.params|Standard set of SearchWing ArduPilot parameters]] |
==== Arming / Safety ==== | ==== Arming / Safety ==== | ||
Line 60: | Line 60: | ||
^Parametername ^Value ^Description ^Remark ^ | ^Parametername ^Value ^Description ^Remark ^ | ||
|SERIAL2_BAUD |9 |9600 Baud |reduced to 9600 as otherwise no wifi with MAVESP connection possible | | |SERIAL2_BAUD |9 |9600 Baud |reduced to 9600 as otherwise no wifi with MAVESP connection possible | | ||
- | |SERIAL2_PROTOCOL |1 |MAVLink1 |Only MAVLink1 works for pymavlink on pi | | + | |SERIAL2_PROTOCOL |2 |MAVLink2 | Mavlink2 needed for PLAY_TUNE | |
|SR2_RAW_SENS |0 |0 Hz |no raw data needed | | |SR2_RAW_SENS |0 |0 Hz |no raw data needed | | ||
|SR2_EXT_STAT |1 |1 Hz | | | |SR2_EXT_STAT |1 |1 Hz | | | ||
|SR2_RC_CHAN |0 |0 Hz | | | |SR2_RC_CHAN |0 |0 Hz | | | ||
|SR2_RAW_CTRL |0 |0 Hz | | | |SR2_RAW_CTRL |0 |0 Hz | | | ||
- | |SR2_POSITION |1 |1 Hz | Contains GLOBAL_POSITION_INT, LOCAL_POSITION_NED messages | | + | |SR2_POSITION |5 |5 Hz | Contains GLOBAL_POSITION_INT, LOCAL_POSITION_NED messages | |
- | |SR2_EXTRA1 |2 |2 Hz | Contains ATTITUDE message | | + | |SR2_EXTRA1 |5 |5 Hz | Contains ATTITUDE message | |
|SR2_EXTRA2 |0 |0 Hz | | | |SR2_EXTRA2 |0 |0 Hz | | | ||
|SR2_EXTRA3 |1 |1 Hz | Contains SYSTEM_TIME message | | |SR2_EXTRA3 |1 |1 Hz | Contains SYSTEM_TIME message | | ||
|SR2_PARAMS |0 |0 Hz | | | |SR2_PARAMS |0 |0 Hz | | | ||
|SR2_ADSB |0 |0 Hz | | | |SR2_ADSB |0 |0 Hz | | | ||
+ | |||
+ | |||
+ | ===== Logging ===== | ||
+ | |||
+ | Several bits can be set for logging of different informations: [[https://ardupilot.org/plane/docs/parameters.html#log-bitmask-log-bitmask|Log Bitmask Description]] | ||
+ | |||
+ | Enabled all (''==65535'') results in following per message data sum in bytes for a 20 minute flight: | ||
+ | |||
+ | {{ ::average_log_msg_sizes.png?1400 |}} | ||
+ | |||
+ | * The PID, NKF(EKF) and IMU take a lot of space. | ||
+ | * The PID and EKF is saved using the "attitude" bit in the logging parameter setting (see [[https://github.com/ArduPilot/ardupilot/blob/6af0f460afa6f51c41056cd25fe2c70164d9d460/ArduPlane/Log.cpp#L39|Code]]). For the attitude two settings are available: Fast (50Hz), Medium(10Hz) according to [[https://github.com/ArduPilot/ardupilot_wiki/blob/6c81c28126e6cb2bdbb9cb58291342ca3ade96a0/dev/source/docs/using-the-command-line-interpreter-to-configure-apmcopter.rst#reading-logs-through-the-cli|LINK]]. I think 10Hz could be enough for us. __**But in the Code actually the Logging is done with 25Hz**__ (see [[https://github.com/ArduPilot/ardupilot/blob/d8d3494b170d50f7b45dced928cd5d9150b50d2f/ArduPlane/ArduPlane.cpp#L87|Code]]) | ||
+ | * IMU logging **could be disabled,** as its already triggerd by attitude logging anyway (see [[https://github.com/ArduPilot/ardupilot/blob/d8d3494b170d50f7b45dced928cd5d9150b50d2f/ArduPlane/ArduPlane.cpp#L209|Code]]), but with less data amount. **UPDATE:** Actually IMU also loggs the **BARO**, so it should not be disabled (see [[https://github.com/ArduPilot/ardupilot/search?q=set_log_baro_bit|INFO]]. | ||
+ | * TECS (Total Energy Control System) controls altitude vs speed and is important and **should be enabled**. | ||
+ | * CTUN Logs contain baro and ** should be enabled.** | ||
+ | * NTUN Logs navigation tuning info at 10 Hz and ** should be enabled.** | ||
+ | |||
+ | This results in the following Table (according to [[https://ardupilot.org/plane/docs/parameters.html#log-bitmask-log-bitmask|Log Bitmask Description]]): | ||
+ | |||
+ | ^ Bit ^ Meaning ^ Enabled ^ | ||
+ | | 0 | ATTITUDE_FAST(50Hz) | OFF | | ||
+ | | 1 | ATTITUDE_MED(10Hz) | ON | | ||
+ | | 2 | GPS | ON | | ||
+ | | 3 | PM | ON | | ||
+ | | 4 | CTUN | ON | | ||
+ | | 5 | NTUN | ON | | ||
+ | | 6 | MODE | ON | | ||
+ | | 7 | IMU | ON | | ||
+ | | 8 | CMD | ON | | ||
+ | | 9 | CURRENT | ON | | ||
+ | | 10 | COMPASS | ON | | ||
+ | | 11 | TECS | ON | | ||
+ | | 12 | CAMERA | OFF | | ||
+ | | 13 | RC | ON | | ||
+ | | 14 | SONAR | OFF | | ||
+ | | 15 | ARM/DISARM | ON | | ||
+ | | 19 | IMU_RAW | OFF | | ||
+ | | 20 | ATTITUDE_FULLRATE | OFF | | ||
+ | |||
+ | This results into the following parameter values. In the remarks you can see empirical Results for some settings from ArduPlane Simulator. | ||
+ | |||
+ | ^Parametername ^Value ^Description ^Remark ^ | ||
+ | |LOG_BITMASK | 65535 | Log all | ~3.04 MB/Min Log | | ||
+ | |LOG_BITMASK | 45054 | Log from table above (IMU disabled) | TODO | | ||
+ | |LOG_BITMASK | TODO | Log from table above (IMU enabled) | TODO | | ||
+ | |LOG_BITMASK | 2 | Log only attitude Medium | ~1.75 MB/Min Log | | ||
Line 90: | Line 136: | ||
1 1 BATT_VOLT_PIN 2 2 | 1 1 BATT_VOLT_PIN 2 2 | ||
1 1 BATT_WATT_MAX 0 4 | 1 1 BATT_WATT_MAX 0 4 | ||
+ | | ||
+ | | ||
+ | ===== RPM ===== | ||
+ | |||
+ | To measure the RPM of the motor we can use a BACK-EMF Measurement from 2 of the 3 motorcables. For more info check out the page: | ||
+ | |||
+ | https://www.hobbywingdirect.com/products/rpm-sensor | ||
+ | |||
+ | We connected the output pins to a AUX pin of the FC. Check out the info from Ardupilot for some info regarding the following config: | ||
+ | |||
+ | https://ardupilot.org/copter/docs/common-rpm.html | ||
+ | |||
+ | |||
+ | ^Parametername ^Value ^Description ^Remark ^ | ||
+ | |RPM_MAX |100000.000000000000000000 | | | | ||
+ | |RPM_MIN |10.000000000000000000 | | | | ||
+ | |RPM_MIN_QUAL |0.100000001490116119 | | | | ||
+ | |RPM_PIN |Pin | PIN | depending on FC | | ||
+ | |RPM_SCALING |0.143 | | check the hints below for this setting | | ||
+ | |RPM_TYPE |2 | AUX | Type needs to be AUX to calc using the given sensor | | ||
+ | |||
+ | The RPM in general can be calculated using the formula from https://www.radiocontrolinfo.com/brushless-motor-efficiency/measuring-motor-rpm/ : | ||
+ | |||
+ | ''RPM = ( 120 x Frequency ) / # of Motor Poles'' | ||
+ | |||
+ | Thats because: | ||
+ | |||
+ | ''The AC current that is produced alternates each time 2 magnetic poles pass by a winding in the stator. | ||
+ | '' | ||
+ | |||
+ | As Ardupilot measures the periode duration ''dt_avg'' of the sensor rectangular signal, and calculates the RPM using | ||
+ | |||
+ | ''float rpm = scaling * (1.0e6 / dt_avg) * 60;'' | ||
+ | |||
+ | the scaling needs to correct this using | ||
+ | |||
+ | ''SCALING = ( 1 / # of Motor Poles ) * 2'' | ||
+ | |||
+ | For the Extron 800KV Motor , we have 14 Poles. | ||
===== Tuning ===== | ===== Tuning ===== |