Skip to content

Commit 45abf89

Browse files
Merge branch 'master' into RPM_filter_V2
2 parents 9846c11 + df3d35f commit 45abf89

72 files changed

Lines changed: 1031 additions & 549 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test_branch_conventions.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,23 @@ jobs:
7272
echo "✅ No fixup commits found in the PR branch."
7373
fi
7474
75-
# require a ":" to appear somewhere in each commit message:
75+
# require a well-formed subsystem tag before ":" in each commit message:
7676
while IFS= read x; do
77-
if ! [[ "$x" == *":"* ]] ; then
77+
# strip leading hash from oneline format
78+
subject="${x#* }"
79+
# extract everything before the first colon
80+
prefix="${subject%%:*}"
81+
if [[ "$prefix" == "$subject" ]]; then
7882
echo "❌ Commit message ($x) missing subsystem tag on front. Re-word your commit to reflect what subsystem it changes. E.g. 'AP_Compass: Added driver for XYZZY' (https://ardupilot.org/dev/docs/submitting-patches-back-to-master.html)"
7983
exit 1
8084
fi
85+
# spaces and quotes are allowed to support Revert commits e.g. 'Revert "AP_Periph: ...'
86+
if ! [[ "$prefix" =~ ^[A-Za-z0-9._/\ \"-]+$ ]]; then
87+
echo "❌ Commit message ($x) has malformed subsystem tag '$prefix'. The subsystem prefix must contain only letters, digits, dots, underscores, slashes, hyphens, spaces, and quotes. E.g. 'AP_Compass: Added driver for XYZZY' (https://ardupilot.org/dev/docs/submitting-patches-back-to-master.html)"
88+
exit 1
89+
fi
8190
done <<< $COMMITS
82-
echo "✅ Commit messages have subsystem tags."
91+
echo "✅ Commit messages have well-formed subsystem tags."
8392
8493
- name: Lint changed markdown files
8594
shell: bash

.markdownlint-cli2.jsonc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
// Disable rules that are currently violated in the codebase
1111
// These can be re-enabled incrementally as files are fixed
1212
"MD001": false, // Heading levels should only increment by one level at a time
13-
"MD003": false, // Heading style
1413
"MD012": false, // Multiple consecutive blank lines
1514
"MD013": false, // Line length
1615
"MD014": false, // Dollar signs used before commands without showing output

ArduCopter/AP_ExternalControl_Copter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class AP_ExternalControl_Copter : public AP_ExternalControl
1515
Velocity is in earth frame, NED [m/s].
1616
Yaw is in earth frame, NED [rad/s].
1717
*/
18-
bool set_linear_velocity_and_yaw_rate(const Vector3f &linear_velocity, float yaw_rate_rads) override WARN_IF_UNUSED;
18+
bool set_linear_velocity_and_yaw_rate(const Vector3f &linear_velocity_ned_ms, float yaw_rate_rads) override WARN_IF_UNUSED;
1919

2020
/*
2121
Sets the target global position for a loiter point.

ArduCopter/Copter.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -963,13 +963,13 @@ bool Copter::get_wp_crosstrack_error_m(float &xtrack_error) const
963963
}
964964

965965
// get the target earth-frame angular velocities in rad/s (Z-axis component used by some gimbals)
966-
bool Copter::get_rate_ef_targets(Vector3f& rate_ef_targets) const
966+
bool Copter::get_rate_ef_targets(Vector3f& rate_ef_targets_rads) const
967967
{
968968
// always returns zero vector if landed or disarmed
969969
if (copter.ap.land_complete) {
970-
rate_ef_targets.zero();
970+
rate_ef_targets_rads.zero();
971971
} else {
972-
rate_ef_targets = attitude_control->get_rate_ef_targets();
972+
rate_ef_targets_rads = attitude_control->get_rate_ef_target_rads();
973973
}
974974
return true;
975975
}

ArduCopter/Copter.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -678,11 +678,11 @@ class Copter : public AP_Vehicle {
678678
#if MODE_GUIDED_ENABLED
679679
bool get_target_location(Location& target_loc) override;
680680
bool update_target_location(const Location &old_loc, const Location &new_loc) override;
681-
bool set_target_pos_NED(const Vector3f& target_pos, bool use_yaw, float yaw_deg, bool use_yaw_rate, float yaw_rate_degs, bool yaw_relative, bool is_terrain_alt) override;
682-
bool set_target_posvel_NED(const Vector3f& target_pos, const Vector3f& target_vel) override;
683-
bool set_target_posvelaccel_NED(const Vector3f& target_pos, const Vector3f& target_vel, const Vector3f& target_accel, bool use_yaw, float yaw_deg, bool use_yaw_rate, float yaw_rate_degs, bool yaw_relative) override;
684-
bool set_target_velocity_NED(const Vector3f& vel_ned, bool align_yaw_to_target) override;
685-
bool set_target_velaccel_NED(const Vector3f& target_vel, const Vector3f& target_accel, bool use_yaw, float yaw_deg, bool use_yaw_rate, float yaw_rate_degs, bool relative_yaw) override;
681+
bool set_target_pos_NED(const Vector3f& target_pos_ned_m, bool use_yaw, float yaw_deg, bool use_yaw_rate, float yaw_rate_degs, bool yaw_relative, bool is_terrain_alt) override;
682+
bool set_target_posvel_NED(const Vector3f& target_pos_ned_m, const Vector3f& target_vel_ned_ms) override;
683+
bool set_target_posvelaccel_NED(const Vector3f& target_pos_ned_m, const Vector3f& target_vel_ned_ms, const Vector3f& target_accel_ned_mss, bool use_yaw, float yaw_deg, bool use_yaw_rate, float yaw_rate_degs, bool yaw_relative) override;
684+
bool set_target_velocity_NED(const Vector3f& vel_ned_ms, bool align_yaw_to_target) override;
685+
bool set_target_velaccel_NED(const Vector3f& target_vel_ned_ms, const Vector3f& target_accel_ned_mss, bool use_yaw, float yaw_deg, bool use_yaw_rate, float yaw_rate_degs, bool relative_yaw) override;
686686
bool set_target_angle_and_climbrate(float roll_deg, float pitch_deg, float yaw_deg, float climb_rate_ms, bool use_yaw_rate, float yaw_rate_degs) override;
687687
bool set_target_rate_and_throttle(float roll_rate_dps, float pitch_rate_dps, float yaw_rate_dps, float throttle) override;
688688
bool set_target_angle_and_rate_and_throttle(float roll_deg, float pitch_deg, float yaw_deg, float roll_rate_degs, float pitch_rate_degs, float yaw_rate_degs, float throttle) override;
@@ -694,7 +694,7 @@ class Copter : public AP_Vehicle {
694694
bool get_circle_radius(float &radius_m) override;
695695
bool set_circle_rate(float rate_dps) override;
696696
#endif
697-
bool set_desired_speed(float speed) override;
697+
bool set_desired_speed(float speed_ms) override;
698698
#if MODE_AUTO_ENABLED
699699
bool nav_scripting_enable(uint8_t mode) override;
700700
bool nav_script_time(uint16_t &id, uint8_t &cmd, float &arg1, float &arg2, int16_t &arg3, int16_t &arg4) override;
@@ -722,7 +722,7 @@ class Copter : public AP_Vehicle {
722722
bool get_wp_distance_m(float &distance) const override;
723723
bool get_wp_bearing_deg(float &bearing) const override;
724724
bool get_wp_crosstrack_error_m(float &xtrack_error) const override;
725-
bool get_rate_ef_targets(Vector3f& rate_ef_targets) const override;
725+
bool get_rate_ef_targets(Vector3f& rate_ef_targets_rads) const override;
726726

727727
// Attitude.cpp
728728
void update_throttle_hover();
@@ -910,9 +910,9 @@ class Copter : public AP_Vehicle {
910910
void Log_Write_PTUN(uint8_t param, float tuning_val, float tune_min, float tune_max, float norm_in);
911911
void Log_Video_Stabilisation();
912912
void Log_Write_Guided_Position_Target(ModeGuided::SubMode submode, const Vector3p& pos_target_ned_m, bool is_terrain_alt, const Vector3f& vel_target_ms, const Vector3f& accel_target_mss);
913-
void Log_Write_Guided_Attitude_Target(ModeGuided::SubMode submode, float roll, float pitch, float yaw, const Vector3f &ang_vel, float thrust, float climb_rate);
913+
void Log_Write_Guided_Attitude_Target(ModeGuided::SubMode submode, float roll_rad, float pitch_rad, float yaw_rad, const Vector3f &ang_vel_rads, float thrust, float climb_rate_ms);
914914
void Log_Write_SysID_Setup(uint8_t systemID_axis, float waveform_magnitude, float frequency_start, float frequency_stop, float time_fade_in, float time_const_freq, float time_record, float time_fade_out);
915-
void Log_Write_SysID_Data(float waveform_time, float waveform_sample, float waveform_freq, float angle_x, float angle_y, float angle_z, float accel_x, float accel_y, float accel_z);
915+
void Log_Write_SysID_Data(float waveform_time, float waveform_sample, float waveform_freq_hz, float angle_x_degs, float angle_y_degs, float angle_z_degs, float accel_x_mss, float accel_y_mss, float accel_z_mss);
916916
void Log_Write_Vehicle_Startup_Messages();
917917
void Log_Write_Rate_Thread_Dt(float dt, float dtAvg, float dtMax, float dtMin);
918918
#endif // HAL_LOGGING_ENABLED

ArduCopter/Log.cpp

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ struct PACKED log_Control_Tuning {
1919
float desired_rangefinder_alt;
2020
float rangefinder_alt;
2121
float terr_alt;
22-
int16_t target_climb_rate;
23-
int16_t climb_rate;
22+
int16_t target_climb_rate_cms;
23+
int16_t climb_rate_cms;
2424
};
2525

2626
// Write a control tuning packet
@@ -52,23 +52,23 @@ void Copter::Log_Write_Control_Tuning()
5252

5353
struct log_Control_Tuning pkt = {
5454
LOG_PACKET_HEADER_INIT(LOG_CONTROL_TUNING_MSG),
55-
time_us : AP_HAL::micros64(),
56-
throttle_in : attitude_control->get_throttle_in(),
57-
angle_boost : attitude_control->angle_boost(),
58-
throttle_out : motors->get_throttle(),
59-
throttle_hover : motors->get_throttle_hover(),
60-
desired_alt : des_alt_m,
61-
inav_alt : float(pos_control->get_pos_estimate_U_m()),
62-
baro_alt : baro_alt_m,
55+
time_us : AP_HAL::micros64(),
56+
throttle_in : attitude_control->get_throttle_in(),
57+
angle_boost : attitude_control->angle_boost(),
58+
throttle_out : motors->get_throttle(),
59+
throttle_hover : motors->get_throttle_hover(),
60+
desired_alt : des_alt_m,
61+
inav_alt : float(pos_control->get_pos_estimate_U_m()),
62+
baro_alt : baro_alt_m,
6363
desired_rangefinder_alt : desired_rangefinder_alt_m,
6464
#if AP_RANGEFINDER_ENABLED
65-
rangefinder_alt : surface_tracking.get_dist_for_logging(),
65+
rangefinder_alt : surface_tracking.get_dist_for_logging(),
6666
#else
67-
rangefinder_alt : AP_Logger::quiet_nanf(),
67+
rangefinder_alt : AP_Logger::quiet_nanf(),
6868
#endif
69-
terr_alt : terr_alt,
70-
target_climb_rate : int16_t(target_climb_rate_ms * 100.0),
71-
climb_rate : int16_t(pos_control->get_vel_estimate_U_ms() * 100.0) // float -> int16_t
69+
terr_alt : terr_alt,
70+
target_climb_rate_cms : int16_t(target_climb_rate_ms * 100.0),
71+
climb_rate_cms : int16_t(pos_control->get_vel_estimate_U_ms() * 100.0) // float -> int16_t
7272
};
7373
logger.WriteBlock(&pkt, sizeof(pkt));
7474
}
@@ -251,31 +251,31 @@ struct PACKED log_SysIdD {
251251
uint64_t time_us;
252252
float waveform_time;
253253
float waveform_sample;
254-
float waveform_freq;
255-
float angle_x;
256-
float angle_y;
257-
float angle_z;
258-
float accel_x;
259-
float accel_y;
260-
float accel_z;
254+
float waveform_freq_hz;
255+
float angle_x_degs;
256+
float angle_y_degs;
257+
float angle_z_degs;
258+
float accel_x_mss;
259+
float accel_y_mss;
260+
float accel_z_mss;
261261
};
262262

263263
// Write an rate packet
264-
void Copter::Log_Write_SysID_Data(float waveform_time, float waveform_sample, float waveform_freq, float angle_x, float angle_y, float angle_z, float accel_x, float accel_y, float accel_z)
264+
void Copter::Log_Write_SysID_Data(float waveform_time, float waveform_sample, float waveform_freq_hz, float angle_x_degs, float angle_y_degs, float angle_z_degs, float accel_x_mss, float accel_y_mss, float accel_z_mss)
265265
{
266266
#if MODE_SYSTEMID_ENABLED
267267
struct log_SysIdD pkt_sidd = {
268268
LOG_PACKET_HEADER_INIT(LOG_SYSIDD_MSG),
269269
time_us : AP_HAL::micros64(),
270270
waveform_time : waveform_time,
271271
waveform_sample : waveform_sample,
272-
waveform_freq : waveform_freq,
273-
angle_x : angle_x,
274-
angle_y : angle_y,
275-
angle_z : angle_z,
276-
accel_x : accel_x,
277-
accel_y : accel_y,
278-
accel_z : accel_z
272+
waveform_freq_hz : waveform_freq_hz,
273+
angle_x_degs : angle_x_degs,
274+
angle_y_degs : angle_y_degs,
275+
angle_z_degs : angle_z_degs,
276+
accel_x_mss : accel_x_mss,
277+
accel_y_mss : accel_y_mss,
278+
accel_z_mss : accel_z_mss
279279
};
280280
logger.WriteBlock(&pkt_sidd, sizeof(pkt_sidd));
281281
#endif
@@ -336,14 +336,14 @@ struct PACKED log_Guided_Attitude_Target {
336336
LOG_PACKET_HEADER;
337337
uint64_t time_us;
338338
uint8_t type;
339-
float roll;
340-
float pitch;
341-
float yaw;
342-
float roll_rate;
343-
float pitch_rate;
344-
float yaw_rate;
339+
float roll_deg;
340+
float pitch_deg;
341+
float yaw_deg;
342+
float roll_rate_degs;
343+
float pitch_rate_degs;
344+
float yaw_rate_degs;
345345
float thrust;
346-
float climb_rate;
346+
float climb_rate_ms;
347347
};
348348

349349
// rate thread dt stats
@@ -391,14 +391,14 @@ void Copter::Log_Write_Guided_Attitude_Target(ModeGuided::SubMode submode, float
391391
LOG_PACKET_HEADER_INIT(LOG_GUIDED_ATTITUDE_TARGET_MSG),
392392
time_us : AP_HAL::micros64(),
393393
type : (uint8_t)submode,
394-
roll : degrees(roll_rad), // rad to deg
395-
pitch : degrees(pitch_rad), // rad to deg
396-
yaw : degrees(yaw_rad), // rad to deg
397-
roll_rate : degrees(ang_vel_rads.x), // rad/s to deg/s
398-
pitch_rate : degrees(ang_vel_rads.y), // rad/s to deg/s
399-
yaw_rate : degrees(ang_vel_rads.z), // rad/s to deg/s
394+
roll_deg : degrees(roll_rad), // rad to deg
395+
pitch_deg : degrees(pitch_rad), // rad to deg
396+
yaw_deg : degrees(yaw_rad), // rad to deg
397+
roll_rate_degs : degrees(ang_vel_rads.x), // rad/s to deg/s
398+
pitch_rate_degs : degrees(ang_vel_rads.y), // rad/s to deg/s
399+
yaw_rate_degs : degrees(ang_vel_rads.z), // rad/s to deg/s
400400
thrust : thrust,
401-
climb_rate : climb_rate_ms
401+
climb_rate_ms : climb_rate_ms
402402
};
403403
logger.WriteBlock(&pkt, sizeof(pkt));
404404
}

ArduCopter/crash_check.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ void Copter::crash_check()
7777
}
7878

7979
// check for speed under 10m/s (if available)
80-
Vector3f vel_ned;
81-
if (ahrs.get_velocity_NED(vel_ned) && (vel_ned.length() >= CRASH_CHECK_SPEED_MAX)) {
80+
Vector3f vel_ned_ms;
81+
if (ahrs.get_velocity_NED(vel_ned_ms) && (vel_ned_ms.length() >= CRASH_CHECK_SPEED_MAX)) {
8282
crash_counter = 0;
8383
return;
8484
}

ArduCopter/land_detector.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ static uint32_t land_detector_count = 0;
1616
void Copter::update_land_and_crash_detectors()
1717
{
1818
// update 1hz filtered acceleration
19-
Vector3f accel_ef = ahrs.get_accel_ef();
20-
accel_ef.z += GRAVITY_MSS;
21-
land_accel_ef_filter.apply(accel_ef, scheduler.get_loop_period_s());
19+
Vector3f accel_ef_mss = ahrs.get_accel_ef();
20+
accel_ef_mss.z += GRAVITY_MSS;
21+
land_accel_ef_filter.apply(accel_ef_mss, scheduler.get_loop_period_s());
2222

2323
update_land_detector();
2424

ArduCopter/mode.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -484,28 +484,28 @@ void Mode::get_pilot_desired_lean_angles_rad(float &roll_out_rad, float &pitch_o
484484
// transform pilot's roll or pitch input into a desired velocity
485485
Vector2f Mode::get_pilot_desired_velocity(float vel_max) const
486486
{
487-
Vector2f vel;
487+
Vector2f vel_ne_ms;
488488

489489
if (!rc().has_valid_input()) {
490-
return vel;
490+
return vel_ne_ms;
491491
}
492492
// fetch roll and pitch inputs
493-
float roll_out = channel_roll->norm_input_dz();
494-
float pitch_out = channel_pitch->norm_input_dz();
493+
float roll_out_norm = channel_roll->norm_input_dz();
494+
float pitch_out_norm = channel_pitch->norm_input_dz();
495495

496496
// convert roll and pitch inputs into velocity in NE frame
497-
vel = Vector2f(-pitch_out, roll_out);
498-
if (vel.is_zero()) {
499-
return vel;
497+
vel_ne_ms = Vector2f(-pitch_out_norm, roll_out_norm);
498+
if (vel_ne_ms.is_zero()) {
499+
return vel_ne_ms;
500500
}
501-
vel = copter.ahrs.body_to_earth2D(vel);
501+
vel_ne_ms = copter.ahrs.body_to_earth2D(vel_ne_ms);
502502

503503
// Transform square input range to circular output
504504
// vel_scalar is the vector to the edge of the +- 1.0 square in the direction of the current input
505-
Vector2f vel_scalar = vel / MAX(fabsf(vel.x), fabsf(vel.y));
505+
Vector2f vel_scalar = vel_ne_ms / MAX(fabsf(vel_ne_ms.x), fabsf(vel_ne_ms.y));
506506
// We scale the output by the ratio of the distance to the square to the unit circle and multiply by vel_max
507-
vel *= vel_max / vel_scalar.length();
508-
return vel;
507+
vel_ne_ms *= vel_max / vel_scalar.length();
508+
return vel_ne_ms;
509509
}
510510

511511
bool Mode::_TakeOff::triggered_ms(const float target_climb_rate_ms) const
@@ -741,15 +741,15 @@ void Mode::land_run_horizontal_control()
741741
// get the velocity of the target
742742
copter.precland.get_target_velocity_ms(pos_control->get_vel_estimate_NED_ms().xy(), target_vel_ne_ms);
743743

744-
Vector2f accel_zero;
744+
Vector2f accel_ne_zero;
745745
// target vel will remain zero if landing target is stationary
746-
pos_control->input_pos_vel_accel_NE_m(target_pos_ne_m, target_vel_ne_ms, accel_zero);
746+
pos_control->input_pos_vel_accel_NE_m(target_pos_ne_m, target_vel_ne_ms, accel_ne_zero);
747747
}
748748
#endif
749749

750750
if (!copter.ap.prec_land_active) {
751-
Vector2f accel;
752-
pos_control->input_vel_accel_NE_m(vel_correction_ms, accel);
751+
Vector2f accel_ne_zero;
752+
pos_control->input_vel_accel_NE_m(vel_correction_ms, accel_ne_zero);
753753
}
754754

755755
// run pos controller
@@ -984,10 +984,10 @@ float Mode::get_pilot_desired_yaw_rate_rads() const
984984
}
985985

986986
// Get yaw input
987-
const float yaw_in = channel_yaw->norm_input_dz();
987+
const float yaw_in_norm = channel_yaw->norm_input_dz();
988988

989989
// convert pilot input to the desired yaw rate
990-
return radians(g2.command_model_pilot_y.get_rate()) * input_expo(yaw_in, g2.command_model_pilot_y.get_expo());
990+
return radians(g2.command_model_pilot_y.get_rate()) * input_expo(yaw_in_norm, g2.command_model_pilot_y.get_expo());
991991
}
992992

993993
// pass-through functions to reduce code churn on conversion;

ArduCopter/mode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ class ModeAcro_Heli : public ModeAcro {
484484

485485
bool init(bool ignore_checks) override;
486486
void run() override;
487-
void virtual_flybar( float &roll_out, float &pitch_out, float &yaw_out, float pitch_leak, float roll_leak);
487+
void virtual_flybar( float &roll_out_rads, float &pitch_out_rads, float &yaw_out_rads, float pitch_leak, float roll_leak);
488488

489489
protected:
490490
private:

0 commit comments

Comments
 (0)