Investigating Controller Evolution and Divergence through Mining and Mutation

By Balaji Balasubramaniam , Hamid Bagheri , Sebastian Elbaum , and Justin Bradley
NIMBUS Lab, University of Nebraska - Lincoln

Abstract

Successful cyber-physical system controllers evolve as they are refined, extended, and adapted to new systems and contexts. This evolution occurs in the controller design and also in its software implementation. Model-based design and controller synthesis can help to synchronize this evolution of design and software, but such synchronization is rarely complete as software tends to also evolve in response to elements rarely present in a control model, leading to mismatches between the control design and the software. In this paper we perform a first-of-its-kind study on the evolution of two popular open-source safety- critical autopilot control software – ArduPilot, and Paparazzi, to better understand how controllers evolve and the space of potential mismatches between control design and their software implementation. We then use that understanding to prototype a technique that can generate mutated versions of code to mimic evolution to assess its impact on a controller’s behavior.

We find that 1) control software evolves quickly and controllers are rewritten in their entirety over their lifetime, implying that the design, synthesis, and implementation of controllers should also support incremental evolution, 2) many software changes stem from an inherent mismatch between continuous physical models and their corresponding discrete software implementa- tion, but also from the mishandling of exceptional conditions, and limitations and distinct data representation of the underlying computing architecture, 3) small code changes can have a dramatic effect in a controller’s behavior, implying that further support is needed to bridge these mismatches as carefully verified model properties may not necessarily translate to its software implementation.

Category definitions

These categories represent the primary mismatches resulting from the incongruences between control models of the physical system and the computational paradigm of software implementation.They capture the evolutionary changes resulting from inherent mismatches between system models and controllers, and their software implemented counterparts.


Resource Attributes

A software change resulting from features or limitations of the computing architecture, including software and hardware. In ArduPilot such changes are often intended to better fit or utilize existing resources such as memory, energy, or bandwith.

This change stores variables in flash memory instead of in static random access memory.
Commit id: 452749149fd4d3e910e6ed22a6f861d5862a4b0 Committers comment: convert AC_PID library to AP_Param
	
...
+const AP_Param::GroupInfo AC_PID::var_info[] PROGMEM={
+ AP_GROUPINFO("P", AC_PID, _kp),
+ AP_GROUPINFO("I", AC_PID, _ki),
+ AP_GROUPINFO("D", AC_PID, _kd),
...
	
  

Precision & Accuracy

A software change that modifies a measured value or a numerical calculation in order to more closely mimic continuous mathematics. In ArduPilot such changes often consist of utilizing improved functions in advanced math libraries or newer sensor devices, and simply using types with more bits for representation.

This change replaces fast_atan with atanf to improve accuracy and precision for calculating the target pitch angle. Commit id: 872583f4412ade16a31e8b7bd0363c294a20d301 Committers comment: AC_AttitudeControl: removed fast_atan
	
...
- _pitch_target = constrain_float(fast_atan(-accel_forward/(GRAVITY_MSS * 100))*(18000/M_PI_F),-lean_angle_max, lean_angle_max);
+ _pitch_target = constrain_float(atanf(-accel_ forward/(GRAVITY_MSS * 100))*(18000/M_PI_F),-lean_angle_max, lean_angle_max);
...
	
  

Time and Space Model

A software change resulting from the intrinsic discrete nature of the computing system in representing time and space. In ArduPilot such changes often consist of handling the inherent mismatch between continuous and discrete paradigms in representing and manipulating time in the calculations of derivatives and integrals, in the manipulation of variables associated with the vehicle location or motion, or in governing the periodic execution of certain pieces of code (e.g.tasks).

This change alters the time representation from seconds to milliseconds to more frequently check the position controller activity. Commit id: 88ec13b10d913d72cdb0b24ba2e1244e6ed37734 Committers comment: fix build
	
...
- if (dt > POSCONTROL_ACTIVE_TIMEOUT_SEC) {
+ if (dt > POSCONTROL_ACTIVE_TIMEOUT_MS*1.0e-3f) {
...
	
  

Exception Handling

A software change resulting from the handling of anomalous conditions that would otherwise result in computational failures. In ArduPilot such changes often consist in additional support for conditions to adhere to either mathematical laws (e.g. dividing by zero), or computational laws (e.g. unexpected input, seg fault, etc.).

This change checks whether the input variable to the PID controller is infinite or undefined before using it to calculate the PID terms of the controller. Commit id: ae77c18a1933dcb00eb9fc838872119b2250915c Committers comment: Input to the PID controller is protect against NaN and INF.
	
...
+ // don’t pass in inf or NaN
+ if (isfinite(input)){
...
	
  

Dataset

We required artifacts that included significant control software systems with many available versions reflecting their evolution. This choice was opportunistic in that Ardupilot and Paparazzi have been widely deployed, so findings in these code bases can still be valid for similar systems (e.g.,LibrePilot , PX4 ). The first artifact is the popular ArduPilot (The Ardupilot website reports that over one million vehicles use this code base, including companies like 3DR, PrecisionHawk, AgEagle, Intel and Insitu/Boeing, Kespry, branches of the US military, and NASA among others.), that provides a sophisticated control system for autopilot support that can operate on a variety of vehicles including airplanes, multirotors, helicopters, and boats. It has over nine years of well maintained history, and its code base is accessible through a git repository that stores the code changes committed by the developers since 2010. As of May 2019, the repository includes 448 contributors that have committed almost 38,000 changes. The latest version of ArduPilot contains approximately 250k lines of code (LOC) in C/C++. We focus our analysis on the evolution of the core control files that provide coverage of functionality associated with position and attitude control. We analyzed 585 commits (excluding the five first draft commits for the firve targeted files), where each commit included changes to at least one of the target files.

The second artifact is Paparazzi UAV , which has over 13 years of development history. Paparazzi UAV provides autopilot capabilities for fixed-wing, and rotorcraft vehicles. The code base is accessible through a git repository. As of May 2019 there are 99 contributors and ~15,400 changes. The latest version of Paparazzi UAV contains approximately 212k LOC in C/C++. We again selected control files central to position and attitude control, and analyzed 379 commits (excluding the five first draft commits for the firve targeted files), where each commit included changes to at least one of the target files.

About the below table:

The prefix "A" and "P" in "S.No" column represents the dataset artifacts ArduPilot and Paparazzi UAV respectively. The "S.No" column is a unique identifier assigned incrementally to each commits in the controller files, to uniquely identify it.

  • Filename column - contains the file name where the commit has occured.
  • Commit message column - contains the comment provided by the developer.
  • Category column - contains the category name to which a commit belongs to. Apart from the 5 categories mentioned in the above section, you will also find three other categories: (1) First draft - first implementation of the software, therefore we did not include this for our analysis. (2) Non-Control - commits that are not associated with control system. (3) Software maintenance - commits that are semantically equivalent to those caused by documentation, refactoring, or abstraction that is meant to ease the maintenance of the software without directly impacting the functionality.
  • Example column - contains the code snippet for a particular category and the exact location where the change is appearing in the source code.
  • Justification column - contains a brief description statement from the authors about the change.
  • Link column - includes a link to access the actual commit that is present in version control system git.
Tips:
  • Use search for seeing all the commits belonging to a particular category. The search functionality searches the given text in all columns, however since the category name is unique you can view all the commits belonging to a particular category by entering thea name of category. For example, enter "Time and Space Model" to view all the commits belonging to Time and Space model category.

S.No Filename Commit message Category Example Justification Link
Filename Commit message Category Example Justification Link
A1 AC_PID.cpp Added D term to APM_PI - need to refactor this as a parent class and two child classes to save code space, remove dupes First draft

af79eb273f
A2 AC_PID.cpp fixed missing return in D value Non-Control

f9eed9bd9e
A3 AC_PID.cpp convert AC_PID library to AP_Param Resource Attributes Resource Attributes: line 9: +const AP_Param::GroupInfo AC_PID::var_info[] PROGMEM = { Resource Attributes: This change stores variable in the flash memory instead of storing in static random access memory (RAM) to permanently store the PID controller gain variables. 452749149f
A4 AC_PID.cpp added indexes to group info structures Non-Control

9c5a5473ab
A5 AC_PID.cpp made I term return in same pattern as D term Software Maintenance

24ce02c6a4
A6 AC_PID.cpp AC_PID - added more paranoid checking that imax is positive in constructor, operator() and load_gains methods Cyber-Physical matches

24a471ff8f
A7 AC_PID.cpp AP_Param: update PID libraries for new constructor syntax Cyber-Physical matches

5e8fe8d93e
A8 AC_PID.cpp uncrustify libraries/AC_PID/AC_PID.cpp Software Maintenance

fc9f1a8216
A9 AC_PID.cpp AC_PID: Create Leaky Integrator Function. Cyber-Physical matches

1d12b781a0
A10 AC_PID.cpp AC_PID: save 8 bytes per AC_PID object Software Maintenance

eac1ad49d6
A11 AC_PID.cpp AC_PID: suppress the derivative immediately after reset Time and Space Model, Exception Handling, Initialization of Computing Type Time and Space Model: line 63: + derivative = 0; ,Exception Handling: line 59: + if (isnan(_last_derivative)) { ,Initialization of Computing Type: line 101: + _last_derivative = NAN; Time and Space Model: This change modifies the derivative variable which is a instantenous time discretized low pass filter, Exception Handling: This change introduces a predicate condition to check if the waypoint acceleration variable is equal to zero to avoid divide-by-zero computational failure, Initialization of Computing Type: This change keeps track of the destination reached state using a special computational type to avoid inconsistent initial states. 5e7ca5b0f8
A12 AC_PID.cpp AC_PID, AP_AHRS: added descriptions to some parameters Software Maintenance

24317e721b
A13 AC_PID.cpp AC_PID: fixed build on ARM Cyber-Physical matches

2294acc652
A14 AC_PID.cpp Add AVR compatibility header for missing math.h definitions. Precision & Accuracy Precision & Accuracy: line 6: +#include Precision & Accuracy: This change includes a different math library for performing math related operations. 4fa7bb1486
A15 AC_PID.cpp AC_PID: fixed indent-tabs-mode Non-Control

8c25a504c3
A16 AC_PID.cpp AC_PID: results returned as float Precision & Accuracy Precision & Accuracy: line 29: +float AC_PID::get_p(float error) const Precision & Accuracy: This change converts error variable from int32 to float for better numerical representation. fbc5af2705
A17 AC_PID.cpp AC_PID: Remove get_leaky_i function which is now found in AC_HELI_PID. Software Maintenance

f1c3f2a3d1
A18 AC_PID.cpp AC_PID: Add method to set the D-term Filter Rate from main code. Cyber-Physical matches

b35ec4339e
A19 AC_PID.cpp AC_PID: add input filtering and restructure Initialization of Computing Type, Time and Space Model Initialization of Computing Type: line 59: + _flags._reset_filter = true;,Time and Space Model: line 66: +void AC_PID::set_dt(float dt) Initialization of Computing Type: This change sets the input filter variable to a special boolean computational type to avoid inconsistent initial states, Time and Space Model: This change adds a function that sets the time step in seconds
517448e536
A20 AC_PID.cpp AC_PID: replace set_filt_hz method with filt_hz Software Maintenance Precision & Accuracy: line 74: + _filt_hz.set(fabs(hz));
c10b0b34ca
A21 AC_PID.cpp AC_PID: remove include of stdio.h Non-Control

12724e9556
A22 AC_PID.cpp AC_PID: Protect against NaN and INF Exception Handling Exception Handling: line 88: + if (isfinite(input)){ Exception Handling: This change introduces a predicate that checks whether the input variable is infinite or undefined before resetting the input fiter ae77c18a19
A23 AC_PID.cpp AC_PID: more protection against NaN and Inf Exception Handling Exception Handling: line 113: + if (!isfinite(input)) { Exception Handling: This change introduces a predicate that checks whether the input variable is infinite or undefined before resetting the input fiter a095a8c3a1
A24 AC_PID.cpp AC_PID: calculate filt_alpha every time the filter is run Cyber-Physical matches

6ea91d012e
A25 AC_PID.cpp AC_PID: replace floating point '==' with is_equal Precision & Accuracy Precision & Accuracy: line 135: + if(!is_equal(_ki, 0.0f) && !is_equal(_dt, 0.0f)) { Precision & Accuracy: This change includes a different math library for performing math related operations, and integer zero in predicate condition is represented as floating point for better numerical representation and comparison. 303cfd683a
A26 AC_PID.cpp AC_PID: replace is_equal with is_zero Precision & Accuracy Precision & Accuracy: line 135: + if(!is_zero(_ki) && !is_zero(_dt)) { Precision & Accuracy: This change includes a different math library for performing math related operations. 67b0c6f5c4
A27 AC_PID.cpp AP_PID: compiler warnings: apply is_zero(float) Precision & Accuracy Precision & Accuracy: line 135: + if(!AP_Math::is_zero(_ki) && !AP_Math::is_zero(_dt)) { Precision & Accuracy: This change includes a different math library for performing math related operations. 01180d52c4
A28 AC_PID.cpp AC_PID: revert AP_Math class change Precision & Accuracy Precision & Accuracy: line 202: + if (is_zero(_filt_hz)) { Precision & Accuracy: This change includes a different math library for performing math related operations. 33555b7f12
A29 AC_PID.cpp AP_PID: replace fabs() with fabsf() Precision & Accuracy Precision & Accuracy: line 55: + _imax = fabsf(initial_imax); Precision & Accuracy: This change returns the absolute value in float instead of double for better numerical representation 9d74f57ed3
A30 AC_PID.cpp AC_PID: Integrate PID Logging functionality. Non-Control

967071ca62
A31 AC_PID.cpp AC_PID: standardize inclusion of libaries headers Non-Control

286d084d83
A32 AC_PID.cpp Remove use of PROGMEM Non-Control

831d8acca5
A33 AC_PID.cpp Global: rename min and max macros to uppercase Non-Control

2591261af6
A34 AC_PID.cpp AP_Math: Cleaned macro definitions Non-Control

5148e41c1a
A35 AC_PID.cpp AC_PID: shorten FILT_HZ to FILT Software Maintenance

920425567c
A36 AC_PID.cpp AC_PID: fix parameter description Non-Control

227e4f86d7
A37 AC_PID.cpp Global: remove mode line from headers Non-Control

152edf7189
A38 AC_PID.cpp AC_PID: added feed-forward to AC_PID Cyber-Physical matches

b97bf5d15e
A39 AC_PosControl.cpp AC_AttControl: first draft of PosControl class First draft

05bb943a69
A40 AC_PosControl.cpp AC_PosControl: add throttle controller Precision & Accuracy, Time and Space Model, Exception Handling, Initialization of Computing Type Precision & Accuracy: line 80: + linear_distance = POSCONTROL_ALT_HOLD_ACCEL_MAX/(2.0f*_pi_alt_pos.kP()*_pi_alt_pos.kP());, Exception Handling: line 559: - if (_track_length == 0.0f) {, Time and Space Model: line 165: + uint32_t now = hal.scheduler->millis();, Initialization of Computing Type: line 103: + _limit.pos_up = false; Time and Space Model: This change governs the periodic execution of calculating the desired acceleration and then calling the acceleration based throttle controller, Exception Handling: This change removes a divide-by-zero predicate when calculating total distance to the destination, Precision & Accuracy: This change converts the integer value 2 to floating point for better numerical representation and calculation of linear distance, Initialization of Computing Type: This change clears the
position limit flag variable using a
special boolean computational type to avoid inconsistent initial states.
dcac124105
A41 AC_PosControl.cpp AC_PosControl: add init take-off Cyber-Physical matches

8988b48ad8
A42 AC_PosControl.cpp AC_PosControl: add get_alt_error method Non-Control

3ce1c0a9d5
A43 AC_PosControl.cpp AC_PosControl: add horizontal pos control Time and Space Model, Exception Handling, Initialization of Computing Type Time and Space Model: line 404: + uint32_t now = hal.scheduler->millis();, Exception Handling: line 632: + if (kP <= 0.0f) {, Initialization of Computing Type: line 63: + _flags.force_recalc_xy = false; Time and Space Model: This change governs the periodic execution of updating the horizontal position controller that is called at 100hz or higher, Exception Handling: This change adds a predicate condition to ensure proportional gain is greater than zero to avoid divide-by-zero computational failure, Initialization of Computing Type: This change sets the recalculation of position in horizontal position controller using a special boolean computational type to avoid inconsistent initial states. bbcf8cc84c
A44 AC_PosControl.cpp AC_PosControl: remove debug Software Maintenance

80ae3dca2e
A45 AC_PosControl.cpp AC_PosControl: recalculate leash when speed or accel modified Initialization of Computing Type Initialization of Computing Type: line 69: + _flags.recalc_leash_xy = true; Initialization of Computing Type: This change sets the recalculation of leash lengths using a
special boolean computational type to avoid inconsistent initial states
de34359808
A46 AC_PosControl.cpp AC_PosControl: remove debug Software Maintenance

1b8791a142
A47 AC_PosControl.cpp AC_AttControl: alternative get_stopping_point_z Cyber-Physical matches

26b257c8ba
A48 AC_PosControl.cpp AC_PosControl: make some methods const Cyber-Physical matches

551836c49d
A49 AC_PosControl.cpp AC_PosControl: use trig values from ahrs Precision & Accuracy Precision & Accuracy: line 639: + accel_forward = _accel_target.x*_ahrs.cos_yaw() + _accel_target.y*_ahrs.sin_yaw(); Precision & Accuracy: This change includes a different math library for performing math related operations and numerical representation. 8b8d6a8e01
A50 AC_PosControl.cpp AC_PosControl: replace APM_PI with AC_P Cyber-Physical matches

94fb9c4274
A51 AC_PosControl.cpp AC_PosControl: throttle rate to simple P controller Cyber-Physical matches

9130c88f15
A52 AC_PosControl.cpp AC_PosControl: update _pos_error if it is being limited Cyber-Physical matches

024855014f
A53 AC_PosControl.cpp AC_PosControl: fixed leash length calc for descent speed Cyber-Physical matches

345115fddd
A54 AC_PosControl.cpp AC_PosControl: update some comments re leash lengths Software Maintenance

dd45647626
A55 AC_PosControl.cpp AC_PosControl: replace safe_sqrt with pythagorous2 Cyber-Physical matches

90e205c905
A56 AC_PosControl.cpp PosControl: update_pos_controller renamed to update_xy_controller Software Maintenance

7e376bc517
A57 AC_PosControl.cpp AC_PosControl: bug fix to vertical speed limit Cyber-Physical matches

6f6c9e2585
A58 AC_PosControl.cpp AC_PosControl: stop I term build-up when motors at max Cyber-Physical matches

e565ee6d33
A59 AC_PosControl.cpp AC_PosControl: bugfix for freezing I-term build-up Cyber-Physical matches

09a35cf90f
A60 AC_PosControl.cpp AC_PosControl: update_xy_controller allows not resetting I term Cyber-Physical matches

6c71569775
A61 AC_PosControl.cpp AC_PosControl: add keep_xy_I_terms method Initialization of Computing Type Initialization of Computing Type: line 67: + _flags.keep_xy_I_terms = false; Initialization of Computing Type: This change ensures horizontal position controller's PID's I terms are not cleared using a special boolean computational type to avoid inconsistent initial states 098f8169b0
A62 AC_PosControl.cpp AC_PosControl: set_speed_z accepts positive descent speeds Cyber-Physical matches

9f63de9b59
A63 AC_PosControl.cpp AC_PosControl: add set_target_to_stopping_point_xy method Cyber-Physical matches

937e9ea687
A64 AC_PosControl.cpp AC_PosControl: add is_active_z method Resource Attributes, Time and Space Model, Initialization of Computing Type Resource Attributes: Consolidated z-axis timeout checks to save 4bytes of RAM, Time and Space Model: line 195: + uint32_t now = hal.scheduler->millis();, Initialization of Computing Type: line 67: + _flags.reset_accel_to_throttle = true; Resource Attributes: This change is specifically intended to saves 4 bytes of RAM memory by consolidating different control logics of z-axis timeout checks, Time and Space Model: This change governs the periodic execution of z-axis update position controller, Initialization of Computing Type: This change resets the acceleration to throttle of the z-axis position controller a special boolean computational type to avoid inconsistent initial states a1f1dd8059
A65 AC_PosControl.cpp AC_PosControl: include vel error when get_stopping_point_z Cyber-Physical matches

21c93e48ab
A66 AC_PosControl.cpp AC_PosControl: lean_angles_to_accel added for smooth initialisation Time and Space Model, Initialization of Computing Type Time and Space Model: line 514: + _last_update_xy_ms = hal.scheduler->millis();, Initialization of Computing Type: line 67: + _flags.reset_desired_vel_to_pos = true; Time and Space Model: This change governs the periodic execution of initializing position controller, Initialization of Computing Type: This change resets the acceleration carried out by rate based throttle controller using a special boolean computational type to avoid inconsistent initial states 0819e05896
A67 AC_PosControl.cpp AC_PosControl: remove unused _cos_yaw variable Resource Attributes Resource Attributes: Also removed _sin_yaw, _cos_pitch, _step saving a total of 17bytes of RAM
RAM
Resource Attributes: This change saves 17 bytes of RAM memory by removing unused variables cd8b1f278c
A68 AC_PosControl.cpp AC_PosControl: remove reset_I_xy Cyber-Physical matches

c13db680b7
A69 AC_PosControl.cpp AC_PosControl: set alt hold accel control D term filter Time and Space Model Time and Space Model: line 78: +void AC_PosControl::set_dt(float delta_sec) Time and Space Model: This change adds a function that sets the time step in seconds 29ca7a10df
A70 AC_PosControl.cpp AC_PosControl: fix typo in D-filter definition Non-Control

2b0f142a17
A71 AC_PosControl.cpp AC_PosControl: freeze feed forward and vector fixes Initialization of Computing Type Initialization of Computing Type: line 310: + _flags.reset_rate_to_accel_z = false; Initialization of Computing Type: This change reset last velocity target to current target using a special boolean computational type to avoid inconsistent initial states 0d87298221
A72 AC_PosControl.cpp AC_PosControl: freeze feed forward for alt control in Auto Software Maintenance

8bbce7e658
A73 AC_PosControl.cpp AC_AttControl: move freeze_ff to flags structure Software Maintenance

4d4c7a2118
A74 AC_PosControl.cpp AC_PosControl: add xyz velocity controller Time and Space Model, Initialization of Computing Type Time and Space Model: line 623: + uint32_t now = hal.scheduler->millis();, Initialization of Computing Type: line 601: + _flags.reset_desired_vel_to_pos = true; Time and Space Model: This change governs the periodic execution of initializing position controller, Initialization of Computing Type: This change resets the acceleration carried out by rate based throttle controller using a special boolean computational type to avoid inconsistent initial states 82ed70b25e
A75 AC_PosControl.cpp AC_AttitudeControl: Fixup some minor mistakes in AC_PosControl Precision & Accuracy Precision & Accuracy: line 47: + _roll_target(0.0f) Precision & Accuracy: This change converts target roll variable in to float for better numerical representation. 5f66027ba3
A76 AC_PosControl.cpp AC_AttitudeControl: Limit _pos_target.z to below alt_max before computing error Cyber-Physical matches

762bb3e6e8
A77 AC_PosControl.cpp AC_PosControl: cast fabs to float to resolve compiler warnings Precision & Accuracy Precision & Accuracy: line 94: +speed_down = (float)-fabs(speed_down); Precision & Accuracy: This change converts speed variable in to float for better numerical representation. 9233bbab14
A78 AC_PosControl.cpp AC_PosControl: init members to resolve compiler warnings Precision & Accuracy Precision & Accuracy: line 51: +_alt_max(0.0f) Precision & Accuracy: This change converts maximum altitude variable in to float for better numerical representation. 70568225a6
A79 AC_PosControl.cpp AC_PosControl: smooth take-off with accel PID's I term Cyber-Physical matches

1362bdc338
A80 AC_PosControl.cpp AC_PosControl: 2hz filter on accel error Cyber-Physical matches

665f353416
A81 AC_PosControl.cpp AC_PosControl: 4hz filter on z-axis velocity error Cyber-Physical matches

cf3b2be99c
A82 AC_PosControl.cpp AC_PosControl: remove completed to-do comments Non-Control

1754cacf3c
A83 AC_PosControl.cpp AC_PosControl: Protect from divide-by-zero in get_stopping_point_xy Exception Handling Exception Handling: line 475: + if (kP <= 0.0f || _accel_cms <= 0.0f || vel_total == 0.0f) { Exception Handling: This change introduces a predicate condition to check if the total velocity variable is equal to zero to avoid computational failure of divide-by-zero 4a397a8d67
A84 AC_PosControl.cpp AC_PosControl: bug fix dt calculation Time and Space Model Time and Space Model: line 551: + now = _last_update_xy_ms; Time and Space Model: This change governs the periodic execution of horizontal position controller a1cfd03c9b
A85 AC_PosControl.cpp AC_PosControl: Use sqrt_controller function Cyber-Physical matches

779baa006d
A86 AC_PosControl.cpp AC_PosControl: use AttControl's sqrt_controller Cyber-Physical matches

ac7ea2a12c
A87 AC_PosControl.cpp AC_PosControl: add force_descend option to set_alt_target_from_climb_rate Initialization of Computing Type Initialization of Computing Type: line 140: + void set_alt_target_from_climb_rate(float climb_rate_cms, float dt, bool force_descend = true); Initialization of Computing Type: This change introduces a boolean variable called force descend that keeps track of state during landing to allow target to move low enough to slow the motors. e81c1dd5a1
A88 AC_PosControl.cpp AC_PosControl: Use blended accelerometer measurement in altitude control Cyber-Physical matches

bfe71fea82
A89 AC_PosControl.cpp AC_PosControl: Add spike and noise filter to demanded angles Time and Space Model Time and Space Model: line 827: + uint32_t now = hal.scheduler->millis(); Time and Space Model: This change governs the periodic execution of desired acceleration converter 2dff76394d
A90 AC_PosControl.cpp AC_AttitudeControl: Add EKF optical flow noise gain scaler Cyber-Physical matches

e80b1c67cd
A91 AC_PosControl.cpp AC_AttitudeControl: Scale angle demand noise filter Cyber-Physical matches

12ea1d6e85
A92 AC_PosControl.cpp AC_PosControl: change keep_xy_I_terms to a parameter of init_xy_controller Initialization of Computing Type Initialization of Computing Type: line 503: +void AC_PosControl::init_xy_controller(bool reset_I) Initialization of Computing Type: This change introduces a resetting boolean variable for position controller's PID's I terms to ensure the state of automatically resetting to zero during the next run. d6e455417f
A93 AC_PosControl.cpp AC_PosControl: remove various unnecessary timing hacks Time and Space Model, Initialization of Computing Type Time and Space Model: line 524: + float dt = (now - _last_update_xy_ms) / 1000.0f;, Initialization of Computing Type: line 543: - _flags.force_recalc_xy = false; Time and Space Model: This change governs the periodic execution of velocity controller, Initialization of Computing Type: This change removes setting the recalculation of position in horizontal position controller using a special boolean computational type to avoid inconsistent initial states 557d339cf1
A94 AC_PosControl.cpp AC_AttControl: remove deprecated trigger_xy method Non-Control

2a5a133bbf
A95 AC_PosControl.cpp AC_PosControl: Fill _vel_desired.z for reporting Non-Control

a580cd83e8
A96 AC_PosControl.cpp AC_PosControl: reincarnate dead block of code Non-Control

9ebd0e9960
A97 AC_PosControl.cpp AC_PosControl: remove unnecessary set of desired_accel Software Maintenance

aeecc46f7b
A98 AC_PosControl.cpp AC_PosControl: Enable altitude limit checking. Cyber-Physical matches

02f3f96310
A99 AC_PosControl.cpp AC_PosControl: move alt limit to set_alt_target_from_climb_rate Cyber-Physical matches

07a0388f25
A100 AC_PosControl.cpp AC_AttitudeControl: Correct comment. Non-Control

14d76d158a
A101 AC_PosControl.cpp AC_PosControl: allow control of xy rate constraint behavior Cyber-Physical matches

3faca88423
A102 AC_PosControl.cpp AC_PosControl: rename xy_mode enum values Software Maintenance

186337f18e
A103 AC_PosControl.cpp AC_PosControl: modify accel_to_lean_angles to apply filters before yaw rotation Cyber-Physical matches

e9bbe062f3
A104 AC_PosControl.cpp AC_PosControl: integrate PID input filter Time and Space Model Time and Space Model: line 89: +void AC_PosControl::set_dt_xy(float dt_xy) Time and Space Model: This change adds a function that sets time delta in seconds for horizontal controller 8d4f0ec80c
A105 AC_PosControl.cpp AC_PosControl: use 2-axis PI controller Cyber-Physical matches

349f1aeceb
A106 AC_PosControl.cpp AC_PosControl: rename p_alt_pos to p_pos_z Software Maintenance

9866eaded1
A107 AC_PosControl.cpp AC_PosControl: remove THR_HOVER parameter Software Maintenance

7de5bccc93
A108 AC_PosControl.cpp AC_PosControl: fix dt sanity checking Precision & Accuracy, Time and Space Model Precision & Accuracy: line 531: +#define POSCONTROL_ACTIVE_TIMEOUT_SEC 0.2f, Time and Space Model: line 531: + if (dt > POSCONTROL_ACTIVE_TIMEOUT_SEC) { Precision & Accuracy: This change converts time representation to float for better numerical representation (actual value present in header file), Time and Space Model: This change alters the time representation from seconds to milliseconds to more accurately estimate the horizontal position controller activity. 9871b95586
A109 AC_PosControl.cpp AC_PosControl: 2d jerk constraint in accel_to_lean_angles Cyber-Physical matches

4408c1b935
A110 AC_PosControl.cpp AC_PosControl: add comments and defines for jerk limits Software Maintenance

965db2c7f7
A111 AC_PosControl.cpp AC_AttControl: init throttle_hover in constructor Cyber-Physical matches

50d2e98aa4
A112 AC_PosControl.cpp AC_PosControl: fix build Precision & Accuracy, Time and Space Model Precision & Accuracy: line 534: + if (dt > POSCONTROL_ACTIVE_TIMEOUT_MS*1.0e-3f) {, Time and Space Model: line 534: + if (dt > POSCONTROL_ACTIVE_TIMEOUT_MS*1.0e-3f) { Precision & Accuracy: This change converts time representation to float for better numerical representation, Time and Space Model: This change alters the time representation from seconds to milliseconds to more accurately estimate the horizontal position controller activity. 88ec13b10d
A113 AC_PosControl.cpp AC_PosControl: fix twitch when entering RTL Initialization of Computing Type Initialization of Computing Type: line 57: + _flags.reset_accel_to_lean_xy = true; Initialization of Computing Type: This change resets accel to lean angle step using a special boolean computational type to avoid inconsistent initial states bb74b8dec8
A114 AC_PosControl.cpp AC_PosControl: ensure throttle output above zero Cyber-Physical matches

9a3f48cc1f
A115 AC_PosControl.cpp AC_AttitudeControl: Formatting fix Non-Control

48fb487a8c
A116 AC_PosControl.cpp AC_PosControl: don't limit throttle any more Cyber-Physical matches

d14893fcd5
A117 AC_PosControl.cpp AC_PosControl: change int32/int16 to float in accel_to_throttle Precision & Accuracy Precision & Accuracy: line 382: + float thr_out = p+i+d+_throttle_hover; Precision & Accuracy: This change converts throttle output variable from int32 to float for better numerical representation. 7abd02baf2
A118 AC_PosControl.cpp AC_PosControl: remove accel error filter and set throttle output filter instead Cyber-Physical matches

3e0dab7b2d
A119 AC_PosControl.cpp AC_PosControl: add feed forward to Alt Hold Cyber-Physical matches

7cb3c4ba39
A120 AC_PosControl.cpp AC_PosControl: add relax Alt Hold controllers Initialization of Computing Type Initialization of Computing Type: line 173: + _flags.reset_accel_to_throttle = true; Initialization of Computing Type: This change resets the throttle acceleration using a special boolean computational type to avoid inconsistent initial states 0aca3c4be6
A121 AC_PosControl.cpp AC_PosControl: accessors to log z-axis vel and accel Non-Control

a632a57d79
A122 AC_PosControl.cpp AC_PosControl: add accel filter parameter Cyber-Physical matches

c2a6a0a9e2
A123 AC_PosControl.cpp AC_AttitudeControl: use new lowpass filter Cyber-Physical matches

87500d9d70
A124 AC_PosControl.cpp AC_PosControl: use LowPassFilterVector2f Cyber-Physical matches

738b1967ad
A125 AC_PosControl.cpp AC_PosControl: fix thr twitch when changing modes Cyber-Physical matches

12957867fd
A126 AC_PosControl.cpp AC_PosControl: add_takeoff_climb_rate method Cyber-Physical matches

31edd6a72b
A127 AC_PosControl.cpp AC_AttitudeControl: compiler warnings: apply is_zero(float) or is_equal(float) and float to doubles Precision & Accuracy Precision & Accuracy: line 5: +#include Precision & Accuracy: This change includes a different math library for performing math related operations. 1bca81eaed
A128 AC_PosControl.cpp AC_AttitudeControl: revert AP_Math class change Precision & Accuracy Precision & Accuracy: line 437: + if (is_zero(_ahrs.cos_pitch())) { Precision & Accuracy: This change modifies a different math library for performing math related operations. 326b0b33ea
A129 AC_PosControl.cpp AC_AttitudeControl: use M_PI_F instead of (float)M_PI Precision & Accuracy Precision & Accuracy: line 879: + float cos_pitch_target = cosf(_pitch_target*M_PI_F/18000); Precision & Accuracy: This change modifies a different math library for performing math related operations. 84ac721340
A130 AC_PosControl.cpp AC_AttitudeControl: removed fast_atan Precision & Accuracy Precision & Accuracy: line 879: + _pitch_target = constrain_float(atanf(-accel_forward/(GRAVITY_MSS * 100))*(18000/M_PI_F),-lean_angle_max, lean_angle_max); Precision & Accuracy: This change better represents the arctangent value (in radians) by replacing the fast_atan into atanf used for calculating the target pitch angle. 872583f441
A131 AC_PosControl.cpp AC_PosControl: recalc leash length on speed or accel change Cyber-Physical matches

d1808c645d
A132 AC_PosControl.cpp AC_PosControl: Change motors.get_throttle_out Software Maintenance

e87ca6de6f
A133 AC_PosControl.cpp AC_AttitudeControl: use set_desired_rate() on PID controllers Cyber-Physical matches

521dae1c65
A134 AC_PosControl.cpp AC_PosControl: init accel_last_z_cms Cyber-Physical matches

11fee21f06
A135 AC_PosControl.cpp AC_PosControl: explicitly set set_alt_target_from_climb_rate params Cyber-Physical matches

382f5d087f
A136 AC_PosControl.cpp AC_PosControl: init flags Cyber-Physical matches

d2f93dd379
A137 AC_PosControl.cpp AC_AttitudeControl: Remove unused takeoff jump #define Software Maintenance

14882bc6a8
A138 AC_PosControl.cpp AC_AttitudeControl: standardize inclusion of libaries headers Non-Control

d49f10d2e5
A139 AC_PosControl.cpp AC_PosControl: move accel constraint to accel_to_lean_angles Cyber-Physical matches

b58cc7ea8d
A140 AC_PosControl.cpp AC_PosControl: allow limiting lean angle to avoid alt loss Cyber-Physical matches

cf5db31053
A141 AC_PosControl.cpp AC_PosControl: add alt hold without feed forward Initialization of Computing Type Initialization of Computing Type: line 167: + _limit.pos_up = true; Initialization of Computing Type: This change sets the state of vertical position leash limit reached while going up to avoid any inconsistencies. f55c31a157
A142 AC_PosControl.cpp AC_PosControl: allow desired vel z to be above speed limit Cyber-Physical matches

245f7ce268
A143 AC_PosControl.cpp AC_PosControl: faster z-axis slowdown when over speed Exception Handling Exception Handling: line 186: + if (_vel_desired.z < _speed_down_cms && !is_zero(_speed_down_cms)) { Exception Handling: This change introduces predicate condition to check whether the maximum descent rate is not equal to zero to avoid computational failures. aec66c5db6
A144 AC_PosControl.cpp AC_PosControl: use_desvel_ff flag added Initialization of Computing Type Initialization of Computing Type: line 73: + _flags.use_desvel_ff_z = true; Initialization of Computing Type: This change initialise the z-axis desired velocity as feed forward to avoid any inconsistencies. 895a40893d
A145 AC_PosControl.cpp AC_PosControl: add set_jerk_xy Software Maintenance

ee0abb1750
A146 AC_PosControl.cpp AC_PosControl: add shift_pos_xy_target Cyber-Physical matches

550ba478c9
A147 AC_PosControl.cpp Remove use of PROGMEM Non-Control

831d8acca5
A148 AC_PosControl.cpp AC_PosControl: velocity controller uses feed-forward althold Cyber-Physical matches

323a527734
A149 AC_PosControl.cpp AC_PosControl: default z-axis controller to 400hz Time and Space Model Time and Space Model: line 40: + #define POSCONTROL_DT_400HZ 0.0025f Time and Space Model: This change modifies the frequency of update rate from 10hz to 400hz in position controller dbc8ce1d69
A150 AC_PosControl.cpp AC_PosControl: run velocity controller z-axis at 400hz Precision & Accuracy, Time and Space Model Precision & Accuracy: line 710: + float dt = (now - _last_update_xy_ms)*0.001f;, Time and Space Model: line 710: + float dt = (now - _last_update_xy_ms)*0.001f; Precision & Accuracy: This change modifies the time delta variable calculation that increase the speed of calculation, but it would sacricifice precision, Time and Space Model: This change modifies the time delta variable calculation that governs the execution of updating velocity controller. c9340dbeb6
A151 AC_PosControl.cpp AC_AttControl: use millis/micros/panic functions Precision & Accuracy, Time and Space Model Precision & Accuracy: line 320: + uint32_t now = AP_HAL::millis();, Time and Space Model: line 320: + uint32_t now = AP_HAL::millis(); Precision & Accuracy: This change includes a different math library for performing math related operations, Time and Space Model: This change introduces different library that modifies the time estimation. ea08b6115d
A152 AC_PosControl.cpp Global: rename min and max macros to uppercase Non-Control

2591261af6
A153 AC_PosControl.cpp AP_Math: Cleaned macro definitions Non-Control

5148e41c1a
A154 AC_PosControl.cpp AC_PosControl: accel_to_throttle outputs 0 to 1 Cyber-Physical matches

15be80a25d
A155 AC_PosControl.cpp AC_PosControl: relax_alt_hold_controllers accepts throttle in 0 to 1 range Cyber-Physical matches

c64a505906
A156 AC_PosControl.cpp AC_AttitudeControl: fixed accel limit trigonometry Cyber-Physical matches

23a64e1227
A157 AC_PosControl.cpp AP_Math: Replace the pythagorous Cyber-Physical matches

41661f815f
A158 AC_PosControl.cpp AC_AttitudeControl: set desired_vel for reporting purposes even when not used Exception Handling Exception Handling: line 146: + if (!is_zero(dt)) { Exception Handling: This change introduces predicate condition to check whether the time delta variable is not equal to zero to avoid computational failures. 1639e22b74
A159 AC_PosControl.cpp AC_PosControl: Move hover throttle calculation to AP_Motors Software Maintenance

dcbb071c07
A160 AC_PosControl.cpp AC_AttitudeControl: fixed factor of 1000 error in init_takeoff Cyber-Physical matches

d1b28aaed9
A161 AC_PosControl.cpp AC_PosControl: add get_horizontal_error Non-Control

630e5378da
A162 AC_PosControl.cpp AC_PosControl: fix relax_alt_hold_controllers Cyber-Physical matches

34055944cd
A163 AC_PosControl.cpp AC_PosControl: check Z-axis accel imax can always overpower hover throttle Cyber-Physical matches

fdcdcb0033
A164 AC_PosControl.cpp AC_PosControl: fix bug related to ekfNavVelGainScaler Cyber-Physical matches

77dbf99cee
A165 AC_PosControl.cpp AC_PosControl: add interface to override horizontal velocity process variable Initialization of Computing Type Initialization of Computing Type: + _flags.vehicle_horiz_vel_override = false; Initialization of Computing Type: This change tracks of whether the state of horizontal velocity process variable is overridden or not. 5a8db4f271
A166 AC_PosControl.cpp Global: remove mode line from headers Non-Control

152edf7189
A167 AC_PosControl.cpp AC_PosControl: set Alt_Hold filter for PID not just D Cyber-Physical matches

42672de606
A168 AC_PosControl.cpp AC_PosControl: add ekf position reset handling Cyber-Physical matches

1012333eef
A169 AC_PosControl.cpp AC_PosControl: remove unnecessary parentheses Non-Control

421524951f
A170 AC_PosControl.cpp AC_PosControl: remove alt_max Non-Control

ff042528fe
A171 AC_PosControl.cpp AC_AttitudeControl: added support for AP_AHRS_View Non-Control

1345bf8737
A172 AC_PosControl.cpp AC_PosControl: protect against POS_Z_P, ACCEL_Z_P divide-by-zero Exception Handling Exception Handling: line 277: + if (_p_pos_z.kP() <= 0.0f || _accel_z_cms <= 0.0f) { Exception Handling: This change introduces a predicate to avoid computational failure of divide-by-zero by using current position if proportional gain is very low or acceleration is zero 132979b12f
A173 AC_PosControl.cpp AC_PosControl: z-axis stopping point up to 3m above vehicle Cyber-Physical matches

3a397584a1
A174 AC_AttitudeControl.cpp AC_AttitudeControl: first draft of library First draft

715c8eaf02
A175 AC_AttitudeControl.cpp AC_AttControl: implement angle_boost Cyber-Physical matches

89b7e6b1c8
A176 AC_AttitudeControl.cpp AC_AttControl: add high level angle controllers Cyber-Physical matches

0e0a15f4a8
A177 AC_AttitudeControl.cpp AC_AttControl: accessor for lean angle max Software Maintenance

9fe4d883d0
A178 AC_AttitudeControl.cpp AC_AttControl: bug fix for yaw target handling Software Maintenance

ba3ba9e157
A179 AC_AttitudeControl.cpp AC_AttControl: leonard's body frame rate controller Cyber-Physical matches

4003b4da9b
A180 AC_AttitudeControl.cpp AC_AttControl: make ahrs, ins objects const Cyber-Physical matches

468be05867
A181 AC_AttitudeControl.cpp AC_AttControl: add rateef_rpy Cyber-Physical matches

a2b017abd2
A182 AC_AttitudeControl.cpp AC_AttControl: add RATE_RP_MAX, RATE_Y_MAX params Cyber-Physical matches

2dae0d68c5
A183 AC_AttitudeControl.cpp AC_AttControl: add slew_yaw Cyber-Physical matches

2db24659d0
A184 AC_AttitudeControl.cpp AC_AttControl: init_targets() clears body frame angle errors Cyber-Physical matches

eda376c7f6
A185 AC_AttitudeControl.cpp AC_AttControl: use trig values from ahrs Software Maintenance

d76180d605
A186 AC_AttitudeControl.cpp AC_AttControl: bug fix to yaw rate limit Software Maintenance

5f89e9e746
A187 AC_AttitudeControl.cpp AC_AttControl: Leaonard's rate feedforward Cyber-Physical matches

98224db1e4
A188 AC_AttitudeControl.cpp AC_AttControl: use motor accessors to set roll, pitch, yaw, thr Software Maintenance

f216cffb77
A189 AC_AttitudeControl.cpp AC_AttControl: ACRO fixes Cyber-Physical matches

65c2fc0cc6
A190 AC_AttitudeControl.cpp AC_AttControl: rename most methods Non-Control

a6ad51b38f
A191 AC_AttitudeControl.cpp AC_AttControl: replace APM_PI with AC_P Cyber-Physical matches

ff9f4fe6e7
A192 AC_AttitudeControl.cpp AC_AttControl: accel limit for roll, pitch yaw rates Cyber-Physical matches

b8d9bdb794
A193 AC_AttitudeControl.cpp AC_AttControl: fix @Units parameter descriptions Software Maintenance

d277b6cabd
A194 AC_AttitudeControl.cpp AC_AttControl: Stabilize input shaping Cyber-Physical matches

15f88c2a2b
A195 AC_AttitudeControl.cpp AC_AttControl: smoothing_gain to angle_ef_roll_pitch_rate_ef_yaw_smooth Cyber-Physical matches

25ee5d5dc8
A196 AC_AttitudeControl.cpp AC_AttControl: constrain earth frame yaw angle error Cyber-Physical matches

7bff8e9312
A197 AC_AttitudeControl.cpp AC_AttControl: increase default rp accel to 900deg/s/s Software Maintenance

5876a2fe47
A198 AC_AttitudeControl.cpp AC_AttControl: set roll, pitch, yaw rate control D term filters Time and Space Model Time and Space Model: line 62: +void AC_AttitudeControl::set_dt(float delta_sec) Time and Space Model: This change adds a function that sets time delta in seconds for attitude controller 0969e464fb
A199 AC_AttitudeControl.cpp Copter: Fix zero throttle flip issue Stabilize Cyber-Physical matches

1bdde31f6b
A200 AC_AttitudeControl.cpp AC_AttControl: rename init_targets to relax_bf_rate_controller Software Maintenance

5209598459
A201 AC_AttitudeControl.cpp AC_AttControl: rate compensation for yaw Cyber-Physical matches

922026c15c
A202 AC_AttitudeControl.cpp AC_AttControl: zero _accel_xyz_max stops feed forward Cyber-Physical matches

c24d293e1b
A203 AC_AttitudeControl.cpp AC_AttControl: clean up stabilize Software Maintenance

2bb63857fa
A204 AC_AttitudeControl.cpp AC_AttControl: formatting fixes Precision & Accuracy Precision & Accuracy: line 314: + if (_angle_ef_target.y > 9000.0f) { Precision & Accuracy: This change converts numerical number 9000 to float for better numerical operation and representation. 698cf934b8
A205 AC_AttitudeControl.cpp AC_AttControl: add earth frame angle constraints Cyber-Physical matches

7f734f38d6
A206 AC_AttitudeControl.cpp AC_AttControl: remove resolved To-Do Non-Control

a662f87ffb
A207 AC_AttitudeControl.cpp AC_AttControl: RATE_FF_ENAB param to disable rate feed forward Cyber-Physical matches

d9c966c927
A208 AC_AttitudeControl.cpp AC_AttControl: check accel_rp_max instead of rate_bff_ff_enabled Software Maintenance

b57c0dabf6
A209 AC_AttitudeControl.cpp AC_AttControl: angle_ef_roll_pitch_rate_ef_yaw supports zero yaw accel Cyber-Physical matches

130eb07d48
A210 AC_AttitudeControl.cpp AC_AttControl: allow enabling/disabling feedforward and accel limiting Cyber-Physical matches

46f25c52a4
A211 AC_AttitudeControl.cpp AC_AttControl: fixed typo in parameter description Non-Control

971411e0db
A212 AC_AttitudeControl.cpp AC_AttControl: cast fabs to float to resolve compiler warning Precision & Accuracy Precision & Accuracy: line 111: + rate_ef_desired = safe_sqrt(2.0f*_accel_rp_max*((float)fabs(angle_to_target)-(linear_angle/2.0f))); Precision & Accuracy: This change converts the an angle variable in desired rate calculation into float for better numerical representation. 0f7178e447
A213 AC_AttitudeControl.cpp AC_AttitudeControl: Use bias-corrected angular rates instead of raw gyro measurements Cyber-Physical matches

6e66cf43cb
A214 AC_AttitudeControl.cpp AC_AttControl: Fix feedforward behavior Cyber-Physical matches

2889f5abc4
A215 AC_AttitudeControl.cpp Copter: Acro use same error limit in all three axis Cyber-Physical matches

fb55658c91
A216 AC_AttitudeControl.cpp AC_AttControl: remove duplicate rate_ef_desired to resolve compiler warning Software Maintenance

eebd32f306
A217 AC_AttitudeControl.cpp AC_AttControl: FF and accel limiting off by default Software Maintenance

c2f8571f37
A218 AC_AttitudeControl.cpp Copter: ACRO Error calculation fix Cyber-Physical matches

90dc9411a5
A219 AC_AttitudeControl.cpp Copter: AC_ATT correct yaw error calculation Cyber-Physical matches

329118b7c9
A220 AC_AttitudeControl.cpp AC_AttControl: set rate D term filter from ins filter Cyber-Physical matches

58257e3858
A221 AC_AttitudeControl.cpp AC_AttControl: div-by-zero check for bf-to-ef conversion Exception Handling Exception Handling: line 439: + if (_ahrs.cos_pitch() == 0.0f) { Exception Handling: This change introduces a predicate that checks whether the pitch variable is zero to avoid divide-by-zero computational failure. c45338f080
A222 AC_AttitudeControl.cpp AC_AttControl: remove debug message Non-Control

3e0b573dfe
A223 AC_AttitudeControl.cpp AC_AttControl: bug fix for ef target during acro Cyber-Physical matches

5a66ff1ef9
A224 AC_AttitudeControl.cpp AC_AttControl: remove some old comments Non-Control

f65e81cb07
A225 AC_AttitudeControl.cpp AC_AttControl: add sqrt_controller Cyber-Physical matches

fc898a00a3
A226 AC_AttitudeControl.cpp AC_AttitudeControl: use sqrt_controller function Cyber-Physical matches

0c4a489491
A227 AC_AttitudeControl.cpp AC_AttitudeControl: cleanup angle_ef_roll_pitch_rate_ef_yaw_smooth Cyber-Physical matches

7224669399
A228 AC_AttitudeControl.cpp AC_AttControl: bf yaw control uses input filtered PID Cyber-Physical matches

eb084f7c58
A229 AC_AttitudeControl.cpp AC_AttControl: get_max_rate_step_bf_roll, pitch and yaw Cyber-Physical matches

9833c91b2b
A230 AC_AttitudeControl.cpp AC_AttControl: separate accel max for roll, pitch, yaw Cyber-Physical matches

792b2a2eb3
A231 AC_AttitudeControl.cpp AC_AttControl: accel limiting for angular control only if feed forward enabled Cyber-Physical matches

20de383084
A232 AC_AttitudeControl.cpp AC_AttitudeControl: relax_bf_rate_controller resets rate integrators Cyber-Physical matches

e2383581cc
A233 AC_AttitudeControl.cpp AC_AttitudeControl: sqrt controller on Stab Cyber-Physical matches

afcd1c6ec3
A234 AC_AttitudeControl.cpp AC_AttitudeControl: throttle is a float Precision & Accuracy Precision & Accuracy: line 713: + float throttle_out; Precision & Accuracy: This change converts the throttle output variable from int16 to float for better numerical representation. 5c2341009a
A235 AC_AttitudeControl.cpp AC_AttitudeControl: modify throttle interface to specify stabilization Initialization of Computing Type Initialization of Computing Type: line 699: + _motors.set_stabilizing(true); Initialization of Computing Type: This change introduces motor stabilizing state using a special boolean computational type to avoid inconsistent initial states f3555d0d43
A236 AC_AttitudeControl.cpp AC_AttitudeControl: rework angle_boost Cyber-Physical matches

518e798f53
A237 AC_AttitudeControl.cpp AC_AttitudeControl: add throttle filter cutoff parameter to set_throttle_out functions Cyber-Physical matches

b7f7624aac
A238 AC_AttitudeControl.cpp AC_AttitudeControl: add comment Non-Control

24b8d32b0e
A239 AC_AttitudeControl.cpp AC_AttitudeControl: constrain _angle_boost to avoid overflow Cyber-Physical matches

ab2532a609
A240 AC_AttitudeControl.cpp AC_AttitudeControl: compiler warnings: apply is_zero(float) or is_equal(float) and float to doubles Precision & Accuracy Precision & Accuracy: line 437: + if (AP_Math::is_zero(_ahrs.cos_pitch())) { Precision & Accuracy: This change modifies a different math library for performing math related operations. 1bca81eaed
A241 AC_AttitudeControl.cpp AC_AttitudeControl: revert AP_Math class change Precision & Accuracy Precision & Accuracy: line 675: + if (is_zero(_accel_roll_max)) { Precision & Accuracy: This change modifies a different math library for performing math related operations. 326b0b33ea
A242 AC_AttitudeControl.cpp AC_AttitudeControl: Non-functional comment change Non-Control

915236f1f5
A243 AC_AttitudeControl.cpp AC_AttitudeControl: Remove To-Do comments for Attitude Rate logging. Non-Control

23adf2773c
A244 AC_AttitudeControl.cpp AC_AttitudeControl: use set_desired_rate() on PID controllers Cyber-Physical matches

521dae1c65
A245 AC_AttitudeControl.cpp AC_AttControl: add shift_ef_yaw_target Cyber-Physical matches

1e3e65e443
A246 AC_AttitudeControl.cpp AC_AttControl: get_boosted_throttle purely virtual Software Maintenance

93dd7dd970
A247 AC_AttitudeControl.cpp AC_AttControl: relax earth frame rate targets along with bf Cyber-Physical matches

0bf1d04172
A248 AC_AttitudeControl.cpp AC_AttitudeControl: standardize inclusion of libaries headers Non-Control

d49f10d2e5
A249 AC_AttitudeControl.cpp AC_AttControl: limit lean angle from throttle Cyber-Physical matches

29ff5035b4
A250 AC_AttitudeControl.cpp AC_AttControl: rename set_throttle_out parameter Software Maintenance

c8872e082d
A251 AC_AttitudeControl.cpp Remove use of PROGMEM Non-Control

831d8acca5
A252 AC_AttitudeControl.cpp AC_AttitudeControl: reserve parameter IDs Software Maintenance

6784fd8625
A253 AC_AttitudeControl.cpp AC_AttitudeControl: Add Hover Roll Trim functionality for helicopters. Cyber-Physical matches

0b33ef3862
A254 AC_AttitudeControl.cpp AC_AttControl: minor comment fix Software Maintenance

4b41710261
A255 AC_AttitudeControl.cpp AC_AttitudeControl: fixed one usage of zero accel limits Cyber-Physical matches

58f0abaf4c
A256 AC_AttitudeControl.cpp AC_AttitudeControl: change internals to use radians instead of centidegrees Cyber-Physical matches

7330de86e5
A257 AC_AttitudeControl.cpp AC_AttitudeControl: rename and modify frame_conversion functions to follow conventions Exception Handling Exception Handling: line 508: + if (is_zero(cos_theta)) { Exception Handling: This change introduces a predicate that checks whether the cosine theta value is zero to avoid divide-by-zero computational failure. 06c8457efd
A258 AC_AttitudeControl.cpp AC_AttitudeControl: extensive renaming and recommenting Cyber-Physical matches

1afab89991
A259 AC_AttitudeControl.cpp AC_AttitudeControl: keep _att_target_euler_deriv_rads updated in euler_angle_roll_pitch_yaw Cyber-Physical matches

edda7e4e1e
A260 AC_AttitudeControl.cpp AC_AttitudeControl: minor comment changes and reorganization Software Maintenance

8b886bc479
A261 AC_AttitudeControl.cpp AC_AttitudeControl: quaternion acro controller Cyber-Physical matches

f8c709478a
A262 AC_AttitudeControl.cpp AC_AttitudeControl: correct bugs found in review Software Maintenance

bba360ea2b
A263 AC_AttitudeControl.cpp AC_AttitudeControl: add input_ prefix to input shaper functions Software Maintenance

5919e95635
A264 AC_AttitudeControl.cpp AC_AttitudeControl: add input_att_quat_bf_ang_vel and use for ACRO Software Maintenance

41e580e53a
A265 AC_AttitudeControl.cpp AC_AttitudeControl: fixup more names Software Maintenance

0baf86c485
A266 AC_AttitudeControl.cpp AC_AttitudeControl: naming changes in response to Leonard's review Software Maintenance

162d2a9112
A267 AC_AttitudeControl.cpp AC_AttitudeControl: properly protect sqrt_controller from nonpositive acceleration limits Cyber-Physical matches

b8223771d3
A268 AC_AttitudeControl.cpp AC_AttitudeControl: fix regression in angular velocity controller Software Maintenance

846ee7d2af
A269 AC_AttitudeControl.cpp AC_AttitudeControl: rename local variable to match naming convention Software Maintenance

3a06edcee3
A270 AC_AttitudeControl.cpp AC_AttControl: remove comment, fix formatting Non-Control

02eda4dcab
A271 AC_AttitudeControl.cpp AC_AttitudeControl: reflect renamed function in AP_AHRS Software Maintenance

ee8090e25f
A272 AC_AttitudeControl.cpp AC_AttitudeControl: add helper functions to retrieve rotation matrices Non-Control

3d4bd92b48
A273 AC_AttitudeControl.cpp AC_AttitudeControl: rotate angular velocity feedforward into vehicle frame Cyber-Physical matches

ae3357baee
A274 AC_AttitudeControl.cpp AC_AttitudeControl: convert euler rates to angular velocity using the correct attitude Cyber-Physical matches

829d6037fc
A275 AC_AttitudeControl.cpp AC_AttitudeControl: modify comment on kinematic correction feedforward Software Maintenance

46e6ff3ca9
A276 AC_AttitudeControl.cpp AC_AttControl: use ahrs get_rotation_body_to_ned Non-Control

86bb03aa79
A277 AC_AttitudeControl.cpp AC_AttControl: add ANGLE_BOOST param Cyber-Physical matches

5ddd332277
A278 AC_AttitudeControl.cpp AC_AttitudeControl: add attitude_controller_run functions, call from input functions Cyber-Physical matches

e946e047e6
A279 AC_AttitudeControl.cpp AC_AttControl: angle_boost to float Precision & Accuracy Precision & Accuracy: line 613: + _angle_boost = 0.0f; Precision & Accuracy: This change converts the boosting throttle variable into floating point for better numerical representation. c0f209fa42
A280 AC_AttitudeControl.cpp AC_AttControl: add get_throttle_in accessor Non-Control

2822b93cd4
A281 AC_AttitudeControl.cpp AC_AttControl: roll, pitch, yaw output to motors in -1 to +1 range Cyber-Physical matches

979534279a
A282 AC_AttitudeControl.cpp AC_AttControl: add angle and rate PIDs Time and Space Model Time and Space Model: line 72: -void AC_AttitudeControl::set_dt(float delta_sec) Time and Space Model: This change removes a function that sets time delta in seconds for attitude controller 17c9db08f3
A283 AC_AttitudeControl.cpp AC_AttControl: remove scaling for centi-degrees and legacy motor input Non-Control

b30606bb22
A284 AC_AttitudeControl.cpp AC_AttControl: remove unused call to motors.set_stabilizing Non-Control

4a06ca4be2
A285 AC_AttitudeControl.cpp AC_AttitudeControl: added monitoring of controller error Non-Control

6330060e49
A286 AC_AttitudeControl.cpp AC_AttitudeControl: Move set_throttle_out to _Multi and _Heli Software Maintenance

35ef761deb
A287 AC_AttitudeControl.cpp AC_AttitudeControl: update throttle rpy mix on every iteration Cyber-Physical matches

b7431b7d0c
A288 AC_AttitudeControl.cpp AC_AttitudeControl: multicopter specific rate_controller_run Non-Control

7ff0fcb25d
A289 AC_AttitudeControl.cpp AC_AttitudeControl: add TC for Alt_Hold angle limit Cyber-Physical matches

3d27ecca92
A290 AC_AttitudeControl.cpp AC_AttitudeControl: move get_althold_lean_angle_max to parent class Software Maintenance

dafc45eb26
A291 AC_AttitudeControl.cpp AC_AttitudeControl: add ATC_ANG_LIM_TC parameter Time and Space Model Time and Space Model: + AP_GROUPINFO("ANG_LIM_TC", 16, AC_AttitudeControl, _angle_limit_tc, AC_ATTITUDE_CONTROL_ANGLE_LIMIT_TC_DEFAULT), Time and Space Model: This change introduces a time variable called angle limit time constant to maintain altitude. 096bdd67f8
A292 AC_AttitudeControl.cpp AC_AttitudeControl: enhanced quaternion attitude controller Cyber-Physical matches

8737f6b62d
A293 AC_AttitudeControl.cpp AC_AttutudeControl: Yaw shift fix Cyber-Physical matches

80bda572ba
A294 AC_AttitudeControl.cpp AC_AttControl: add reset_rate_controller_I_terms() Cyber-Physical matches

011bc0a350
A295 AC_AttitudeControl.cpp AC_AttControl: reduce max_rate_step based on hover throttle Cyber-Physical matches

29d4790fc7
A296 AC_AttitudeControl.cpp Global: remove mode line from headers Non-Control

152edf7189
A297 AC_AttitudeControl.cpp AC_AttControl: do not limit rate if ATC_ACCEL_MAX param is zero Cyber-Physical matches

ea0e413b04
A298 AC_AttitudeControl.cpp AC_AttitudeControl: use FF from AC_PID Cyber-Physical matches

5acbf5d16e
A299 AC_AttitudeControl.cpp AC_AttitudeControl: use gyro_latest Cyber-Physical matches

67097c8d59
A300 AC_AttitudeControl.cpp AC_AttitudeControl: Use SI units conventions in parameter units Software Maintenance

188dfb6936
A301 AC_AttitudeControl.cpp AC_AttControl: add step input for autotune Cyber-Physical matches

0544cf1d82
A302 AP_Baro.cpp Baro: added get_altitude() and get_climb_rate() interfaces First draft

c387edd74c
A303 AP_Baro.cpp Barometer: fixed airstart for APM Cyber-Physical matches

5bccfbd94c
A304 AP_Baro.cpp AP_Baro: use DerivativeFilter in barometer climb rate Cyber-Physical matches

f9fc7aafe7
A305 AP_Baro.cpp AP_Baro: change to a 7 point DerivativeFilter for climb rate Cyber-Physical matches

185c6e5b32
A306 AP_Baro.cpp AP_Baro: improved barometer averaging Precision & Accuracy Precision & Accuracy: line 38: + float ground_pressure = 0; Precision & Accuracy: This change converts the ground pressure variable from int32 to float for better numerical representation. f501503eb0
A307 AP_Baro.cpp AP_Baro: the DerivativeFilter now handles duplicate data Non-Control

a7b9aff79f
A308 AP_Baro.cpp AP_Param: update remaining libraries for new constructor syntax Non-Control

518d6365ff
A309 AP_Baro.cpp uncrustify libraries/AP_Baro/AP_Baro.cpp Software Maintenance

6f02a645c3
A310 AP_Baro.cpp AP_Baro: port to AP_HAL Non-Control

5d40074e4e
A311 AP_Baro.cpp AP_Baro: robust calibration Time and Space Model Time and Space Model: line 45: + uint32_t tstart = hal.scheduler->millis(); Time and Space Model: This change governs the periodic execution of claiberating the barometer 60f7788be4
A312 AP_Baro.cpp AP_Baro: uses scheduler panic Non-Control

d92e8045c1
A313 AP_Baro.cpp Update floating point calculations to use floats instead of doubles. Precision & Accuracy Precision & Accuracy: line 26: + float temp = g.throttle_slewrate * G_Dt * 0.01f * fabsf(g.channel_throttle.radio_max - g.channel_throttle.radio_min); Precision & Accuracy: This change returns the absolute value from double to float for better numerical representation. 5631f865b2
A314 AP_Baro.cpp Add AVR compatibility header for missing math.h definitions. Precision & Accuracy Precision & Accuracy: line 6: +#include Precision & Accuracy: This change includes a different math library for performing math related operations. 4fa7bb1486
A315 AP_Baro.cpp AP_Baro: TEMP parameter comment fix Non-Control

aa2b10f044
A316 AP_Baro.cpp AP_Baro: more precise altitude calculation on PX4 Cyber-Physical matches

3b98bbd159
A317 AP_Baro.cpp AP_Baro: added units to baro documentation Software Maintenance

61361dac9b
A318 AP_Baro.cpp AP_Baro: added get_EAS2TAS() Cyber-Physical matches

7bdb098e77
A319 AP_Baro.cpp AP_Baro: added GND_ALT_OFFSET parameter Cyber-Physical matches

0f72401d8d
A320 AP_Baro.cpp AP_Baro: use fabs() not abs() Precision & Accuracy Precision & Accuracy: line 151: + if ((fabs(_altitude - _last_altitude_EAS2TAS) < 100.0f) && (_EAS2TAS != 0.0f)) { Precision & Accuracy: This change returns the absolute value in double integer representation for better numerical representation. 5607c89df0
A321 AP_Baro.cpp libraries: update license header to GPLv3 Software Maintenance

97b7130bb9
A322 AP_Baro.cpp AP_Baro: cleaned up temperature and pressure units Cyber-Physical matches

fc119d9b80
A323 AP_Baro.cpp AP_Baro: added update_calibration() method Cyber-Physical matches

487caea3a5
A324 AP_Baro.cpp AP_Baro: use HAL_CPU_CLASS in baro driver Cyber-Physical matches

5e3c4441dc
A325 AP_Baro.cpp AP_Baro: changed HIL driver to use floats and better handle starup Cyber-Physical matches

2cd781997f
A326 AP_Baro.cpp AP_Baro: expose get_altitude_difference() Cyber-Physical matches

41dd280739
A327 AP_Baro.cpp AP_Baro: avoid some float conversion warnings Precision & Accuracy Precision & Accuracy: line 184: + if ((fabsf(_altitude - _last_altitude_EAS2TAS) < 100.0f) && (_EAS2TAS != 0.0f)) { Precision & Accuracy: This change returns the absolute value in floating point representation for better numerical representation. 74c3b404ee
A328 AP_Baro.cpp AP_Baro: minor improvements to Baro HIL code health check Software Maintenance

a458f1bf5f
A329 AP_Baro.cpp Baro: make get_altitude_difference const Software Maintenance

e9fbea9497
A330 AP_Baro.cpp Baro: add altitude sanity check Exception Handling Exception Handling: line 177: + if (isnan(alt) || isinf(alt)) { Exception Handling: This change introduces a predicate that checks whether the altitude variable is infinite or undefined to avoid computational failures. 330d883f97
A331 AP_Baro.cpp Baro: minor param description updates Software Maintenance

3a81732721
A332 AP_Baro.cpp AP_Baro: add set_external_temperature() Time and Space Model Time and Space Model: line 240: + if (_last_external_temperature_ms != 0 && hal.scheduler->millis() - _last_external_temperature_ms < 10000) { Time and Space Model: This change monitors the frequency of external temperature measurements d404cc6542
A333 AP_Baro.cpp AP_Baro: split into frontend/backend Time and Space Model, Exception Handling Time and Space Model: line 274: +

uint32_t now = hal.scheduler->millis();, Exception Handling:
line 257: +

if (_num_drivers == 0 || _num_sensors == 0 || drivers[0] == NULL) {
Time and Space Model: This change governs the periodic execution of barometer driver updates, Exception Handling: This change introduces predicate conditions to avoid computational failures when initializing the barometer driver. 5bb57a31f7
A334 AP_Baro.cpp AP_Baro: BMP085 driver done, but untested Cyber-Physical matches

f1891cea1f
A335 AP_Baro.cpp AP_Baro: fixed baro on NavIO Non-Control

8359c082ca
A336 AP_Baro.cpp AP_Baro: added all_healthy() method Cyber-Physical matches

1c2a6deaaf
A337 AP_Baro.cpp AP_Baro: fixed build after rebase with all_healthy() Software Maintenance

0a8677b3e2
A338 AP_Baro.cpp AP_Baro: only allow calibrated sensors to be used Initialization of Computing Type Initialization of Computing Type: line 83: + sensors[i].calibrated = true; Initialization of Computing Type: This change sets a sensor calibration variable to a special computational type to avoid inconsistent initial states b1d8df3d54
A339 AP_Baro.cpp Baro: init external_temperature in constructor Cyber-Physical matches

c93e7a69a7
A340 AP_Baro.cpp AP_Baro: added hil_mode support Initialization of Computing Type Initialization of Computing Type: line 70: + _hil_mode(FALSE) Initialization of Computing Type: This change sets the hardware in the loop variable mode to a special computational type to avoid inconsistent initial states. ac3dd87790
A341 AP_Baro.cpp AP_Baro: fixed baro startup on PXF cape Time and Space Model Time and Space Model: line 102: + hal.scheduler->delay(10); Time and Space Model: This change delays the periodic execution of barometer calibration. 1f70b34cbc
A342 AP_Baro.cpp AP_Baro: load only HIL backend for hil_mode Non-Control

2e9d2e6449
A343 AP_Baro.cpp AP_Baro: add get_air_density_ratio Non-Control

f381ef93e8
A344 AP_Baro.cpp Baro: get_air_density_ratio gets div-by-zero check Exception Handling Exception Handling: line 215: + if (eas2tas > 0.0f) { Exception Handling: This change introduces a predicate condition to check if the true airspeed ratio is greater than zero to avoid computational failure of divide-by-zero and square of negative number. 1b381b5675
A345 AP_Baro.cpp AP_Baro: compiler warnings: apply is_zero(float) or is_equal(float) Precision & Accuracy Precision & Accuracy: line 200: + if ((fabsf(altitude - _last_altitude_EAS2TAS) < 100.0f) && !AP_Math::is_zero(_EAS2TAS)) { Precision & Accuracy: This change includes a different math library for performing math related operations. 0b29848277
A346 AP_Baro.cpp AP_BARO: revert AP_Math class change Precision & Accuracy Precision & Accuracy: line 321: + sensors[i].healthy = (now - sensors[i].last_update_ms < 500) && !is_zero(sensors[i].pressure); Precision & Accuracy: This change includes a different math library for performing math related operations. 48fb7f8159
A347 AP_Baro.cpp AP_Baro: use ground_temperature instead of calibration_temperature for alt calculation Cyber-Physical matches

23787cf695
A348 AP_Baro.cpp AP_Baro: added MS5607 support Cyber-Physical matches

d407737434
A349 AP_Baro.cpp Baro: update climb rate only if healthy Cyber-Physical matches

5732a6a144
A350 AP_Baro.cpp AP_Baro: standardize inclusion of libaries headers Non-Control

f18802bc46
A351 AP_Baro.cpp AP_Baro - fix BARO_ALT_OFFSET param Cyber-Physical matches

749c0c190f
A352 AP_Baro.cpp AP_Baro: allow selection of primary barometer and add 3rd baro Cyber-Physical matches

a5462fec0b
A353 AP_Baro.cpp AP_Baro: Add MS5637 over I2C to init() Cyber-Physical matches

9a98eb35fc
A354 AP_Baro.cpp AP_Baro: Fix typo Non-Control

c53e9d1ff0
A355 AP_Baro.cpp AP_Baro: support MS5611 on second i2c bus Cyber-Physical matches

386547427d
A356 AP_Baro.cpp Remove use of PSTR Software Maintenance

2c38e31c93
A357 AP_Baro.cpp Remove use of PROGMEM Non-Control

831d8acca5
A358 AP_Baro.cpp AP_Baro: remove check for AVR CPUs Cyber-Physical matches

8eef58a8c2
A359 AP_Baro.cpp AP_Baro: notify GCS of calibration Software Maintenance

1b13315092
A360 AP_Baro.cpp AP_Baro: don't notify the GCS of new pressure reference too often Time and Space Model Time and Space Model: line 173: + uint32_t now = hal.scheduler->millis(); Time and Space Model: This change monitors the periodic execution to avoid very frequent reading of barometer sensor value. 840c9e65bb
A361 AP_Baro.cpp AP_Baro: use millis/micros/panic functions Precision & Accuracy, Time and Space Model Precision & Accuracy: line 106: + if (AP_HAL::millis() - tstart > 500) {, Time and Space Model: line 103: + uint32_t tstart = AP_HAL::millis(); Precision & Accuracy: This change includes a different math library for performing math related operations, Time and Space Model: This change introduces different library that modifies the time estimation. 5a280838f8
A362 AP_Baro.cpp AP_Baro: reduce header scope Software Maintenance

81a298c9c8
A363 AP_Baro.cpp AP_Baro: added qflight driver Cyber-Physical matches

1f4e503d91
A364 AP_Baro.cpp AP_Baro: added QURT driver Cyber-Physical matches

ff44a63007
A365 AP_Baro.cpp AP_Baro: tolerate GND_ALT_OFFSET step inputs Cyber-Physical matches

f435c5ee50
A366 AP_Baro.cpp AP_Baro: BMP085: use I2CDevice interface Cyber-Physical matches

b05954660a
A367 AP_Baro.cpp AP_Baro: MS5611: Use AP_HAL::Device abstraction Cyber-Physical matches

f1ade970a3
A368 AP_Baro.cpp AP_Baro: prevent bad ground pressure from making a board unbootable Exception Handling Exception Handling: line 367: + if (is_zero(ground_pressure) || isnan(ground_pressure) || isinf(ground_pressure)) { Exception Handling: This change adds predicate conditions that checks whether the ground pressure variable is infinite or undefined. 0a72c2bbd5
A369 AP_Baro.cpp Add @Volatile, @ReadOnly support Software Maintenance

cae7ea0d13
A370 AP_Baro.cpp AP_Baro; allow for exact replay of baro data Non-Control

0b71652afc
A371 AP_Baro.cpp AP_Baro: allow setHIL to set last update time Cyber-Physical matches

8b7bf5cf7a
A372 AP_Baro.cpp AP_Baro: slow down the LPF for slewing to a new GND_ALT_OFFSET. Instead of a couple seconds, make it about 15sec. This makes TECS happy by not glitching the height demand as much. When applied too fast the TECS height demand causes a large single oscillation as it chases the filter lag. Time and Space Model Time and Space Model: line 352: + _alt_offset_active = (0.95f*_alt_offset_active) + (0.05f*_alt_offset); Time and Space Model: This change deals with slowing down the response time of low pass filter from couple of seconds to 15sec. d55050e5e3
A373 AP_Baro.cpp AP_Baro: coverity scan - variables not initialized in constructor Initialization of Computing Type Initialization of Computing Type: line 91: - _hil_mode(FALSE) Initialization of Computing Type: This change removes the hardware in the loop variable mode to a special computational type to avoid inconsistent initial states. 8d2872d3ab
A374 AP_Baro.cpp Revert "AP_Baro: coverity scan - variables not initialized in constructor" Initialization of Computing Type Initialization of Computing Type: line 91: + _hil_mode(false) Initialization of Computing Type: This change sets the hardware in the loop variable mode to a special computational type to avoid inconsistent initial states. 1d81df8144
A375 AP_Baro.cpp AP_Baro: remove zero-init in constructor Initialization of Computing Type Initialization of Computing Type: line 91: - _hil_mode(FALSE) Initialization of Computing Type: This change removes the hardware in the loop variable mode to a special computational type to avoid inconsistent initial states. 84ce499a0d
A376 AP_Baro.cpp AP_Baro: MS5611: always use timer thread Cyber-Physical matches

929348ff75
A377 AP_Baro.cpp Global: remove mode line from headers Non-Control

152edf7189
A378 AP_Baro.cpp AP_Baro: add missing parameter metadata Software Maintenance

dbecb1bc25
A379 AP_Baro.cpp Global: To nullptr from NULL. Cyber-Physical matches

c808ee2f49
A380 AP_Baro.cpp AP_Baro: select in-tree vs PX4 drivers at runtime Cyber-Physical matches

72c2e3a4d5
A381 AP_Baro.cpp AP_Baro: enable dual baro on PH2 Cyber-Physical matches

66026100c3
A382 AP_Baro.cpp AP_Baro: fixed FMUv1 baro and enable in-tree driver for PHMINI Cyber-Physical matches

565f1986e0
A383 AP_Baro.cpp AP_Baro: switch pixracer to always use in-tree drivers Cyber-Physical matches

b8c789cf35
A384 AP_Baro.cpp AP_Baro: use in-tree drivers for PH2SLIM Cyber-Physical matches

d716bbedee
A385 AP_Baro.cpp AP_Baro: setup for new board PX4 IDs Cyber-Physical matches

41b132e576
A386 AP_Baro.cpp AP_Baro: added MS5611 probing, and support 3 baros on Pixhawk2 Cyber-Physical matches

f2246326bb
A387 AP_Baro.cpp AP_Baro: added GND_EXT_BUS option Cyber-Physical matches

eea7758a63
A388 AP_Baro.cpp AP_Baro: Changed if statements to switch statement. Non-Control

753638851e
A389 AP_Baro.cpp AP_Baro: Add Bosch BMP280 driver Cyber-Physical matches

1ce5e5360a
A390 AP_Baro.cpp AP_Baro: Add support for water pressure and Sub Cyber-Physical matches

613bc46592
A391 AP_Baro.cpp AP_Baro: fixed spelling in comment Non-Control

fb214ef95f
A392 AP_Baro.cpp AP_Baro: support AUAV21 board Cyber-Physical matches

d5cad2ae44
A393 AP_Baro.cpp Add support for baro on aerofc Cyber-Physical matches

00c2949dfb
A394 AP_Baro.cpp AP_Baro: don't compile drivers for devices that don't use them Cyber-Physical matches

fb24a03faf
A395 AP_Baro.cpp AP_Baro: Limit ground temperature used for the altitude Exception Handling Exception Handling: line 310: + if (is_zero(_user_ground_temperature)) { Exception Handling: This change introduces a predicate condition that checks whether the ground temperature variable is zero to avoid inconsistent input. c37209a8d5
A396 AP_Baro.cpp AP_Baro: support for UAVCAN connected barometers Cyber-Physical matches

331419a51e
A397 AP_Baro.cpp AP_Baro: removal of legacy UAVCAN support Cyber-Physical matches

fd866d3e20
A398 AP_Baro.cpp AP_Baro: Fix GND_EXT_BUS @Values formatting Software Maintenance

96f503d9d1
A399 AP_Baro.cpp AP_Baro: use sensor_config_error() Software Maintenance

cbea29ad71
A400 AP_Baro.cpp AP_Baro: moved SITL baro to standard sensor backend model Non-Control

ee4161fa62
A401 AP_Baro.cpp AP_Baro: added set_pressure_correction() Non-Control

9bdf971336
A402 AP_Baro.cpp AP_Baro: Use SI units conventions in parameter units Software Maintenance

ed916327fc
A403 AP_Baro.cpp AP_Baro: enumeration and multiple interfaces support Cyber-Physical matches

6e6efa7e1b
A404 AP_Baro.cpp Baro: health check that values are changing Cyber-Physical matches

6982e58cf2
A405 AC_WPNav.cpp AC_WPNav: first implementation First draft

b92c4097d2
A406 AC_WPNav.cpp AC_WPNav: add distance and bearing to target methods Time and Space Model Time and Space Model: line 75: + uint32_t now = hal.scheduler->millis(); Time and Space Model: This change governs the periodic execution of loiter controller. 39bc3800c9
A407 AC_WPNav.cpp AC_WPNav: bug fix to dt calculation Time and Space Model Time and Space Model: line 189: + float dt = (now - _last_update) / 1000.0f; Time and Space Model: This change governs the periodic execution of loiter controller. 0d70ba1030
A408 AC_WPNav.cpp AC_WPNav: add get_target_alt Non-Control

60060d8184
A409 AC_WPNav.cpp AC_WPNav: add set_loiter_target to use velocity Exception Handling Exception Handling: line 47: + if( _pid_pos_lat->kP() <= 0.1 ) { Exception Handling: This change introduces a predicate condition to avoid proportional gain of PID from computational failure of divide-by-zero. 8ec7fd1c9c
A410 AC_WPNav.cpp AC_WPNav: bug fix for track covered being 2D Precision & Accuracy Precision & Accuracy: line 161: + cross_track_dist = fabsf(curr.x - _destination.x); Precision & Accuracy: This change returns the absolute value of floating point values for better numerical representation. afd2f82768
A411 AC_WPNav.cpp AC_WPNav: add angle limits and set from AC's throttle controller Cyber-Physical matches

f82ce449d7
A412 AC_WPNav.cpp AC_WPNav: Leonard's loiter target smoothing Cyber-Physical matches

926c404994
A413 AC_WPNav.cpp AC_WPNav: Leonard's ff loiter and 3d wp nav Cyber-Physical matches

0ccdce1b22
A414 AC_WPNav.cpp AC_WPNAV: change loiter controllers to use floats Precision & Accuracy Precision & Accuracy: + float linear_distance; // the distace we swap between linear and sqrt. Precision & Accuracy: This change converts distance variable from int16 to float for better numerical representation. 31838b2865
A415 AC_WPNav.cpp AC_WPNav: limit max loiter position error Cyber-Physical matches

6dbcbdcb43
A416 AC_WPNav.cpp AC_WPNav: advance track fixes Cyber-Physical matches

74e1c2e660
A417 AC_WPNav.cpp AC_WPNav: Leonard's 3d leash calculator Cyber-Physical matches

c6b68c7843
A418 AC_WPNav.cpp AC_WPNav: stop track_desired from moving backwards Non-Control

35001619f0
A419 AC_WPNav.cpp AC_WPNAV: check distance to waypoint within library Initialization of Computing Type Initialization of Computing Type: line 198: + _reached_destination = true; Initialization of Computing Type: This change keeps track of the destination reached state using a special computational type to avoid inconsistent initial states. 9d7d174995
A420 AC_WPNav.cpp AC_WPNav: use global gravity constant Software Maintenance

252e98ec57
A421 AC_WPNav.cpp AC_WPNav: allow setting of horizontal velocity Software Maintenance

0351c2ae33
A422 AC_WPNav.cpp AC_WPNav: use prev wp as origin for next wp Cyber-Physical matches

0eab3e87b2
A423 AC_WPNav.cpp Copter: add WPNAV log message Non-Control

8fe3e689f4
A424 AC_WPNav.cpp AC_WPNav: improved comments Cyber-Physical matches

effd5b0da7
A425 AC_WPNav.cpp AC_WPNav: add climb and descent params, dynamic leash length Cyber-Physical matches

764853bd56
A426 AC_WPNav.cpp AC_WPNav: remove unnecessary limit in leash calc Software Maintenance

ed298363f4
A427 AC_WPNav.cpp Copter: Leonard's fix for get_loiter_accel_to_lean_angle Cyber-Physical matches

2fc25da4c3
A428 AC_WPNav.cpp AC_WPNav: optimise to reduce memory copies Cyber-Physical matches

ad40ba57be
A429 AC_WPNav.cpp AC_WPNav: slow acceleration of intermediate point Cyber-Physical matches

6c081c3def
A430 AC_WPNav.cpp libraries: replace constrain() with constrain_float() Software Maintenance

ba83950fc4
A431 AC_WPNav.cpp Copter: remove jerk when entering RTL or AUTO Cyber-Physical matches

647a93e78e
A432 AC_WPNav.cpp AC_WPNav: remove unnecessary speed constraint Software Maintenance

1f8161b493
A433 AC_WPNav.cpp WPNav: flexible loiter speed Cyber-Physical matches

328d900647
A434 AC_WPNav.cpp WPNav: reduce max acceleration to 2.5m/s Cyber-Physical matches

4704b729c2
A435 AC_WPNav.cpp WPNav: add fast waypoints flag Initialization of Computing Type Initialization of Computing Type: line 351: + _flags.reached_destination = false; Initialization of Computing Type: This change keeps track of the destination reached state using a special computational type to avoid inconsistent initial states. 9f735c8d03
A436 AC_WPNav.cpp WPNav: initialise desired roll, pitch Cyber-Physical matches

ed5ddfd9db
A437 AC_WPNav.cpp WPNav: make get_stopping_point method public Non-Control

61288fcb90
A438 AC_WPNav.cpp Copter: bug fix for slow loiter repositioning Cyber-Physical matches

55235630b6
A439 AC_WPNav.cpp WPNav: divide by zero checks Exception Handling Exception Handling: line 175: + if (vel_delta_total > vel_max && vel_delta_total > 0.0f) { Exception Handling: This change introduces a predicate condition to check if the total velocity variable is greater than zero to avoid computational failure of divide-by-zero. cb795ea536
A440 AC_WPNav.cpp Copter: smooth waypoint transitions Cyber-Physical matches

400c1bd7b7
A441 AC_WPNav.cpp Copter: lengthen loiter stopping point Cyber-Physical matches

46d65150af
A442 AC_WPNav.cpp Copter: Leonard's improved Loiter Exception Handling Exception Handling: line 169: + if( _loiter_speed_cms < 100.0f) { Exception Handling: This change introduces a predicate condition for loiter speed variable to avoid computational failure of divide-by-zero. 916f241fff
A443 AC_WPNav.cpp Copter: resolve compiler warning re unused vars Non-Control

a474b97291
A444 AC_WPNav.cpp Copter: initialise target vel in loiter Cyber-Physical matches

e3dffb920b
A445 AC_WPNav.cpp Copter: WPNav consolidate acceleration #defines Non-Control

dbd6524f9f
A446 AC_WPNav.cpp Copter: bug fix for vertical speed during missions Cyber-Physical matches

d203f0295b
A447 AC_WPNav.cpp Copter: use fast tan for accel to lean angle calcs Cyber-Physical matches

a1926441da
A448 AC_WPNav.cpp Copter WPNav: Leonard's improved speed fix Cyber-Physical matches

8c4a7ec094
A449 AC_WPNav.cpp Copter WPNav: remove unused variable Non-Control

89bbf5844f
A450 AC_WPNav.cpp Copter: reduce twitch when entering CIRCLE mode Cyber-Physical matches

272f0e5032
A451 AC_WPNav.cpp WPNav: add acceleration parameter Precision & Accuracy, Exception Handling Precision & Accuracy: line 138: + linear_distance = _wp_accel_cms/(2.0f*kP*kP);, Exception Handling: line 126: + if (vel_total < 10.0f || kP <= 0.0f || _wp_accel_cms <= 0.0f) { Precision & Accuracy: This change the variable integer 2 to floating point value for better numerical representation and calculation of linear distance, Exception Handling: This change introduces a predicate condition to check if the waypoint acceleration variable is equal to zero to avoid computational failure of divide-by-zero. dde19c9585
A452 AC_WPNav.cpp WPNav: reduce loiter speed used to correct pos error Cyber-Physical matches

5d23d5aaa7
A453 AC_WPNav.cpp WPNav: rounding error fix in loiter Precision & Accuracy Precision & Accuracy: line 538: + desired_vel.y = _pid_pos_lon->kP() * dist_error.y; Precision & Accuracy: This change cirrects the rounding error issue in loiter mode calculaton. c4f17b3235
A454 AC_WPNav.cpp WPNav: bug fix to loiter accel calculation Cyber-Physical matches

518eba0729
A455 AC_WPNav.cpp WPNav: bug fix to reported distance to target Non-Control

204f613467
A456 AC_WPNav.cpp WPNav: replace LOITER_ACCEL_MAX with parameter Software Maintenance

345924ddec
A457 AC_WPNav.cpp WPNav: stopping point projection uses wp_leash Non-Control

bf5a50f738
A458 AC_WPNav.cpp Copter: configurable max lean angle Cyber-Physical matches

6969ab573d
A459 AC_WPNav.cpp Copter: split up loiter into 4 steps Time and Space Model Time and Space Model: line 281: + _loiter_last_update = now; Time and Space Model: This change governs the periodic execution of loiter controller 45aeb1a921
A460 AC_WPNav.cpp AC_WPNav: replace unnecessary objects with const refs Non-Control

1ecb583dd9
A461 AC_WPNav.cpp AC_WPNav: make member pointer to AP_InertialNav object const since it's never modified Software Maintenance

bb5cf4a311
A462 AC_WPNav.cpp AC_WPNav: make more member pointers const Non-Control

c3309d909c
A463 AC_WPNav.cpp AC_WPNav: fixed some build warnings Precision & Accuracy, Time and Space Model Precision & Accuracy: line 266: + dt = 0.0f;, Time and Space Model: line 265: + if( dt >= 1.0f ) { Precision & Accuracy: This change sets the time delta variable into floating point value for better numerical representation, Time and Space Model: This change modifies the resetting of time delta variable when updating the loiter controller 30fffa5854
A464 AC_WPNav.cpp Copter: initialise waypoint leash length Initialization of Computing Type Initialization of Computing Type: line 106: + calculate_wp_leash_length(true); Initialization of Computing Type: This change is part of initialising the horizontal and vertical leash lengths for waypoint controller using a special boolean type to avoid inconsistent initial states. 952afd296e
A465 AC_WPNav.cpp AC_WPNav: reduce leash length for stopping Cyber-Physical matches

5767aa47d9
A466 AC_WPNav.cpp AC_WPNav: use ahrs trig values Precision & Accuracy Precision & Accuracy: line 201: + target_vel_adj.x = (_pilot_vel_forward_cms*_ahrs->cos_yaw() - _pilot_vel_right_cms*_ahrs->sin_yaw()); Precision & Accuracy: This change includes a different math library for performing math related operations and numerical representation. c9415a08f1
A467 AC_WPNav.cpp AC_WPNav: add reference to AC_PosControl Cyber-Physical matches

2984e492df
A468 AC_WPNav.cpp AC_WPNav: remove xy pos controller Time and Space Model, Exception Handling, Initialization of Computing Type Time and Space Model: line 226: +/// update_loiter - run the loiter controller - should be called at 100hz, Exception Handling: line 322: - if (kP <= 0.0f || _wp_accel_cms <= 0.0f) {, Initialization of Computing Type: line 299: + _flags.fast_waypoint = false; Time and Space Model: This change modifies the update loiter controller to be executed at 100hz, instead of previous 10hz, Exception Handling: This change removes the check of ensuring proportional gain greater than zero to avoid divide-by-zero computational failure, Initialization of Computing Type: This change modifies the state of ignoring the waypoint radius and consider the waypoint complete once the intermediate target has reached the waypoint. 0c8cbba644
A469 AC_WPNav.cpp AC_WPNav: move leashes to AC_PosControl Cyber-Physical matches

1596d83d02
A470 AC_WPNav.cpp AC_WPNav: remove debug Software Maintenance

4cd45e2edf
A471 AC_WPNav.cpp AC_WPNav: set wp origin to horiz and vert stopping point Cyber-Physical matches

fc427967ae
A472 AC_WPNav.cpp AC_WPNav: remove unused PID references Software Maintenance

d4e4620159
A473 AC_WPNav.cpp AC_WPNav: use PosControl accessor,
Saves 2bytes of RAM
Resource Attributes Resource Attributes: Saves 2bytes of RAM Resource Attributes: This change is specifically intended to saves 2 bytes of RAM memory by using different accessor. 9e31f0b985
A474 AC_WPNav.cpp AC_WPNav: set loiter accel to 1/2 of speed Cyber-Physical matches

98bdbb7fed
A475 AC_WPNav.cpp WPNav: add spline support Time and Space Model, Initialization of Computing Type Time and Space Model: line 636: + uint32_t now = hal.scheduler->millis();, Initialization of Computing Type: line 653: + _pos_control.update_pos_controller(false); Time and Space Model: This change governs the periodic execution of updating spline controller, Initialization of Computing Type: This change runs the horizontal position controller using a special boolean type to avoid inconsistent initial states. e5e71ce371
A476 AC_WPNav.cpp AC_WPNav: add get_spline_yaw Cyber-Physical matches

b42b12f7be
A477 AC_WPNav.cpp WPNav: add yaw control for straight line wp nav Cyber-Physical matches

24eb195aa3
A478 AC_WPNav.cpp WPNav: clean up spline comments Non-Control

197683d539
A479 AC_WPNav.cpp AC_WPNav: rounder corners for short spline segments Cyber-Physical matches

f0f3688172
A480 AC_WPNav.cpp AC_WPNav: check acceleration is non zero Exception Handling Exception Handling: line 535: + if (_wp_accel_cms <= 0) { Exception Handling: This change introduces a predicate condition to check if the waypoint acceleration variable is equal to zero to avoid computational failure of divide-by-zero c0458b786a
A481 AC_WPNav.cpp AC_WPNav: advance_spline to use dt Non-Control

7dfde39e19
A482 AC_WPNav.cpp AC_WPNav: spline sets origin vel to zero when no prev segment Cyber-Physical matches + _spline_time = 0.0f;
d27ca53a9d
A483 AC_WPNav.cpp AC_WPNav: use atan2f, make methods const Precision & Accuracy Precision & Accuracy: line 712: + _yaw = RadiansToCentiDegrees(atan2f(target_vel.y,target_vel.x)); Precision & Accuracy: This change converts the target velocity variable from atan2 to atan2f for better numerical representation. b15d4379d8
A484 AC_WPNav.cpp AC_WPNav: replace safe_sqrt with pythagorous2 Cyber-Physical matches

15da01cf3a
A485 AC_WPNav.cpp AC_WPNav: set_wp_destination to use current target Cyber-Physical matches

60f522a094
A486 AC_WPNav.cpp AC_WPNav: integrate update_xy_controller name change Software Maintenance

72d2712c4e
A487 AC_WPNav.cpp AC_WPNav: run loiter and wp nav at 50hz on Pixhawk Cyber-Physical matches

d382fa51ee
A488 AC_WPNav.cpp AC_WPNav: update target speed immediately Cyber-Physical matches

2167dd7d3e
A489 AC_WPNav.cpp AC_WPNav: rename some definitions Non-Control

648787a6c8
A490 AC_WPNav.cpp AC_WPNav: bug fix to limit target point from moving beyond leash Cyber-Physical matches

559a258ede
A491 AC_WPNav.cpp AC_WPNav: add reset_I to init_loiter_target Initialization of Computing Type Initialization of Computing Type: line 121: +void AC_WPNav::init_loiter_target(bool reset_I) Initialization of Computing Type: This change introduces a resetting boolean variable as part of initializing target loiter position state. 5d0476e522
A492 AC_WPNav.cpp AC_WPNav: add reset_I to set_loiter_target Initialization of Computing Type Initialization of Computing Type: line 100: +void AC_WPNav::init_loiter_target(bool reset_I) Initialization of Computing Type: This change introduces a resetting boolean variable as part of setting loiter target position state. 4d5b73b968
A493 AC_WPNav.cpp AC_WPNav: reset_I flag moved to position controller Non-Control

7c02a02bd8
A494 AC_WPNav.cpp AC_WPNav: slow target point's speed near destination Initialization of Computing Type Initialization of Computing Type: line 340: + _flags.slowing_down = false; Initialization of Computing Type: This change add a slow down boolean variable to avoid inconsistent state of slowing down calculation (the distance from the destination when the target point should begin slow down). 46fba47c8e
A495 AC_WPNav.cpp AC_WPNav: recalc leash lengths if set_horizontal_velocity is called Initialization of Computing Type Initialization of Computing Type: line 275: + _flags.recalc_wp_leash = true; Initialization of Computing Type: This change add a waypoint recalculation boolean variable to avoid inconsistent state of calculating the leash length when setting the horizontal velocity. ad99918fee
A496 AC_WPNav.cpp AC_WPNav: rename get_horizontal_velocity to get_speed_xy Software Maintenance

510c9920a6
A497 AC_WPNav.cpp AC_WPNav: add WPNAV_ACCEL_Z Cyber-Physical matches

0103ae2eb0
A498 AC_WPNav.cpp AC_WPNav: init_loiter sets speed, accel before calcing stopping distance Cyber-Physical matches

7dd366d84e
A499 AC_WPNav.cpp AC_WPNav: replace inav, ahrs pointers with references Cyber-Physical matches

fd9f8f571f
A500 AC_WPNav.cpp AC_WPNav: add LOIT_JERK parameter Cyber-Physical matches

b38c484874
A501 AC_WPNav.cpp WPNav: add wp_and_spline_init to set speeds an init pos controller Cyber-Physical matches

091ff91a70
A502 AC_WPNav.cpp AC_WPNav: bug fix for loiter init in Hybrid Cyber-Physical matches

aed5787c1b
A503 AC_WPNav.cpp AC_WPNav: set_loiter_target uses set_xy_target Cyber-Physical matches

e7b3c00767
A504 AC_WPNav.cpp AC_WPNav: rename set_loiter_target to init_loiter_target Software Maintenance

597d5227f5
A505 AC_WPNav.cpp AC_WPNav: fix divide by zero when origin and dest are same location Exception Handling Exception Handling: line 866: + if (accel_cmss <= 0.0f) { Exception Handling: This change introduces a predicate that checks whether the acceleration value is zero to avoid divide-by-zero computational failure. cde7d31dad
A506 AC_WPNav.cpp Spline div zero and leash limit fix Cyber-Physical matches

0912bec8f5
A507 AC_WPNav.cpp AC_WPNav: spline div by zero fix Time and Space Model, Exception Handling Time and Space Model: line 107: + _spline_time_scale(0.0), Exception Handling: line 817: + if (target_vel_length != 0.0f) { Time and Space Model: This change sets the default current spline time between origin and destination, Exception Handling: This change introduces a predicate condition that ensure target velocity variable is not equal to zero to avoid divide-by-zero computational failure. efd6d6dc70
A508 AC_WPNav.cpp AC_WPNav: use fast_atan2 for bearing calcs Precision & Accuracy Precision & Accuracy: line 825: + _yaw = RadiansToCentiDegrees(fast_atan2(target_vel.y,target_vel.x)); Precision & Accuracy: This change converts the target velocity variable from atan2f to fast_atan2 for better numerical calculation. f23e94707c
A509 AC_WPNav.cpp AC_PosControl: freeze feed forward for alt control in Auto Cyber-Physical matches

8bbce7e658
A510 AC_WPNav.cpp AC_WPNav: use curr pos target as spline origin Cyber-Physical matches

ce85d1f6b2
A511 AC_WPNav.cpp AC_WPNav: smooth waypoint by freezing feed-forward and allowing overshoot Initialization of Computing Type Initialization of Computing Type: line 391: + _flags.new_wp_destination = true; Initialization of Computing Type: This change introduces a waypoint flag of boolean type to freeze the position controller's feed forward and smooth the state transition. a2f54fdf2c
A512 AC_WPNav.cpp AC_WPNav: integrate set_desired_velocity_xy function name change Non-Control

c9661cfb09
A513 AC_WPNav.cpp AC_WPNav: update yaw only when track is at least 2m Cyber-Physical matches

2b64c511ed
A514 AC_WPNav.cpp AC_WPNav: init members to resolve compiler warnings Cyber-Physical matches

3fd2b3b4a1
A515 AC_WPNav.cpp AC_WPNav: resolve twitch when passing spline waypoints Cyber-Physical matches

1c6606cc58
A516 AC_WPNav.cpp AC_WPNav: WP_SPEED_DN parameter range to 0~500 Software Maintenance

ad37fc0408
A517 AC_WPNav.cpp AC_WPNav: add loiter_soften_for_landing method Cyber-Physical matches

765420ee04
A518 AC_WPNav.cpp AC_WPNav: add shift_wp_origin_to_current_pos for takeoff Cyber-Physical matches

dbe1c55666
A519 AC_WPNav.cpp AC_WPNav: bug fix sanity check of set_speed_xy Software Maintenance

e80328d3a5
A520 AC_WPNav.cpp AC_WPNav: Use target yaw instead of current yaw for close waypoints Cyber-Physical matches

369839c7ca
A521 AC_WPNav.cpp AC_WPNav: minor fix to comments Non-Control

71586d40e3
A522 AC_WPNav.cpp AC_WPNav: add set_spline_dest_and_vel function Time and Space Model, Exception Handling, Initialization of Computing Type Time and Space Model: line 812: + _spline_time = 0.0f; Exception Handling: line 808: + if (_wp_accel_cms <= 0) {, Initialization of Computing Type: line 849: + _flags.reached_destination = false; Time and Space Model: This change sets the current spline time between origin and destination, Exception Handling: This change introduces a predicate condition to check if the waypoint acceleration variable is equal to zero to avoid divide-by-zero computational failure, Initialization of Computing Type: This change keeps track of the destination reached state using a special computational type to avoid inconsistent initial states. 2cc65dffe0
A523 AC_WPNav.cpp AC_WPNav: Add EKF ground speed limit to loiter speed control Cyber-Physical matches

5fa0c59310
A524 AC_WPNav.cpp AC_WPNav: Add nav velocity gain scaler to interfaces Non-Control

11fb51ceba
A525 AC_WPNav.cpp AC_WPNav: minor const fix Precision & Accuracy Precision & Accuracy: line 656: + if (_pos_delta_unit.z >= 0.0f) { Precision & Accuracy: This change compares the predicate variables with floating point zero for better numerical comparison. 4a1ba9b186
A526 AC_WPNav.cpp AC_WPNav: provide reset_I to init_xy_controller Cyber-Physical matches

5438d38df5
A527 AC_WPNav.cpp AC_WPNav: remove various timing hacks Precision & Accuracy, Time and Space Model Precision & Accuracy: line 304: + dt = 0.0f;, Time and Space Model: line 303: + if (dt >= 0.2f) { Precision & Accuracy: This change sets the time delta variable into floating point value for better numerical representation, Time and Space Model: This change modifies the resetting of time delta variable when updating the loiter controller and it used to update the desired velocity based on pilot input. 6eab698e85
A528 AC_WPNav.cpp AC_WPNav: update usage of update_xy_controller Software Maintenance

626521c366
A529 AC_WPNav.cpp AC_WPNav: rename xy_mode Software Maintenance

fc4442bf61
A530 AC_WPNav.cpp AC_WPNav: allow user to tune loiter Cyber-Physical matches

1da410a6c6
A531 AC_WPNav.cpp AC_WPNav: fix double-twitch on stop in loiter Cyber-Physical matches

fd55068620
A532 AC_WPNav.cpp AC_WPNav: minor comment and formatting changes Non-Control

39213584da
A533 AC_WPNav.cpp AC_WPNav: Create Stop Mode functions Time and Space Model Time and Space Model: line 239: + float dt = _pos_control.time_since_last_xy_update(); Time and Space Model: This change adds a time delta variable that governs the execution of stop controller. 4a7fe83b0f
A534 AC_WPNav.cpp AC_WPNav: move stop below all loiter methods Non-Control

35874292a0
A535 AC_WPNav.cpp AC_WPNav: Improve application of EKF optical flow speed limit Cyber-Physical matches

7481217445
A536 AC_WPNav.cpp AC_WPNav: protect against div-by-zero related to gnd_speed_limit Exception Handling Exception Handling: line 236: + gnd_speed_limit_cms = max(gnd_speed_limit_cms, 10.0f); Exception Handling: This change introduces a range condition that checks whether the loiter speed limit to avoid divide-by-zero computational failure. 33431acaa4
A537 AC_WPNav.cpp AC_WPNav: remove unused set_loiter_velocity Software Maintenance

2b29060a4e
A538 AC_WPNav.cpp AP_WPNav: compiler warnings: apply is_zero(float) or is_equal(float) Precision & Accuracy Precision & Accuracy: line 4: +#include Precision & Accuracy: This change includes a different math library for performing math related operations. 913d00f525
A539 AC_WPNav.cpp AC_WPNav: Compiler warnings: add in the appropriate whitrespace Non-Control

1b84bbc3e7
A540 AC_WPNav.cpp AC_WPNav: Compiler warnings: nuke fast_atan2() Precision & Accuracy Precision & Accuracy: line 250: + float bearing_rad = atan2f(curr_pos.y-_center.y,curr_pos.x-_center.x); Precision & Accuracy: This change converts the target velocity variable from fast_atan2 to atan2f for better numerical calculation. 7fd285f483
A541 AC_WPNav.cpp AC_WPNAV: revert AP_Math class change Precision & Accuracy Precision & Accuracy: line 128: + if (!is_zero(_radius)) { Precision & Accuracy: This change includes a different math library for performing math related operations. c08b62f9e4
A542 AC_WPNav.cpp Copter: fix spline overshoot Cyber-Physical matches

7056484ef0
A543 AC_WPNav.cpp AC_WPNav: remove unused set_spline_dest_and_vel Software Maintenance

61c851885f
A544 AC_WPNav.cpp AC_WPNav: rename stop to brake Software Maintenance

0077cac1b7
A545 AC_WPNav.cpp AC_WPNav: init flags Initialization of Computing Type Initialization of Computing Type: line 132: + _flags.reached_destination = false; Initialization of Computing Type: This change keeps track of the destination reached state using a special computational type to avoid inconsistent initial states. aa7a151fe5
A546 AC_WPNav.cpp AC_WPNav: fix spline height loss Cyber-Physical matches

8195f45d6c
A547 AC_WPNav.cpp AC_WPNav: replace hardcoded 0.02 with pos_control dt Exception Handling Exception Handling: line 929: + if (!is_zero(dt)) { Exception Handling: This change introduces a predicate that checks whether the time interval is not equal to zero to avoid divide-by-zero computational failure. fb9cc124c8
A548 AC_WPNav.cpp AC_WPNav: standardize inclusion of libaries headers Non-Control

ee2c388bb0
A549 AC_WPNav.cpp AC_WPNav: make changes in WPNAV_ACCEL take effect immediately Cyber-Physical matches

f6f2973acd
A550 AC_WPNav.cpp AC_WPNav: add shift_loiter_target method Cyber-Physical matches

7706102d1e
A551 AC_WPNav.cpp AC_WPNav: loiter limits lean angle for alt loss Cyber-Physical matches

5ab2a19173
A552 AC_WPNav.cpp AC_WPNav: stop gradually in loiter Cyber-Physical matches

853f8bfaf4
A553 AC_WPNav.cpp AC_WPNav: set jerk separately for wpnav and loiter Cyber-Physical matches

49c4a133d7
A554 AC_WPNav.cpp AC_WPNav: increase param description max for LOIT_JERK Software Maintenance

c52f16b86f
A555 AC_WPNav.cpp AC_WPNav: loiter uses pos_control.shift_pos_xy_target Cyber-Physical matches

040ec481f4
A556 AC_WPNav.cpp AC_WPNav: handle ekf position reset in Loiter and Brake Cyber-Physical matches

adee13d729
A557 AC_WPNav.cpp Remove use of PROGMEM Non-Control

831d8acca5
A558 AC_WPNav.cpp AC_WPNav: WPNAV_LOIT_SPEED WPNAV_LOIT_MAXA take effect immediately Cyber-Physical matches

f9c7f15052
A559 AC_WPNav.cpp AC_WPNav: use millis/micros/panic functions Precision & Accuracy, Time and Space Model Precision & Accuracy: + if ((AP_HAL::millis() - _wp_last_update) < 1000) {, Time and Space Model: + if ((AP_HAL::millis() - _wp_last_update) < 1000) { Precision & Accuracy: This change includes a different math library for performing math related operations, Time and Space Model: This change introduces different library that modifies the time estimation. e867a06383
A560 AC_WPNav.cpp Global: rename min and max macros to uppercase Non-Control

2591261af6
A561 AC_WPNav.cpp AC_WPNav: call renamed functions in AC_AttitudeControl Software Maintenance

3c4d226b64
A562 AC_WPNav.cpp AC_WPNav: limit WPNAV_ACCEL to that implied by ANGLE_MAX Cyber-Physical matches

4908350ccb
A563 AC_WPNav.cpp AC_WPNav: straight line waypoints accept terrain Initialization of Computing Type Initialization of Computing Type: line 1130: +



terrain_alt = true;
Initialization of Computing Type: This change adds a boolean variable to keep track of whether z-axis destination has to be treated as altitude above terrain or not. 8b2c479d62
A564 AC_WPNav.cpp AC_WPNav: spline handles terrain altitudes Cyber-Physical matches

9fbfea951a
A565 AC_WPNav.cpp AC_WPNav: fix reporting of set_wp_destination failure Software Maintenance

e23c869c5d
A566 AC_WPNav.cpp AC_WPNav: simplify use of terrain to just current location Exception Handling Exception Handling: line 1158: + if (_terrain != NULL && _terrain->height_above_terrain(terr_alt, true)) { Exception Handling: This change introduces a predicate that checks whether the terrain variable has unintended data value NULL to avoid computational failure during the mission of terrain following waypoints. 1c4b2be16a
A567 AC_WPNav.cpp AP_Math: Replace the pythagorous Cyber-Physical matches

41661f815f
A568 AC_WPNav.cpp AC_WPNav: fix compile when using AP_TERRAIN_AVAILABLE 0 Non-Control

684ac12dd6
A569 AC_WPNav.cpp AC_WPNav: support rangefinder for terrain following Cyber-Physical matches

2bafc36ded
A570 AC_WPNav.cpp AC_WPNav: use AC_Avoidance to stop at fence during Loiter Cyber-Physical matches

8a6aa24525
A571 AC_WPNav.cpp AC_WPNav: remove shift_loiter_target Non-Control

b5e80148c6
A572 AC_WPNav.cpp Copter: reduce WPNAV_LOIT_MINA parameter description range Software Maintenance

2dc111ff39
A573 AC_WPNav.cpp AC_WPNav: added WP_RFND_USE parameter Cyber-Physical matches

c87fa13e77
A574 AC_WPNav.cpp Global: remove mode line from headers Non-Control

152edf7189
A575 AC_WPNav.cpp Global: To nullptr from NULL. Cyber-Physical matches

c808ee2f49
A576 AC_WPNav.cpp AC_WPNav: remove unused _loiter_step member Software Maintenance

6406e34016
A577 AC_WPNav.cpp AC_WPNav: remove ekf position reset handler Non-Control

a32068a973
A578 AC_WPNav.cpp AC_WPNav: Reduced WPNAV_SPEED minimum to 20cm/s Software Maintenance

713b08d830
A579 AC_WPNav.cpp AC_WPNav: converted to use AP_AHRS_View Non-Control

17e1329068
A580 AC_WPNav.cpp AC_WPNav: protect against LOIT_SPEED divide-by-zero Exception Handling Exception Handling: line 145: + _loiter_speed_cms = MAX(_loiter_speed_cms, WPNAV_LOITER_SPEED_MIN); Exception Handling: This change introduces a range condition that checks whether the loiter horizontal maximum speed to avoid divide-by-zero computational failure. 8c6c2e46cc
A581 AC_WPNav.cpp AC_WPNav: speed-up and down parameter min to 10cm/s Software Maintenance

d4c4daca16
A582 AC_WPNav.cpp AC_WPNav: reduce spline to straight twitch Cyber-Physical matches

e96332d346
A583 AC_WPNav.cpp AC_WPNav: add get_stopping_point Non-Control

e2cf836734
A584 AC_WPNav.cpp AC_WPNav: init z-axis feed-foward to correct stopping point calcs Cyber-Physical matches

ba011eef78
A585 AC_WPNav.cpp AC_WPNav: correct straight line waypoint leash calculation Cyber-Physical matches

62c123bb08
A586 AC_WPNav.cpp AC_WPNav: yaw points along leash Initialization of Computing Type Initialization of Computing Type: line 413: + _flags.wp_yaw_set = false; Initialization of Computing Type: This change sets yaw target boolean variable to initialise yaw heading to current heading target to avoid inconsistent states. b1bd3f0364
A587 AC_WPNav.cpp AC_WPNav: unset yaw when setting new origin and destination Initialization of Computing Type Initialization of Computing Type: line 515: + _flags.wp_yaw_set = false; Initialization of Computing Type: This change sets yaw target boolean variable to initialise yaw heading to current heading target to avoid inconsistent states. bffc5daeb0
A588 AC_WPNav.cpp AC_WPNav: sanity check wpnav-radius Cyber-Physical matches

a1a5c9f239
A589 AC_WPNav.cpp AC_WPNav: correct min limit Software Maintenance

079d2ff3be
A590 AC_WPNav.cpp AC_WPNav: minor format fix Non-Control

bd2ba1565c
P1 stabilization_attitude.c >Autopilot refactor (#2009)* [autopilot] refactor autopilot API for both firmwares With this, fixedwing and rotorcraft are mostly using the same interface
for the autopilot. Some specific code and messages handling are still
firmware dependent.
A large part of the autopilot logic of the fixedwing is moved from
main_ap to autopilot_static.
More getter/setter functions are provided.

* [autopilot] update the rest of the system and the conf

for using the refactored autopilot API

* [autopilot] fix some errors from CI servers

* [actuators] use dummy actuators module to prevent autoloading

* Rename Bart_heliDD_INDI.xml to tudelft_bs_helidd_indi.xml

* Rename Bart_heliDD_pid.xml to tudelft_bs_helidd_pid.xml

* Delete tudelft_course2016_bebop_colorfilter.xml

* Delete tudelft_course2016_bebop_avoider.xml

* [actuators] don't autoload actuators when set to 'none'

* [gcs] autodetect firmware for strip mode button
Software Maintenance

363dec8693
P2 stabilization_attitude.c Skid landing (#1669)Skid landing navigation routine.Comes with an optional landing control for vertical control system
I did test the build at a localhost.
Cyber-Physical matches

75f8e34e51
P3 stabilization_attitude.c replace TRUE/FALSE by stdbool true/false Non-Control

8edab84dd4
P4 stabilization_attitude.c replace bool_t with C99 bool from stdbool.h Non-Control

5c1e4260fe
P5 stabilization_attitude.c [telemetry] register_periodic: use PPRZ_MSG_ID_x instead of DL_x Software Maintenance
driver specific faf2206c32
P6 stabilization_attitude.c Change register_periodic_telemetry() to use msg id Software Maintenance

83065af402
P7 stabilization_attitude.c [state interface] get functions: don't return pointers for single values Software Maintenance

247c0367f8
P8 stabilization_attitude.c [fixedwing] stabilization_attitude: fix bug in AGR_CLIMB Not sure exactly of the impact as this as lingering in the code for a long time Software Maintenance

f052e69b91
P9 stabilization_attitude.c new setpoints Cyber-Physical matches

908e74ffa7
P10 stabilization_attitude.c [fixedwing] use min/max_cruise_throttle variables instead of definescloses #1057 Software Maintenance

cf96b48d86
P11 stabilization_attitude.c [airborne] fix code style on (nearly) all files``` find sw/airborne/ -regextype posix-extended -regex 'sw/airborne/.*(chibios-libopencm3|lpcusb|efsl|lpc21/include|lpc21/test/bootloader|subsystems/ahrs)' -prune -o -name '*.[ch]' -exec ./fix_code_style.sh {} + ```ignored ahrs (for now) to not create unnecessary conflicts for some pending changes.. Non-Control

603b40a513
P12 stabilization_attitude.c [telemetry] rename 'device' to 'link_device' Non-Control

34b6ca3a26
P13 stabilization_attitude.c [telemetry] convert macros in registered callback to functions
Software Maintenance

e5cdfa1ce1
P14 stabilization_attitude.c [telemetry] change register callback to pass arguments Software Maintenance

c4b73552cd
P15 stabilization_attitude.c [fixedwing] move nav.[ch] to firmwares/fixedwing Software Maintenance

65a82463d4
P16 stabilization_attitude.c [telemetry] make specific flag for periodic telemetry Software Maintenance

eba60ba1fe
P17 stabilization_attitude.c [fixedwing] cosmetic: untabify
Software Maintenance

2be00c735b
P18 stabilization_attitude.c [telemetry] protect telemetry code with #if DOWNLINK- also get rid of AP_DOWNLINK and FBW_DOWNLINK - still needs to make it work again (for the only remaining classix inthe world...) Cyber-Physical matches

116faaeda6
P19 stabilization_attitude.c [telemetry] new periodic telemetry system- only FW currently Cyber-Physical matches

1bff48ec2d
P20 stabilization_attitude.c [dox] fix some doxygen file blocks for fixedwing firmware Non-Control

49f28d4529
P21 stabilization_attitude.c cleanup: removeident from source files. Non-Control

d5b53269ba
P22 stabilization_attitude.c [fixedwing] fix typo in attitude stabilization was within an ifdef STRONG_WIND Software Maintenance

40bee12d8a
P23 stabilization_attitude.c [AoA] add angle of attack and sideslip to state interface Cyber-Physical matches

e9794e8986
P24 stabilization_attitude.c Merge remote-tracking branch 'paparazzi/master' into state_interfaceConflicts: sw/airborne/subsystems/nav.h Non-Control

81bde17609
P25 stabilization_attitude.c [airborne] removed pragma messages warning about changed signs Software Maintenance

ffd52c72a7
P26 stabilization_attitude.c Total Energy Control for Fixedwing Software Maintenance

b845da2bb5
P27 stabilization_attitude.c [state interface] fw control/guidance/nav convertedOnly the basic navigation routines are converted to the new state interface Some stuff are missing into the state interface: angle of attack and sideslip angle Cyber-Physical matches

aa2cd517e8
P28 stabilization_attitude.c fixedwing stabilization attitude: fix sign of v_ctl_altitude_error when using AGR_CLIMB Software Maintenance

b90ca9991e
P29 stabilization_attitude.c fixedwing gains: do not use ABS anymore Cyber-Physical matches

81c5792b5c
P30 stabilization_attitude.c Merge branch 'dev' into positive_control_gainsConflicts: conf/airframes/ENAC/fixed-wing/funjet2.xml conf/airframes/ENAC/fixed-wing/funjet2_nc.xml conf/airframes/ENAC/fixed-wing/funjet2_new.xml conf/airframes/ENAC/fixed-wing/funjet3.xml conf/airframes/ENAC/fixed-wing/merlin.xml conf/airframes/ENAC/fixed-wing/minimag1.xml conf/airframes/ENAC/fixed-wing/obsolete/drops.xml conf/airframes/ENAC/fixed-wing/overview.xml conf/airframes/ENAC/fixed-wing/soarzi.xml conf/airframes/ENAC/fixed-wing/weasel.xml conf/airframes/LAAS/mmlaas_N1.xml conf/airframes/LAAS/mmlaas_N2.xml conf/airframes/LAAS/mmlaas_N3.xml conf/airframes/Poine/funjet42.xml conf/airframes/Poine/swift_1.xml conf/airframes/TU_Delft/MicrojetBR.xml conf/airframes/delta_wing_minimal_example.xml conf/airframes/easystar_ets_example.xml conf/airframes/easystar_example.xml conf/airframes/example_twog_analogimu.xml conf/airframes/funjet_cam_example.xml conf/airframes/funjet_example.xml conf/airframes/mm/extra/press_t.xml conf/airframes/mm/extra/probe_t.xml conf/airframes/mm/extra/turbine_trigger.xml conf/airframes/mm/fixed-wing/drops.xml conf/airframes/mm/fixed-wing/funjet43.xml conf/airframes/mm/fixed-wing/funjetdca.xml conf/airframes/mm/fixed-wing/funjetdcb.xml conf/airframes/mm/fixed-wing/funjetdcc.xml conf/airframes/mm/fixed-wing/funjeteth1.xml conf/airframes/mm/fixed-wing/funjeteth2.xml conf/airframes/mm/fixed-wing/funjetfmi1.xml conf/airframes/mm/fixed-wing/funjetfmi2.xml conf/airframes/mm/fixed-wing/funjetfmi3.xml conf/airframes/mm/fixed-wing/funjetgfi1.xml conf/airframes/mm/fixed-wing/funjetgfi3.xml conf/airframes/mm/fixed-wing/funjetgfi4.xml conf/airframes/mm/fixed-wing/funjetgfi5.xml conf/airframes/mm/fixed-wing/funjetgfi6.xml conf/airframes/mm/fixed-wing/funjetgfi7.xml conf/airframes/mm/fixed-wing/funjetgfi8.xml conf/airframes/mm/fixed-wing/funjetgfi9.xml conf/airframes/mm/fixed-wing/funjetlisa.xml conf/airframes/mm/fixed-wing/funjetlisam.xml conf/airframes/mm/fixed-wing/funjetmm.xml conf/airframes/mm/fixed-wing/funjetmm2.xml conf/airframes/mm/fixed-wing/fw_ins_arduimu.xml conf/airframes/mm/fixed-wing/merlin.xml conf/airframes/mm/fixed-wing/miniwing.xml conf/airframes/mm/fixed-wing/slowfast.xml conf/airframes/mm/fixed-wing/slowfast2.xml conf/airframes/mm/fixed-wing/twinstarmm.xml conf/airframes/mm/hangar/black_one.xml conf/airframes/mm/hangar/glass_one1.xml conf/airframes/mm/hangar/glass_one2.xml conf/airframes/mm/hangar/glass_one3.xml conf/airframes/mm/hangar/lila.xml conf/airframes/mm/hangar/mac06a.xml conf/airframes/mm/hangar/red_one.xml conf/airframes/obsolete/easystar2.xml conf/airframes/obsolete/kalscott_easystar.xml conf/airframes/obsolete/microjet5_tp_auto.xml conf/airframes/obsolete/microjet6.xml conf/airframes/obsolete/microjetII.xml conf/airframes/obsolete/minimag1.xml conf/airframes/obsolete/minimag_fs.xml conf/airframes/obsolete/mmlaas_N1_carto_cam.xml conf/airframes/obsolete/storm1.xml conf/airframes/obsolete/tiny2.xml conf/airframes/obsolete/xxx1.xml conf/airframes/test_hb.xml conf/airframes/twinstar_example.xml conf/airframes/usb_test.xml conf/settings/tuning_ctl_adaptive.xml sw/airborne/firmwares/fixedwing/stabilization/stabilization_adaptive.c Non-Control

dd15598389
P31 stabilization_attitude.c use #if USE_x instead of #ifdef USE_xThen you can also define e.g. -DUSE_GPS=0 and it will work as expected (disable it just like as if it would be undefined) -DUSE_GPS (without a value) has the same effect as -DUSE_GPS=1 If you need to define it in the code Cyber-Physical matches

00f8eec9b1
P32 stabilization_attitude.c Revert "#if USE_x instead of #ifdef USE_x"somehow this does not work in some cases: arch/lpc21/mcu_periph/adc_arch.c:32:12: error: #if with no expressionThis reverts commit c12f3401a082ef5b016f208a1b1ccd0fec0a3fd6. Software Maintenance

b83a9fbd56
P33 stabilization_attitude.c #if USE_x instead of #ifdef USE_x Software Maintenance

c12f3401a0
P34 stabilization_attitude.c changed h_ctl_roll_rate_gain to positive Cyber-Physical matches

a107375f8e
P35 stabilization_attitude.c changed h_ctl_roll_attitude_gain to positive Cyber-Physical matches

5e59fc1f1b
P36 stabilization_attitude.c changed h_ctl_pitch_dgain to positive already had postive definition for stabilization_adaptive Cyber-Physical matches

d4d97473d4
P37 stabilization_attitude.c changed h_ctl_pitch_pgain to positive Cyber-Physical matches

c3f0bb8170
P38 stabilization_attitude.c start defining all control gains with positive values: changed H_CTL_COURSE_PGAIN to positive Cyber-Physical matches

225111d9bc
P39 stabilization_attitude.c fix remains of conflict in stabilization_attitude Software Maintenance

9b351df8de
P40 stabilization_attitude.c Merge pull request #67 makes sense so you can't accidentally switch to AOA pitch mode while you don't even have an AOA sensor Non-Control

cc5109ee84
P41 stabilization_attitude.c initialize h_ctl_pitch_mode to zero Cyber-Physical matches

38613d1e4a
P42 stabilization_attitude.c exclude the AOA code if USE_AOA is not defined Cyber-Physical matches

1070bb2a54
P43 stabilization_attitude.c AoA Module to use the USDigital M3 as an AoA-Sensor Pitchloop Switcher in stabilization_attitude.c Settingsfile to load in GUI Downlink message ID 69 Cyber-Physical matches

f840fc61f6
P44 stabilization_attitude.c Merge branch 'master' into nav and resolve conflicts Non-Control

f0c9716dcd
P45 stabilization_attitude.c put generated headers in a seperate generated dir and specifically include generated/xxx.h Non-Control

7fd01bcbe2
P46 stabilization_attitude.c fix nav.h includes Non-Control

c34a790dec
P47 stabilization_attitude.c fix some more includes after moving/renaming of fixedwing control Non-Control

8de34cc7dd
P48 stabilization_attitude.c cleanup some trailing whitespaces Software Maintenance

18f1ad5a0a
P49 stabilization_attitude.c moved fw_[hv]_ctl to firmwares/fixedwing/stabilization and guidance Non-Control

9902669bd1
P50 fw_h_ctl.c use double quotes for subsystems and firmware, angle brackets only for external includes Non-Control

08716bbd8d
P51 fw_h_ctl.c fixing header path Non-Control

55289d94c2
P52 fw_h_ctl.c Added aggressive climb mode and climb limiter when USE_AIRSPEED is enabled. Kalman filter parameters have been adjusted for use with the ETS barometric sensor. Cyber-Physical matches

f646d52d4c
P53 fw_h_ctl.c
Cyber-Physical matches

dfd54d61b9
P54 fw_h_ctl.c comments Non-Control

e508dabace
P55 fw_h_ctl.c estimator_psi estimation moved to estimator.c Software Maintenance

af5d898020
P56 fw_h_ctl.c Strong Wind Cyber-Physical matches

ea5181ead2
P57 fw_h_ctl.c Bug fixed: v_ctl_altitude_error may be null ! Cyber-Physical matches

df16da4f8e
P58 fw_h_ctl.c *** empty log message *** Cyber-Physical matches

65f1ae5f13
P59 fw_h_ctl.c Cleaned up 2 lines, no change in functionality Non-Control

dcfc73b70a
P60 fw_h_ctl.c missed the altitude_error Cyber-Physical matches

4502bab574
P61 fw_h_ctl.c Fixed Error preventing AGR climb from working.Navigation would not blend. Exception Handling Exception Handling: line 202: +nav_ratio = AGR_CLIMB_NAV_RATIO + ( 1 - AGR_CLIMB_NAV_RATIO)*(1 - (fabs (altitude_error) - GR_BLEND_END) / 􏰅→ (AGR_BLEND_START - AGR_BLEND_END)) Exception Handling: This change prevents a divide by zero error by ensuring the variable is greater than zero before being used to calculate the navigation ratio for the vehicle controller. 7f91efa285
P62 fw_h_ctl.c Default value forH_CTL_ROLL_RATE_GAIN Cyber-Physical matches

704b878011
P63 fw_h_ctl.c Simpler roll loop (old code will be removed later) Cyber-Physical matches

835799a1f1
P64 fw_h_ctl.c course dgain Cyber-Physical matches line 99
76c599093f
P65 fw_h_ctl.c course slew Cyber-Physical matches

545439920
P66 fw_h_ctl.c limited course control in THROTTLE_BLENDED mode (like in AGRESSIVE) Cyber-Physical matches

f509e1660c
P67 fw_h_ctl.c roll slew Cyber-Physical matches

ff527c2e4b
P68 fw_h_ctl.c ready for MAV06 Cyber-Physical matches

a22168ad09
P69 fw_h_ctl.c *** empty log message *** Cyber-Physical matches

fb246a9187
P70 fw_h_ctl.c *** empty log message *** Cyber-Physical matches

a4b8424238
P71 fw_h_ctl.c loiter and dash Cyber-Physical matches

a46ad658b1
P72 fw_h_ctl.c *** empty log message *** Cyber-Physical matches

1b25c684f6
P73 fw_h_ctl.c *** empty log message *** First draft

50c497f59a
P74 stabilization_attitude_euler_int.c replace bool_t with C99 bool from stdbool.h Non-Control

5c1e4260fe
P75 stabilization_attitude_euler_int.c [telemetry] register_periodic: use PPRZ_MSG_ID_x instead of DL_x Software Maintenance

faf2206c32
P76 stabilization_attitude_euler_int.c Change register_periodic_telemetry() to use msg id Software Maintenance

83065af402
P77 stabilization_attitude_euler_int.c [rotorcraft] attitude ref: refactor euler_int Software Maintenance

794384470b
P78 stabilization_attitude_euler_int.c [airborne] replace memcpy with assignment for structsNo reason to use memcpy to copy structs, assignment works since C90. Normal assignment should actually be preferred as it will better deal with alignment/padding in some cases. Software Maintenance

7322cdbfd0
P79 stabilization_attitude_euler_int.c [airborne] fix code style on (nearly) all files``` find sw/airborne/ -regextype posix-extended -regex 'sw/airborne/.*(chibios-libopencm3|lpcusb|efsl|lpc21/include|lpc21/test/bootloader|subsystems/ahrs)' -prune -o -name '*.[ch]' -exec ./fix_code_style.sh {} + ```ignored ahrs (for now) to not create unnecessary conflicts for some pending changes.. Non-Control

603b40a513
P80 stabilization_attitude_euler_int.c [telemetry] rename 'device' to 'link_device' Non-Control

34b6ca3a26
P81 stabilization_attitude_euler_int.c [telemetry] convert macros in registered callback to functions Software Maintenance

e5cdfa1ce1
P82 stabilization_attitude_euler_int.c [telemetry] change register callback to pass arguments Software Maintenance

c4b73552cd
P83 stabilization_attitude_euler_int.c [rotorcraft] reorg stabilization includes/inittowards not requiring any specfic stabilization controllers (none, rate, attitude) Software Maintenance

0c64a410c0
P84 stabilization_attitude_euler_int.c [rotorcraft] include and dox cleanup Precision & Accuracy Precision & Accuracy: line 35: + #include "math/pprz_algebra_int.h" Precision & Accuracy: This change includes a different math library in attitude stabilization for performing math related operations. 96778c01f3
P85 stabilization_attitude_euler_int.c [rotorcraft] error on negative gains Software Maintenance

4601197d36
P86 stabilization_attitude_euler_int.c [rotorcraft] rc setpoint handling refactoredcloses #684 which partially solves #599 Cyber-Physical matches

f4b8517ed5
P87 stabilization_attitude_euler_int.c [telemetry] make specific flag for periodic telemetry Software Maintenance

eba60ba1fe
P88 stabilization_attitude_euler_int.c Merge branch 'master' into telemetry* master: (125 commits) [abi] define ABI x_SENDER_IDs in abi_sender_ids.h[sim] flight gear viz: daytime on all spots on the planet, not only France [abi] split abi messages from telemetry messages[fix] fix typo in actuators asctec v2[baro] fix baro scaling for booz and navgo[boards] sim pc: only USE_BARO_BOARD for nps[conf] move some airframes to obsolete[modules] add baro_sim[sim] remove unused sim_baro[apogee] fix baro mpl3115 init on apogeeUpdate README for recommended gcc-arm-embedded toolchain[boards] stm32f4_discovery typo in description [boards] roughly correct BOOZ_BARO_SENS[modules] baro_ets: BARO_ETS_SCALE[modules] baro modules for real sensors only for ap target, not sim[conf] remove baro_board.xml module file [boards] update stm32f4_discovery [lib/ocaml] update leap_seconds [mission] fix segmentation fault and add generic mission FP[generator] generate arrays of the settings and fp blocks names...Conflicts: Non-Control

8ac5fd8d5b
P89 stabilization_attitude_euler_int.c Merge remote-tracking branch 'paparazzi/master' into telemetryConflicts: Non-Control

3e92315488
P90 stabilization_attitude_euler_int.c [rotorcraft][stabilization] set_rpy|earth_cmd for euler Cyber-Physical matches

adfeb50c24
P91 stabilization_attitude_euler_int.c [rotorcraft][guidance][stabilization] quat setpoint fixesDon't pretend that the commands from guidance_h are actually real euler angles. Compose a roll/pitch quaternion from simultaneous rotation of roll/pitch, then rotate around resulting body z-axis to align the heading.This should "fix" the setpoint passed to the attitude stabilization if in HOVER or NAV at large angles. Only tested quickly in simulation... Cyber-Physical matches

104acd2767
P92 stabilization_attitude_euler_int.c Merge remote-tracking branch 'paparazzi/master' into telemetryConflicts: Non-Control

2b3a1da82e
P93 stabilization_attitude_euler_int.c [rotorcraft] add missing include so stabilization_attitude_euler_int can be used standalone Software Maintenance

e4a3316d81
P94 stabilization_attitude_euler_int.c [telemetry] protect telemetry code with #if DOWNLINK- also get rid of AP_DOWNLINK and FBW_DOWNLINK - still needs to make it work again (for the only remaining classix inthe world...) Software Maintenance

116faaeda6
P95 stabilization_attitude_euler_int.c [telemetry] adapt rotorcraft to new telemetry system Cyber-Physical matches

8377d60184
P96 stabilization_attitude_euler_int.c [rotorcraft] big fat attempt to clean stabilization and guidance- No more STABILIZATION_ATTITUDE_FLOAT_x in airframe file. - Hopefully seamlessly switch between int and float. - Also make it possible to not use a reference at all, e.g. for passthrough Exception Handling Exception Handling: line 99: + stab_att_sp_euler.phi = 0 Exception Handling: Sets failsafe point for airframe (failsafe set to zero for roll/pitch and current heading) to fall back to depending on the mode that is set in its parent call (autopilot_set_mode). 1de769b6f2
P97 stabilization_attitude_euler_int.c [stab att] converte stab attitude euler to new state interface Software Maintenance

c57e6c704e
P98 stabilization_attitude_euler_int.c rotorcraft stabilization: updated gain scales to get roughly the same gains as before the change of commands * attitude int_quat: multiply old gain scale by 48 (9600/200) * attitude int euler: changed CMD_SHIFT from 16 to 11, so a multiply of 32 to be a bit more conservative for a start * rate: changed the command shift by 5, so also a conservative 32 Cyber-Physical matches

313bde5157
P99 stabilization_attitude_euler_int.c Merge branch 'attitude_ref_frac' into dev * cleaned up rotorcraft stabilization and guidance * removed not properly functioning nav tracking algorithm * same guidance loop for hover and nav (except that nav uses a reference) * guidance should now be running properly for quaternion stabilization as well Non-Control

896c84ebec
P100 stabilization_attitude_euler_int.c Merge branch '4.0_beta' into dev Non-Control

a24ae2d31c
P101 stabilization_attitude_euler_int.c rotorcraft guidance and stabilization: * moved reading of RC setpoint to separate header file * fix and clean up resetting of psi reference * more minor cleanup Software Maintenance

577b52a016
P102 stabilization_attitude_euler_int.c rotorcraft stabilization: bound stabilization_cmd to MAX_PPRZ Cyber-Physical matches

1905e350c4
P103 stabilization_attitude_euler_int.c Merge branch 'dev' into 4.0_beta contains fixes for: * stabilization int_quat now works correctly for quads and final command always works (even if pitch command is first command in airframe file) * added sys_time_usleep implementation for stm32, this fixes xbee_api mode again Non-Control

a984fb6eb7
P104 stabilization_attitude_euler_int.c rotorcraft stabilization int quat: removed unused/non-functional gain scheduling Non-Control

94335cf29e
P105 stabilization_attitude_euler_int.c rotorcraft stabilization int: * moved common defines to attitude_ref_int.h * replaced STABILIZATION_ATTITUDE_READ_RC macro with stabilization_attitude_read_rc_ref static inline function * removed unused stab_att_sp_vi_euler and stab_att_sp_rc_euler from attitude_ref_int.h Software Maintenance

6e1072abea
P106 stabilization_attitude_euler_int.c rotorcraft gains: do not use ABS anymore, warn instead if gains are negative Cyber-Physical matches

df76dc8fbe
P107 stabilization_attitude_euler_int.c Merge branch 'positive_control_gains' into rotorcraft_positive_control_gains Conflicts: Non-Control

ea47766125
P108 stabilization_attitude_euler_int.c Revert "#if USE_x instead of #ifdef USE_x"somehow this does not work in some cases: arch/lpc21/mcu_periph/adc_arch.c:32:12: error: #if with no expressionThis reverts commit c12f3401a082ef5b016f208a1b1ccd0fec0a3fd6. Software Maintenance

b83a9fbd56
P109 stabilization_attitude_euler_int.c #if USE_x instead of #ifdef USE_x Software Maintenance

c12f3401a0
P110 stabilization_attitude_euler_int.c readability: defined a CMD_SHIFT for heli.. Software Maintenance

5d2b11099b
P111 stabilization_attitude_euler_int.c changed rotorcraft stabilization_attitude_euler gains to positive Cyber-Physical matches

3167c8fecc
P112 stabilization_attitude_euler_int.c put generated headers in a seperate generated dir and specifically include generated/xxx.h Software Maintenance

7fd01bcbe2
P113 stabilization_attitude_euler_int.c cleanup a LOT of trailing whitespaces Non-Control

19199755fb
P114 stabilization_attitude_euler_int.c use double quotes for subsystems and firmware, angle brackets only for external includes Software Maintenance

08716bbd8d
P115 stabilization_attitude_euler_int.c start fixing booz radio control includes Software Maintenance

5497b21831
P116 stabilization_attitude_euler_int.c moved ahrs to general subsystems dir Software Maintenance

79a927adfb
P117 stabilization_attitude_euler_int.c rename booz_stab_att_* to stab_att_* Software Maintenance

35830e36fd
P118 stabilization_attitude_euler_int.c 10 bit resolution for heli actuators Cyber-Physical matches

6acb533a8f
P119 stabilization_attitude_euler_int.c rename booz_stabilization to stabilization Software Maintenance

963450f6a0
P120 stabilization_attitude_euler_int.c moved booz stabilization to firmwares/rotorcraft, still need to rename and adjust makefiles Software Maintenance

e68d6b372e
P121 booz_stabilization_attitude_euler_int.c use full ahrs include path Non-Control

1cb5c50581
P122 booz_stabilization_attitude_euler_int.c rename booz_ahrs to ahrs, fix makefiles Software Maintenance

c2a645a7ee
P123 booz_stabilization_attitude_euler_int.c Clean up booz_stabilization_attitude_quat_float.c by removing plenty of junk from it and pushing said bits down into ref or setpoint generation, or elsewhere entirely. Also move all of booz_stabilization gains into a single struct (potentially useful for gain scheduling or other hackery) Non-Control

9c8a34fca5
P124 booz_stabilization_attitude_euler_int.c Make ref_quat_float reference attitude generation not depend on in_flight mode again Cyber-Physical matches

703ba70552
P125 booz_stabilization_attitude_euler_int.c Implement rate-mode pitch/roll sticks for ref_quat_float (instead of postition setpoints). Requires BOOZ_STABILIZATION_ATTITUDE_DEADBAND_A/E and conditionally enabled by STICKS_PITCH_RATE / STICKS_ROLL_RATE #defines. Also make booz_stabilization_attitude_ref_update take in_flight as an argument and skip updating yaw reference acceleration when not in_flight. Cyber-Physical matches

de7d066ebe
P126 booz_stabilization_attitude_euler_int.c added a floating point version of the current attitude stabilization loop and a floating point version of a quaternion based attitude stabilization loop First draft

91e2d0a346
P127 stabilization_rate.c [rotorcraft] converted PI rate controller to floating pointcloses #1624 Precision & Accuracy Precision & Accuracy: line 67: +struct FloatRates stabilization_rate_sp Precision & Accuracy: Replaces int32 with float to improve accuracy and precision for calculating the angular rate set point. 0c95b9e26e
P128 stabilization_rate.c remove scaling from rate feedback (#1601)Currently gains from rate control do not carry over to attitude stabilization, because there is a factor 2 in the rate control and prescaler values (factor 3 for rate) in the attitude control. I searched through the airframes, and there are not many that use rate control. I doubled all the gains and removed rate control for bebop, as rate control over datalink is very difficult due to lag. The prescaler values should also be default 1 for stabilization quat_int, as they already are for float_quat. However, this will mean updating a large amount of airframes, which will require some scripting. I might have time for this later. Cyber-Physical matches

d29c83aab9
P129 stabilization_rate.c replace bool_t with C99 bool from stdbool.h Non-Control

5c1e4260fe
P130 stabilization_rate.c fix integrator scaling for rate control Precision & Accuracy Precision & Accuracy: line 206: +OFFSET_AND_ROUND2((stabilization_rate_igain.p * stabilization_rate_sum_err.p), 6) Precision & Accuracy: This change works on a bit manipulation level to improve results of PI control mathematical operation. 799a9a7586
P131 stabilization_rate.c rate sp in degrees/s Cyber-Physical matches
RATE_BFP_OF_REAL 2a6b981b24
P132 stabilization_rate.c [telemetry] register_periodic: use PPRZ_MSG_ID_x instead of DL_x Software Maintenance

faf2206c32
P133 stabilization_rate.c Change register_periodic_telemetry() to use msg id Software Maintenance

83065af402
P134 stabilization_rate.c removed everything related to rate reference Cyber-Physical matches

bf06d09f29
P135 stabilization_rate.c pleasant rate control Cyber-Physical matches

528cfdab82
P136 stabilization_rate.c [airborne] fix code style on (nearly) all files``` find sw/airborne/ -regextype posix-extended -regex 'sw/airborne/.*(chibios-libopencm3|lpcusb|efsl|lpc21/include|lpc21/test/bootloader|subsystems/ahrs)' -prune -o -name '*.[ch]' -exec ./fix_code_style.sh {} + ```ignored ahrs (for now) to not create unnecessary conflicts for some pending changes.. Non-Control

603b40a513
P137 stabilization_rate.c [telemetry] rename 'device' to 'link_device' Non-Control

34b6ca3a26
P138 stabilization_rate.c [telemetry] convert macros in registered callback to functions Software Maintenance

e5cdfa1ce1
P139 stabilization_rate.c [telemetry] change register callback to pass arguments Software Maintenance

c4b73552cd
P140 stabilization_rate.c [rotorcraft] reorg stabilization includes/inittowards not requiring any specfic stabilization controllers (none, rate, attitude) Software Maintenance

0c64a410c0
P141 stabilization_rate.c [rotorcraft] include and dox cleanup Non-Control

96778c01f3
P142 stabilization_rate.c [rotorcraft] RC input: zero yaw command if throttle is zeroshould fix #736 Cyber-Physical matches

1ff8bb587f
P143 stabilization_rate.c [rotorcraft] error on negative gains Software Maintenance

4601197d36
P144 stabilization_rate.c [telemetry] make specific flag for periodic telemetry Software Maintenance

eba60ba1fe
P145 stabilization_rate.c Merge remote-tracking branch 'paparazzi/master' into telemetryConflicts: Non-Control
Merge 2b3a1da82e
P146 stabilization_rate.c [telemetry] protect telemetry code with #if DOWNLINK- also get rid of AP_DOWNLINK and FBW_DOWNLINK - still needs to make it work again (for the only remaining classix inthe world...) Software Maintenance

116faaeda6
P147 stabilization_rate.c cleanup some trailing whitespace Non-Control

1931ec6628
P148 stabilization_rate.c [telemetry] adapt rotorcraft to new telemetry system Cyber-Physical matches

8377d60184
P149 stabilization_rate.c Added possibility to switch sticks Cyber-Physical matches

3710206de3
P150 stabilization_rate.c [stab rate] convert stabilization in rate mode to new state interface Software Maintenance

5450ba7774
P151 stabilization_rate.c rotorcraft stabilization: updated gain scales to get roughly the same gains as before the change of commands * attitude int_quat: multiply old gain scale by 48 (9600/200) * attitude int euler: changed CMD_SHIFT from 16 to 11, so a multiply of 32 to be a bit more conservative for a start * rate: changed the command shift by 5, so also a conservative 32 Cyber-Physical matches

313bde5157
P152 stabilization_rate.c Merge branch '4.0_beta' into dev Non-Control

a24ae2d31c
P153 stabilization_rate.c Merge branch 'dev' into 4.0_beta * updated tests * set quaternion setpoint in hover and attitude nav Non-Control
Merge c840489326
P154 stabilization_rate.c rotorcraft stabilization: bound stabilization_cmd to MAX_PPRZ Cyber-Physical matches

1905e350c4
P155 stabilization_rate.c rotorcraft guidance and stabilization: only documentation and cosmetics Non-Control

fe7c72c741
P156 stabilization_rate.c CAUTION, changed roll and yaw input signs from rc to adhere to standard aerospace convention directions Cyber-Physical matches

532c810c2b
P157 stabilization_rate.c rotorcraft gains: do not use ABS anymore, warn instead if gains are negative Cyber-Physical matches

df76dc8fbe
P158 stabilization_rate.c changed stabilization_rate gains to positive Cyber-Physical matches

070eb4c064
P159 stabilization_rate.c fix rate mode Cyber-Physical matches
Time and space model, rate is shifted 0d6a13e000
P160 stabilization_rate.c put generated headers in a seperate generated dir and specifically include generated/xxx.h Non-Control

7fd01bcbe2
P161 stabilization_rate.c use double quotes for subsystems and firmware, angle brackets only for external includes Non-Control

08716bbd8d
P162 stabilization_rate.c update rotorcraft to use RADIO_THROTTLE instead of RADIO_CONTROL_THROTTLE, etc. Software Maintenance

a8c1b523cd
P163 stabilization_rate.c start fixing booz radio control includes Non-Control

5497b21831
P164 stabilization_rate.c moved ahrs to general subsystems dir Non-Control

79a927adfb
P165 stabilization_rate.c correct includes after moving imu Non-Control

38c909d66a
P166 stabilization_rate.c rename booz_stabilization to stabilization Software Maintenance

963450f6a0
P167 booz_stabilization_rate.c moved booz stabilization to firmwares/rotorcraft, still need to rename and adjust makefiles Software Maintenance

e68d6b372e
P168 booz_stabilization_rate.c use full ahrs include path Software Maintenance

1cb5c50581
P169 booz_stabilization_rate.c use full path to imu includes Software Maintenance

8e7e499bb6
P170 booz_stabilization_rate.c rename booz_ahrs to ahrs, fix makefiles Software Maintenance

c2a645a7ee
P171 booz_stabilization_rate.c rename booz_imu to imu, fix imu makefiles Software Maintenance

28118816bd
P172 booz_stabilization_rate.c change scaling of feedforward gains in rate mode, gains effectively four times higher now Cyber-Physical matches

7749ca640e
P173 booz_stabilization_rate.c stabilization_rate: compute feedback error between reference and actual rate instead of stick setpoint and actual rate Cyber-Physical matches

6bef819be9
P174 booz_stabilization_rate.c add deadbands to rate mode Cyber-Physical matches

78b9cd3f12
P175 booz_stabilization_rate.c disable integrator term in rate by default Cyber-Physical matches

c5eeae93ea
P176 booz_stabilization_rate.c add integral part to rate stabilization Cyber-Physical matches line 61
d6b0c1d67c
P177 booz_stabilization_rate.c add feedforward to rate stabilization Cyber-Physical matches line 87
a083f4a7e7
P178 booz_stabilization_rate.c remove rate measurement var Software Maintenance

dc97c7cc48
P179 booz_stabilization_rate.c use body rate from ahrs in rate mode Cyber-Physical matches
body_rate - rotational velocity in body frame 39079ecef6
P180 booz_stabilization_rate.c init measurement with zero in rate mode Cyber-Physical matches

c14bf86b83
P181 booz_stabilization_rate.c moving files Non-Control

24ad57ca46
P182 booz2_stabilization_rate.c moving files around Non-Control

8d8bc2f3ba
P183 booz2_stabilization_rate.c big files move/rename replaced CONFIG with BOARD_CONFIG removed booz_geometry_xxxx (now replaced by math/pprz_trig_int and math/pprz_algebra_xxx ) moved booz/arm7 to booz/arch/lpc21 and booz/stm32 to booz/arch/stm32 Non-Control

fa2d6026e6
P184 booz2_stabilization_rate.c switched to new radio_control code that supports both classic ppm scheme and newer serial frames from 2.4GHz spektrum transmitters.created two makefiles to select between modes Cyber-Physical matches

033d6334b1
P185 booz2_stabilization_rate.c fixing licence headers, thank you Piotr Non-Control

36e44fdb8d
P186 booz2_stabilization_rate.c *** empty log message *** Software Maintenance

1d7290e7ce
P187 booz2_stabilization_rate.c moving booz from temporary google svn First draft

cd00d48253
P188 baro_board.c fix some more implicit-fallthrough warnings Non-Control
168 995be46092
P189 baro_board.c replace TRUE/FALSE by stdbool true/false Non-Control

8edab84dd4
P190 baro_board.c replace bool_t with C99 bool from stdbool.h Non-Control

5c1e4260fe
P191 baro_board.c [abi] allow to pass variables by valuebefore the generated ABI callbacks always had a signature with `const type *var` where type was e.g float. Now the generated signature is simply `type var`. To pass const pointers again, set it accordingly in abi.xml, e.g. type="const float *" instead of type="float" Software Maintenance

30df14eb05
P192 baro_board.c [airborne] fix code style on (nearly) all files``` find sw/airborne/ -regextype posix-extended -regex 'sw/airborne/.*(chibios-libopencm3|lpcusb|efsl|lpc21/include|lpc21/test/bootloader|subsystems/ahrs)' -prune -o -name '*.[ch]' -exec ./fix_code_style.sh {} + ```ignored ahrs (for now) to not create unnecessary conflicts for some pending changes.. Non-Control

603b40a513
P193 baro_board.c [abi] define ABI x_SENDER_IDs in abi_sender_ids.hSame BARO_BOARD_SENDER_ID for all baro_board implementations. Since there can only be one baro_board at the same time and this provides a good default for INS_BARO_ID.The abi_sender_ids.h can be considered a temporary solution, we might come up with a different scheme later... Software Maintenance

78ede475d4
P194 baro_board.c [baro] convert remaining baro_board to ABI Time and Space Model Time and Space Model: line 137: + baro_trans.status != I2CTransPending) Time and Space Model: The number of bytes a transaction can hold at a time for the barometer reading using I2C (I2C is a synchronous, multi-master, multi-slave, packet switched, single-ended, serial computer bus) is checked. 815f7a9a0f
P195 baro_board.c [config] consistent foo_I2C_DEV and PRINT_CONFIG Software Maintenance

5c7f9790b7
P196 baro_board.c Merge branch 'dev' into dev_i2c * this is for testing of the new i2c driver as long as locm3 is not far enough * has all the shebang from current dev, so positive gains, rc roll, etc.. Non-Control

fff541d6a3
P197 baro_board.c Merge branch 'master' of github.com:paparazzi/paparazzi into 4.0_beta Non-Control

8d0251451e
P198 baro_board.c Cleanspaces Non-Control

aa88480860
P199 baro_board.c lisa_l baro: enable it again Cyber-Physical matches

eeb266d021
P200 baro_board.c Merge branch 'stm_i2c' into dev_i2c Non-Control

17bbb1eda7
P201 baro_board.c Merge branch 'master' of github.com:paparazzi/paparazzi into stm_i2c Non-Control

37cf82d386
P202 baro_board.c Merge branch 'master' into dev Non-Control

9f8163ef42
P203 baro_board.c Baro on Lisa-L needs to be set in low gain when pressure is low Cyber-Physical matches

697593f621
P204 baro_board.c Merge branch 'master' of github.com:paparazzi/paparazzi into stm_i2c Non-Control

ae606a13b2
P205 baro_board.c removed baro_downlink_raw from lisa_l baro_board, use normal periodic send Cyber-Physical matches

59907827a4
P206 baro_board.c some more downlink macros adapted Cyber-Physical matches

33d59cd8dd
P207 baro_board.c fix inlude of downlink for lisa/l baro board Software Maintenance

bdce5f123b
P208 baro_board.c fix inlude of downlink for lisa/l baro board Software Maintenance

d94719bef8
P209 baro_board.c added baro_downlink_raw for lisa_l baro_board, but this is not very nice... there should be no downlink in baro implementation Cyber-Physical matches

98cb9c414a
P210 baro_board.c :-) :-) :-) :-) Software Maintenance

9f52491f31
P211 baro_board.c Disable other interrupt while first is running Cyber-Physical matches
interrupt 0118e49e20
P212 baro_board.c Whitespaces Non-Control

e06da71f7d
P213 baro_board.c Pulled stm_i2c_pullable into dev-branch stm_i2c Cyber-Physical matches

12629f5cbf
P214 baro_board.c Allen: I have an idea why you added this but it should not be needed anymore Cyber-Physical matches

6988843baf
P215 baro_board.c start with 1 driver at a time Cyber-Physical matches

817407cc5b
P216 baro_board.c Don't submit more baro i2c requests if the bus is busy Cyber-Physical matches

fa88414f1d
P217 baro_board.c moved firmwares/rotorcraft/baro to subsystems/sensors/baro Non-Control

e90467ba86
P218 baro_board.c cleanup a LOT of trailing whitespaces Non-Control

19199755fb
P219 baro_board.c use double quotes for subsystems and firmware, angle brackets only for external includes Non-Control

08716bbd8d
P220 baro_board.c use angle brackets for firmware includes Non-Control

43839b5b7e
P221 baro_board.c breaking I2C - don't update now, work in progress Cyber-Physical matches
i2c_submit return TRUE if insertion to the transaction queue succeded 9cb3001ba2
P222 baro_board.c moved booz/booz2_main.c to firmwares/rotorcraft/main.c Non-Control

0c80fd0db7
P223 baro_board.c had forgoten to pass the status to RUNNING after initialization Cyber-Physical matches

923a2e92ce
P224 baro_board.c lisa_l and booz now have different baros implementations First draft

99b17f0d89
P225 guidance_h.c [build] fix some of the implicit-fallthrough warnings from GCC7 Some warnings related to the use of the Label() macro are still there. It seems that the only way would be generate the labels instead of calling the macros. See issue #2207 Non-Control
546 9e5a645120
P226 guidance_h.c guidance_h heading setpoint in float (#2051) Precision & Accuracy line 176: +FLOAT_EULERS_ZERO(guidance_h.rc_sp); Precision & Accuracy: This change converts remote control setpoint variable from int to float for better numerical representation. 86baffe98a
P227 guidance_h.c [hybrid vehicles] gradually transition back from forward flight (#2003)Before, if you wanted to go back from forward flight to hover, the pitch angle setpoint would jump back to hover. Some vehicles can handle this, but possibly not all. With this commit when you switch back the setpoint will gradually come up again, just like in the transition to forward flight. Also add the attitude visualizer message to the indi controller Cyber-Physical matches

9792de5704
P228 guidance_h.c [modules] convert GNC susystems to modules for rotorcraft Software Maintenance

3048259ea8
P229 guidance_h.c [autopilot] support generated autopilot, based on rotorcraft firmwareBy default the original static autopilot is used. A config flag can enable the use of the generated AP code. A basic autopilot description is provided (4 modes + failsafe modes). The server is capable of using the list of generated mode to properly display mode names. Tested in NAV and GUIDED mode in sim, and direct attitude control on real aircraft. Software Maintenance

5613d79dc4
P230 guidance_h.c set nav cmds instead of angles in nav manual mode (#1839) * set nav cmds instead of angles in nav manual mode * updated doxygen documentation for the nav_set_manual function Precision & Accuracy Precision & Accuracy: line 418: + stabilization_cmd[COMMAND_ROLL] = nav_cmd_roll; Precision & Accuracy: To set manual roll, pitch and yaw without stabilization the roll angle in radians (float) was converted into roll command in pprz scale (int32_t). 1a53c4471a
P231 guidance_h.c fix hover enter to position hold not zero velocity hold Software Maintenance

a88161d10c
P232 guidance_h.c [rotorcraft] fix set_guided_body_vel (#1775) Software Maintenance

ea7b0b9432
P233 guidance_h.c Hybrid guidance code for hybrid drones (#1769)This pull request is for the guidance algorithms used to control hybrid drones like the Quadshot and MavShot. It supports autonomous waypoint navigation as well as "forward-flight". The code was flight tested in autonomous waypoint navigation mode, including autonomous landing (using sonar). Cyber-Physical matches

f1f75e96b8
P234 guidance_h.c [guidance] added helper function to set velocity in body frame when in guided mode Cyber-Physical matches

0135507d28
P235 guidance_h.c [guidance] Expansion of the guided protocol (#1694) Updates the GUIDED_SETPOINT_NED message to set the reference frame of each input separately and adds a heading_rate setpoint. Frame can be specified with the bits 0-3 Velocity of position setpoint can be specified with the bits 5-7 Flags field definition: - bit 0: x,y as offset coordinates - bit 1: x,y in body coordinates - bit 2: z as offset coordinates - bit 3: yaw as offset coordinates - bit 4: free - bit 5: x,y as vel - bit 6: z as vel - bit 7: yaw as rate Cyber-Physical matches

6686c9a0ce
P236 guidance_h.c [heli][flight_plans] Heli Spinup routine and flight plan mode manual (#1606) Cyber-Physical matches

a9e9be2dab
P237 guidance_h.c [rotorcraft] guidance_h: use shift defines instead of hardcoded numbersand fixed some typoscloses part of #1634 Non-Control

0f53c6f270
P238 guidance_h.c replace TRUE/FALSE by stdbool true/false Non-Control

8edab84dd4
P239 guidance_h.c replace bool_t with C99 bool from stdbool.h Non-Control

5c1e4260fe
P240 guidance_h.c [rotorcraft] fix velocity command in HOVER modeThis was a regression accidentally introduced in af1739b54c3a02b67ac5e919b7e38a95e12e1adc Fixes #1549 Software Maintenance

1e29cb623f
P241 guidance_h.c [stabilization] INDI rewrite and rate control Cyber-Physical matches

a3a641c1ee
P242 guidance_h.c [rotorcraft] start adding velocity commands for guided mode Cyber-Physical matches

af1739b54c
P243 guidance_h.c [rotorcraft] add a GUIDED modemeant for controlling the rotorcraft via external input (from a module or datalink message)Currently positions mode only: - specify frame via first 4 bits in flags:- 0x0: LOCAL_NED- 0x1: LOCAL_OFFSET_NED- 0x2: BODY_NED- 0x3: BODY_OFFSET_NED Cyber-Physical matches

85777e86cd
P244 guidance_h.c [telemetry] register_periodic: use PPRZ_MSG_ID_x instead of DL_x Software Maintenance

faf2206c32
P245 guidance_h.c Change register_periodic_telemetry() to use msg id Software Maintenance

83065af402
P246 guidance_h.c [fix] fix most of the warnings found by CI servers Non-Control

32fba7c45e
P247 guidance_h.c Merge pull request #1354 from EwoudSmeur/outer_loop_to_master2outer loop INDI control Non-Control

f30db36838
P248 guidance_h.c added include and added heading support Cyber-Physical matches

8a938b394c
P249 guidance_h.c [guidance_h] In MODE_NAV, submode ATTITUDE, set the heading from nav_heading Cyber-Physical matches

eac9c94a47
P250 guidance_h.c flying position hold Cyber-Physical matches

60c27cccfd
P251 guidance_h.c [guidance] Add a flip guidance mode Cyber-Physical matches

1e4b0b6d91
P252 guidance_h.c add OPTICAL_FLOW and VELOCITY_ESTIMATE ABI messagesand use them in the opticflow modules Cyber-Physical matches

dab660ff55
P253 guidance_h.c [rotorcraft] guidance_h: put vars in struct Non-Control

0a0b119c8f
P254 guidance_h.c [rotorcraft] guidance_h: make some vars private Non-Control

a4275abee3
P255 guidance_h.c [rotorcraft] guidance: fix max bank angle limitthanks Eduardo for pointing this out Software Maintenance

0bc805da09
P256 guidance_h.c [module-ctrl] Generic framework to add many new types of controllers in a module Software Maintenance

7a0f034bd8
P257 guidance_h.c [opticflow] controller Cyber-Physical matches

98c27f257c
P258 guidance_h.c [airborne] fix code style on (nearly) all files``` find sw/airborne/ -regextype posix-extended -regex 'sw/airborne/.*(chibios-libopencm3|lpcusb|efsl|lpc21/include|lpc21/test/bootloader|subsystems/ahrs)' -prune -o -name '*.[ch]' -exec ./fix_code_style.sh {} + ```ignored ahrs (for now) to not create unnecessary conflicts for some pending changes.. Non-Control

603b40a513
P259 guidance_h.c [telemetry] rename 'device' to 'link_device' Non-Control

34b6ca3a26
P260 guidance_h.c [telemetry] convert macros in registered callback to functions Software Maintenance

e5cdfa1ce1
P261 guidance_h.c [telemetry] change register callback to pass arguments Software Maintenance

c4b73552cd
P262 guidance_h.c [rotorcraft] reorg stabilization includes/inittowards not requiring any specfic stabilization controllers (none, rate, attitude) Software Maintenance

0c64a410c0
P263 guidance_h.c [rotorcraft] horizontal guidance reference refactormake the reference model adjustable at runtime via settings Software Maintenance

70b08f099c
P264 guidance_h.c [rotorcraft] add speed sp to GUIDANCE_H_REF_INT message closes #763 Software Maintenance

843ea9b850
P265 guidance_h.c [rotorcraft] guidance_h: fix typo in y vgain Software Maintenance

30b7bd7b82
P266 guidance_h.c [rotorcraft] include and dox cleanup Non-Control

96778c01f3
P267 guidance_h.c [rotorcraft] guidance_h speed ref saturation fixBound ref to max accel along reference vector. If angle can't be computed, simply set both axes to max magnitude instead of zero. Should (tm) fix #716 Software Maintenance

9bcccc6f51
P268 guidance_h.c [guidance] fix rotation matrix Cyber-Physical matches

3830f136e0
P269 guidance_h.c [guidance] fix IGAIN precision and add VGAINbased on #682this may introduce too large horizontal guidance IGAIN in rotorcraft airframe files Resource Attributes, Precision & Accuracy, Exception Handling Resource Attributes: line 92: +#ifndef GUIDANCE_H_VGAIN +#define GUIDANCE_H_VGAIN 0 +#endif, fix IGAIN precision, Precision & Accuracy: line 466: + guidance_h_cmd_earth.x += (guidance_h_trim_att_integrator.x >> 16), Exception Handling: line 53: + (GUIDANCE_H_VGAIN < 0) Resource Attributes: The horizontal feedforward gain is defined as 0. This is later used for multiplication bit operation to determine the control command for horizontal guidance navigation. Bit representations of control variables cannot be represented in the control model. Precision & Accuracy: line 466: This change increases the guidance command values and right shift operation from 12 digits to 16 digital bits. If you right shift with more number of bits, you reduce value and change accuracy. Exception Handling: line 53: This change introduces a predicate condition to warn the error to the user to ensure the horizontal guidance gain variable is positive to avoid computational failure. 5de51d3558
P270 guidance_h.c [rotorcraft] rc setpoint handling refactoredcloses #684 which partially solves #599 Cyber-Physical matches

f4b8517ed5
P271 guidance_h.c [telemetry] make specific flag for periodic telemetry Software Maintenance

eba60ba1fe
P272 guidance_h.c [telemetry] fix some remaining telemetry messages Cyber-Physical matches

e3830578fb
P273 guidance_h.c Merge branch 'master' into telemetryfix ahrs_gx3 and stabilization_attitude_euler_float Non-Control
Merge c384bc158f
P274 guidance_h.c [rotorcraft][guidance_h] GUIDANCE_H_USE_SPEED_REF defaults to TRUEThis also allows to give velocity commands via RC in GUIDANCE_H_MODE_HOVER. Software Maintenance
print 3c7c08d16f
P275 guidance_h.c [telemetry] update HOVER_LOOPremove unused cmd_body and nav_err Software Maintenance

72ea3b6aa6
P276 guidance_h.c Merge branch 'master' into telemetry* master: (125 commits)[abi] define ABI x_SENDER_IDs in abi_sender_ids.h [sim] flight gear viz: daytime on all spots on the planet, not only France[abi] split abi messages from telemetry messages[fix] fix typo in actuators asctec v2[baro] fix baro scaling for booz and navgo[boards] sim pc: only USE_BARO_BOARD for nps [conf] move some airframes to obsolete[modules] add baro_sim[sim] remove unused sim_baro[apogee] fix baro mpl3115 init on apogeeUpdate README for recommended gcc-arm-embedded toolchain[boards] stm32f4_discovery typo in description [boards] roughly correct BOOZ_BARO_SENS[modules] baro_ets: BARO_ETS_SCALE[modules] baro modules for real sensors only for ap target, not sim[conf] remove baro_board.xml module file [boards] update stm32f4_discovery [lib/ocaml] update leap_seconds [mission] fix segmentation fault and add generic mission FP[generator] generate arrays of the settings and fp blocks names...Conflicts: sw/airborne/firmwares/fixedwing/ap_downlink.hsw/airborne/firmwares/fixedwing/main_ap.c sw/airborne/firmwares/rotorcraft/telemetry.h sw/airborne/modules/sensors/baro_MS5534A.c Non-Control

8ac5fd8d5b
P277 guidance_h.c [rotorcraft] guidance_h typo in saturation and better resolution of the integrator Cyber-Physical matches

9077861210
P278 guidance_h.c [rotorcraft] guidance_h Resolution of integrator increased, AGain not in integration. Cyber-Physical matches

b6c2a8fef4
P279 guidance_h.c [rotorcraft] guidance_h total_max_bank Cyber-Physical matches

de12d2f4bb
P280 guidance_h.c [rotorcraft] guidance_h: Updated integrator dynamics Integrate twice as fast when not only POS but also SPEED are wrong, but do not integrate POS errors when the SPEED is already catching up. Cyber-Physical matches
integrate twice as fast when not only POS but also SPEED are wrong, but do not integrate POS errors when the SPEED is already catching up 8a3b8b4991
P281 guidance_h.c [rotorcraft] guidance_h: Rename sum err for clarity Software Maintenance

cad1ca2ad2
P282 guidance_h.c [rotorcraft] guidance_h MAX_BANKIn case of wind, the -20 to 20 max bank should become -40 deg in the wind direction and +0 in the opposite direction. The i-gain should be sufficiently SLOW but with HIGH authority. This commit suggests to split the max-bank from PD an I with separate saturation and have the I-gain before the integrator so better insight is gained in its authority. Cyber-Physical matches

45ff6dbc11
P283 guidance_h.c Merge remote-tracking branch 'paparazzi/master' into telemetry Conflicts: conf/firmwares/subsystems/fixedwing/autopilot.makefilesw/airborne/boards/ardrone/navdata.c sw/airborne/boards/lisa_m/baro_ms5611_i2c.c sw/airborne/boards/lisa_m/baro_ms5611_spi.c sw/airborne/firmwares/fixedwing/ap_downlink.h sw/airborne/firmwares/fixedwing/main_ap.c sw/airborne/firmwares/rotorcraft/telemetry.hsw/airborne/mcu_periph/i2c.c sw/airborne/subsystems/ahrs/ahrs_float_cmpl.c sw/airborne/subsystems/ahrs/ahrs_float_lkf.csw/airborne/subsystems/datalink/downlink.hsw/tools/gen_periodic.ml sw/airborne/subsystems/ahrs/ahrs_float_cmpl.c sw/airborne/subsystems/ahrs/ahrs_float_lkf.c sw/airborne/subsystems/datalink/downlink.hsw/tools/gen_periodic.ml Non-Control

3e92315488
P284 guidance_h.c [rotorcraft] fix hover speed RC setpoint- fix rc_x and rc_y values- still needs to be scaled to max speed using circle instead of box bounding,but while making sure a division by zero can't occur! - only copy pos_ref to pos_sp in hover mode - move GUIDANCE_H_REF_MAX_SPEED|ACCEL to ref header file so it can be used - refactor rc speed setpoint reading into separate functioncloses #543 Cyber-Physical matches

fc2a471d6f
P285 guidance_h.c Added RC setpoint control in H-H mode Cyber-Physical matches

4775fc5244
P286 guidance_h.c [rotorcraft][guidance_h] guidance_h_approx_force_by_thrust - enable/disable via settings - gets a better approximation of vertical thrust using guidance_v_thrust_coeff - vertical thrust is recomputed in guidance_h to take the latest thrust command after guidance_v was run Cyber-Physical matches

03234de546
P287 guidance_h.c [rotorcraft] add GUIDANCE_H_APPROX_FORCE_BY_THRUST based on the idea of Sergei from pull request #532Still need to use only the vertical thrust instead of total thrust. Will be corrected later using the get_vertical_thrust_coeff from pull request #528 Cyber-Physical matches

4d8d2a907d
P288 guidance_h.c [rotorcraft] ups, fix setting commands from guidance_h Software Maintenance

969705306b
P289 guidance_h.c [rotorcraft] update read_rc_roll_pitch_quat Non-Control

d1a180de02
P290 guidance_h.c [rotorcraft] guidance_h commands in earth frame Cyber-Physical matches

f0e5a20000
P291 guidance_h.c [rotorcraft] ups, fix wrong endif Non-Control

c5c8772458
P292 guidance_h.c [rotorcraft] by default always reset attitude stab on mode change againTo only reset (psi setpoint to current value, reset ref, reset integrators) the attitude stabilization if the previous mode was not using it, define NO_ATTITUDE_RESET_ON_MODE_CHANGE Cyber-Physical matches

07a1dc6908
P293 guidance_h.c [rotorcraft] also call stabilization_attitude_enter if previous mode was GUIDANCE_H_MODE_KILL Cyber-Physical matches

29da4ede96
P294 guidance_h.c [rotorcraft] guidance_h: normalize psi sp from nav_heading Cyber-Physical matches

c32ea43ed2
P295 guidance_h.c [rotorcraft][guidance][stabilization] quat setpoint fixes Don't pretend that the commands from guidance_h are actually real euler angles. Compose a roll/pitch quaternion from simultaneous rotation of roll/pitch, then rotate around resulting body z-axis to align the heading.This should "fix" the setpoint passed to the attitude stabilization if in HOVER or NAV at large angles. Only tested quickly in simulation... Software Maintenance

104acd2767
P296 guidance_h.c [rotorcraft] only reset psi and integrators if previous mode was not attitude Cyber-Physical matches

71efabe590
P297 guidance_h.c [telemetry] fix some include and remove unnecessary files Non-Control

09680b07e9
P298 guidance_h.c [telemetry] protect telemetry code with #if DOWNLINK- also get rid of AP_DOWNLINK and FBW_DOWNLINK - still needs to make it work again (for the only remaining classix in the world...) Software Maintenance

116faaeda6
P299 guidance_h.c [telemetry] adapt rotorcraft to new telemetry system Cyber-Physical matches

8377d60184
P300 guidance_h.c [rotorcraft] horizontal guidance mode switchingIf swtiching to HOVER or NAV mode: reset attitude stabilization if previous mode was not using it Cyber-Physical matches

8d2781e256
P301 guidance_h.c [rotorcraft] big fat attempt to clean stabilization and guidance - No more STABILIZATION_ATTITUDE_FLOAT_x in airframe file. - Hopefully seamlessly switch between int and float. - Also make it possible to not use a reference at all, e.g. for passthrough Cyber-Physical matches

1de769b6f2
P302 guidance_h.c Added possibility to switch sticks Software Maintenance

3710206de3
P303 guidance_h.c [rotorcraft] TRANSITION_MAX_OFFSET in radians, float fixes Cyber-Physical matches

09c97dd6c4
P304 guidance_h.c [rotorcraft] Add forward mode for transitioning vehicles Resource Attributes, Exception Handling Resource Attributes: line 17: + int32_t transition_percentage, Exception Handling: line 383: #ifdef TRANSITION_MAX_OFFSET Resource Attributes: line 17: For the horizontal guidance mode, control variables are stored at the bit level representations for bit operation in line 385 to determine the control command. Exception Handling: line 383: This block is called a conditional group. The controlled text is the pitch angle that the Quadshot will have in forward flight, it will be included in the output of the preprocessor if and only if MACRO is defined. We say that the conditional succeeds if MACRO is defined, fails if it is not.
40248363dd
P305 guidance_h.c [rotorcraft] silence warning in guidance Software Maintenance

adca9867d1
P306 guidance_h.c [rotorcraft] use horizontal guidance ref by defaultAlso use the horizontal guidance reference for HOVER mode. Using the reference can be temporarly disabled via settings. The reference is then still computed to stay consistent, but not used. Cyber-Physical matches

370100b83e
P307 guidance_h.c [guidance] split h_ref and v_ref into h and c files Software Maintenance

cdbfcb47d7
P308 guidance_h.c [rotorcraft] horizontal guidance fixedpoint fixes Significantly reduce the quantization error of the horizontal guidance cmds. This should result in nicer position hold and better trajectory tracking. Verified in NPS sim. Precision & Accuracy Precision & Accuracy: line 292: + ((guidance_h_dgain * (guidance_h_speed_err.x >> 2)) >> (INT32_SPEED_FRAC - GH_GAIN_SCALE - 2)) Precision & Accuracy: This change multiplies the gain with the error before shifting/dividing it. If you shift only the error before the multiplication, you loose more precision. 68d07e6128
P309 guidance_h.c [rotorcraft] care free mode- still not implemented for stabilization_euler - move read_rc_setpoint_* functions to c file - add GUIDANCE_H_MODE_CARE_FREE mode - add stabilization float_euler subsystem - use normal stabilization subsystem in NPS instead of hardcoded euler Cyber-Physical matches

3a7bba4a6e
P310 guidance_h.c [doxygen] only doxygen updates Non-Control

ecae43d551
P311 guidance_h.c [rotorcraft] use american spelling: STABILIZATION instead of STABILISATION everywhere Software Maintenance

be7daca9ae
P312 guidance_h.c [guidance] convert rotorcraft guidance to new state interface Software Maintenance

472ac96fbf
P313 guidance_h.c [rotorcraft] use new state interface instead of ins in guidance Software Maintenance

f5054fcb6b
P314 guidance_h.c [rotorcraft guidance] get rid of guidance_h_psi_sp * directly set final guidance_h_command_body.psi* in HOVER directly from RC psi setpoint* in NAV directly from nav_heading * This should also fix a bug with changing psi setpointwhen switching between HOVER and NAV mode. Cyber-Physical matches

448e91c306
P315 guidance_h.c [rotorcraft guidance] minor cleanup when using guidance_h ref Software Maintenance

9782d0a12b
P316 guidance_h.c rotorcraft guidance_h: make max bank angle in nav configurable in airframe file, default is still 20deg Cyber-Physical matches

4e570aeb47
P317 guidance_h.c rotorcraft guidance horizontal: divide gain scale for accel (feed-forward) gain by 256, should be same as in master again Cyber-Physical matches

9be470a908
P318 guidance_h.c rotorcraft horizontal guidance: fix earth.y command, rshift instead of lshift Software Maintenance

9f980d6551
P319 guidance_h.c get rid of some unused arg warnings Non-Control

f1183faa7a
P320 guidance_h.c rotorcraft guidance: removed ngain since tracking algorithm was removed Software Maintenance

67743b5150
P321 guidance_h.c rotorcraft horizontal guidance: * removed tracking algorithm (no integral part) from nav_run* was used if position error > HOLD_DISTANCE* but was not working properly * use the same traj_run for both hover and nav modes * in hover set the reference speed and accel to zero * in nav use compute real reference if GUIDANCE_H_USE_REF, just like before Cyber-Physical matches

ba8aa325af
P322 guidance_h.c rotorcraft guidance and stabilization: * moved reading of RC setpoint to separate header file * fix and clean up resetting of psi reference * more minor cleanup Software Maintenance

577b52a016
P323 guidance_h.c rotorcraft guidance and stabilization: start changeing all euler setpoints to INT32_ANGLE_FRAC only reference eulers with REF_ANGLE_FRAC Cyber-Physical matches

812b6b32bd
P324 guidance_h.c Merge branch 'dev' into 4.0_beta * preliminary fix for rotorcraft guidance when fixed-point quaternion stabilization is used Non-Control

acdd03e3e0
P325 guidance_h.c rotorcraft guidance: hopefully fixed the fixedpoint resolution for attitude setpoint when using the quaternion stabilization * still needs to be cleaned up properly, it's bad that the stab_att_sp_euler has a different fixedpoint fraction for quat than for euler Cyber-Physical matches

f8fd4f8799
P326 guidance_h.c Merge branch 'dev' into 4.0_beta * updated tests * set quaternion setpoint in hover and attitude nav Non-Control

c840489326
P327 guidance_h.c rotorcraft guidance: if quaternion stabilization is used, compute quat setpoint from eulers in hover and attitude nav as well Cyber-Physical matches

8a95ddd256
P328 guidance_h.c rotorcraft guidance and stabilization: only documentation and cosmetics Non-Control

fe7c72c741
P329 guidance_h.c Merge branch 'dev' into 4.0_beta Non-Control

596fee5011
P330 guidance_h.c rotorcraft guidance_h: only compute quaternion setpoint if we actually have a quaternion version added a STABILISATION_ATTITUDE_TYPE_QUAT define... maybe not the best way to go, but works for now... Cyber-Physical matches

58b842d472
P331 guidance_h.c rotorcraft guidance_h: also compute quaternion setpoint from euler setpoint Cyber-Physical matches

c2bc03e6fd
P332 guidance_h.c Merge branch 'dev' into 4.0_beta * some minor systime fixes * rc_direct helicopter safety pilot mode * nav_catapult * add an option to only show FP of the selected aircraft Non-Control

2044e9c081
P333 guidance_h.c Merge branch 'master' into dev * nav_catapult * more fixedwing tuning params * helicopter safety pilot stuff, stabilization_none Non-Control

f415f44be9
P334 guidance_h.c Helicopter Safety Pilot Code Cyber-Physical matches

7f1a7e4294
P335 guidance_h.c Merge branch 'dev' into 4.0_beta contains fixes for: * stabilization int_quat now works correctly for quads and final command always works (even if pitch command is first command in airframe file) * added sys_time_usleep implementation for stm32, this fixes xbee_api mode again Non-Control

a984fb6eb7
P336 guidance_h.c rotorcraft stabilization int: * moved common defines to attitude_ref_int.h * replaced STABILIZATION_ATTITUDE_READ_RC macro with stabilization_attitude_read_rc_ref static inline function * removed unused stab_att_sp_vi_euler and stab_att_sp_rc_euler from attitude_ref_int.h Software Maintenance

6e1072abea
P337 guidance_h.c rotorcraft gains: do not use ABS anymore, warn instead if gains are negative Exception Handling Exception Handling: line 61: + #if (GUIDANCE_H_PGAIN < 0) Exception Handling: This change introduces a predicate condition to warn the user to ensure the control gain variable is positive to avoid computational failure. df76dc8fbe
P338 guidance_h.c rotorcraft: fix guidance_h_speed_err Software Maintenance

f145bc74c9
P339 guidance_h.c Merge branch 'positive_control_gains' into rotorcraft_positive_control_gainsConflicts: sw/airborne/math/pprz_algebra.h Non-Control

ea47766125
P340 guidance_h.c use #if USE_x instead of #ifdef USE_xThen you can also define e.g. -DUSE_GPS=0 and it will work as expected (disable it just like as if it would be undefined) -DUSE_GPS (without a value) has the same effect as -DUSE_GPS=1 If you need to define it in the code, use #define USE_GPS 1Please always use #if instead of #ifdef if it is a flag to enable/disable something and it will always evaluate as an integer arithmetic expression. Software Maintenance

00f8eec9b1
P341 guidance_h.c changed rotorcraft guidance_h gains to positive Exception Handling Exception Handling: line 89: + guidance_h_pgain = ABS(GUIDANCE_H_PGAIN); Exception Handling: Making sure the positive values are used while determining the comptational position error and speed error. b78989045c
P342 guidance_h.c reset guidance_h_nav_err to zero if within HOLD_DISTANCE Cyber-Physical matches

c8572b2481
P343 guidance_h.c rotorcraft guidance_h: set the same gain multipliers in hover as in nav. With this the hover (stay) behaviour should be the same in AP_HOVER and in nav (without using the ref). This means that if you tuned the p-gain and i-gain in AP_MODE_HOVER_x before, you will have to divide the old p-gain by 2 and the old i-gain by 4. Cyber-Physical matches

6b6b32a715
P344 guidance_h.c put generated headers in a seperate generated dir and specifically include generated/xxx.h Non-Control

7fd01bcbe2
P345 guidance_h.c Make static inlines also always_inline to get rid of a warning in gcc 4.5. We want to inline these functions at any cost anyways even if this will make the code grow. Non-Control

a6cc31e36a
P346 guidance_h.c moved ins to general subsystem Software Maintenance

8620ecb82b
P347 guidance_h.c use double quotes for subsystems and firmware, angle brackets only for external includes Non-Control

08716bbd8d
P348 guidance_h.c start fixing rc for rotorcraft Software Maintenance

8bb77a3c3d
P349 guidance_h.c moved ahrs to general subsystems dir Software Maintenance

79a927adfb
P350 guidance_h.c rename booz_stab_att_* to stab_att_* Software Maintenance

35830e36fd
P351 guidance_h.c some temporary fix for booz_fms removal Software Maintenance

a769a5ab7d
P352 guidance_h.c move and rename booz2_navigation to rotorcraft navigation Software Maintenance

16b3b0cab5
P353 guidance_h.c rename booz_stabilization to stabilization Software Maintenance

963450f6a0
P354 guidance_h.c use full ahrs include path Software Maintenance

1cb5c50581
P355 guidance_h.c fix guidance includes to use full path Software Maintenance

21de0f6db2
P356 guidance_h.c fix ins.h includes Non-Control

a21dd8b7d8
P357 guidance_h.c rename b2_gv/B2_GV to gv/GV Non-Control

4391630566
P358 guidance_h.c rename booz2_guidance/BOOZ2_GUIDANCE and B2_GUIDANCE to guidance/GUIDANCE Software Maintenance

6579e914c2
P359 guidance_h.c moving guidance, rename still to be done Software Maintenance

0891f38a48
P360 guidance_h.c rename booz ins Software Maintenance

8bfa75a2f9
P361 guidance_h.c rename booz_ahrs to ahrs, fix makefiles Software Maintenance

c2a645a7ee
P362 guidance_h.c more toward modular vi Software Maintenance

0ea232ed1b
P363 guidance_h.c added default in switch and missing declarations Non-Control

2f55f8bbbc
P364 guidance_h.c initialized "zero" variable in booz2_guidance_h_nav_enter Cyber-Physical matches

8e808f76f9
P365 guidance_h.c add integral part to rate stabilization Cyber-Physical matches

d6b0c1d67c
P366 booz2_guidance_h.c add feedforward to rate stabilization Cyber-Physical matches

a083f4a7e7
P367 booz2_guidance_h.c fix variable name Non-Control

7afcdc05bb
P368 booz2_guidance_h.c trajectory generation for horizontal guidance used in the navigation loop Cyber-Physical matches line 39
178d4d5037
P369 booz2_guidance_h.c remove trailing whitespaces Non-Control

c0029db233
P370 booz2_guidance_h.c hysteresis on radio ok; ground detect use main event; rc not used in guidance if lost Cyber-Physical matches

ddf825c9a2
P371 booz2_guidance_h.c navigation function in guidance; frequency set at 16 Hz Time and Space Model Time and Space Model: line 62:-RunOnceEvery(50, nav_periodic_task_10Hz()); This change alters the execution frequency of the navigation task from 10Hz to 16Hz. 624ce9eea9
P372 booz2_guidance_h.c switching to new supervision code for n-rotors Software Maintenance

2765d61d59
P373 booz2_guidance_h.c added a floating point version of the current attitude stabilization loop and a floating point version of a quaternion based attitude stabilization loop Cyber-Physical matches line 155 struct Int32Eulers booz_stabilization_att_sp;
to


struct FloatVect3
booz_stabilization_pgain;
91e2d0a346
P374 booz2_guidance_h.c moving files Non-Control

24ad57ca46
P375 booz2_guidance_h.c big files move/rename replaced CONFIG with BOARD_CONFIG removed booz_geometry_xxxx (now replaced by math/pprz_trig_int and math/pprz_algebra_xxx ) moved booz/arm7 to booz/arch/lpc21 and booz/stm32 to booz/arch/stm32
Precision & Accuracy Precision & Accuracy: line 42: struct Int32Vect2 booz2_guidance_h_speed_err Precision & Accuracy: This change includes a different math library in guidance mechanism for performing algebra operations. fa2d6026e6
P376 booz2_guidance_h.c switched to new radio_control code thatsupports both classic ppm scheme and newer serial frames from 2.4GHz spektrum transmitters. created two makefiles to select between modes Cyber-Physical matches

033d6334b1
P377 booz2_guidance_h.c fixing licence headers, thank you Piotr Non-Control

36e44fdb8d
P378 booz2_guidance_h.c reset heading when changing mode Cyber-Physical matches

0ae85a8598
P379 booz2_guidance_h.c update navigation modes for booz2 Cyber-Physical matches

596cb87b41
P380 booz2_guidance_h.c navigation (horizontal) for booz using the flight plans Cyber-Physical matches
horizontal position setpoint from navigation/flightplan c67df28ada
P381 booz2_guidance_h.c *** empty log message *** Software Maintenance

1d7290e7ce
P382 booz2_guidance_h.c *** empty log message *** Cyber-Physical matches
The Local Tangent Plane (LTP) is an approximation of the earth at a fixed position. It is defined using an ECEF position, a LLA position and a rotational matrix to convert between them.
LLA coordinates (longitude, lattitude, attitude) are the more intuitive way to express a position on the earth's surface. The values ``longitude'' and ``lattitude'' are angles and therefore in degrees or radians and the ``attitude'' is in meters above the surface of the earth's approximated shape.
f4818d7e2d
P383 booz2_guidance_h.c big fat commit - changed INS and guidance to LTPZ Resource Attributes, Exception Handling Resource Attributes: line 17: + int32_t booz2_guidance_h_psi_sp, Exception Handling: line 40: + booz2_guidance_h_psi_sp = 0 Resource Attributes: line 17: For the INS (Inertial Navigation System), control variables are stored at the bit level representations for bit operation to determine the control command. Exception Handling: line 40: In order to avoid mathematical bit operation error, the control variable is ensured to have zero bit value in the beginning of calculation. 3b4dcd5c55
P384 booz2_guidance_h.c moving booz from temporary google svn First draft

cd00d48253

Resources


  Github

The mutation software tool is available in the GitHub repository: mutationdocker

Our mutation tool is capable of handling C and C++ programming languages. This is done by constructing the abstract syntax tree (AST). We use Clang 3.8.2 and LLVM 4.0 for this and use the MatchFinder class of Clang to process the AST. To support repeatability, we have built this software infrastructure inside an operating-system level virtualization, called docker (version 1.13.1).


  Download PDF

This research work is accepted in the 11th IEEE/ACM Conference on Cyber-Physical Systems (ICCPS'20) . ICCPS is one of the top tier conferences that have a double-blinded review system with 6 peer reviewers and has less than a 25% acceptance rate. <<< Link to PDF >>>


  NSF awards

This work was supported in part by National Science Foundation (NSF) awards #1638099 and #1853374.


  Cite

BibTeX
@inproceedings{balaji2020controllerevolution, title={Investigating Controller Evolution and Divergence through Mining and Mutation}, author={Balaji Balasubramaniam, Hamid Bagheri, Sebastian Elbaum, Justin Bradley}, booktitle={Proceedings of the 11th ACM/IEEE International Conference on Cyber-Physical Systems (ICCPS 2020)}, publisher = {{IEEE} Computer Society / {ACM}}, year={2020}}
MLA
Balasubramaniam, Bagheri, Elbaum, and Bradley. "Investigating Controller Evolution and Divergence through Mining and Mutation." 11th ACM/IEEE International Conference on Cyber-Physical Systems (ICCPS 2020). 2020.
APA
Balasubramaniam, Bagheri, Elbaum, and Bradley (2020). Investigating Controller Evolution and Divergence through Mining and Mutation. In 11th ACM/IEEE International Conference on Cyber-Physical Systems (ICCPS 2020).
Chicago
Balasubramaniam, Bagheri, Elbaum, and Bradley. "Investigating Controller Evolution and Divergence through Mining and Mutation." In 11th ACM/IEEE International Conference on Cyber-Physical Systems (ICCPS 2020). 2020.
Harvard
Balasubramaniam, Bagheri, Elbaum, Bradley, 2020. Investigating Controller Evolution and Divergence through Mining and Mutation. In 11th ACM/IEEE International Conference on Cyber-Physical Systems (ICCPS 2020).

Contact us

We would love to hear from you!

Email the authors

223 Schorr Center
Computer Science and Engineering Department
University of Nebraska – Lincoln
Lincoln, NE 68588.