From 631daf67c5b7578c1ee9ebac2e73337c88e75d95 Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Wed, 2 Nov 2022 08:32:58 +0000 Subject: [PATCH 1/9] Add slow_mode command and trace --- controller/dt_ctrl.ctrl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/controller/dt_ctrl.ctrl b/controller/dt_ctrl.ctrl index 99b7097..b1a890d 100644 --- a/controller/dt_ctrl.ctrl +++ b/controller/dt_ctrl.ctrl @@ -63,6 +63,7 @@ blocks ($(frequency), $(delay)) { { "rangecheck", "azimuth_speed_range_positive" } { "or2", "azimuth_position_range" } { "command_bool", "azimuth_recover" } + { "command_bool", "azimuth_slow_mode" } { "and2", "azimuth_position_safe" } { "log", "azimuth_position_range_log" } { "log", "azimuth_position_safe_log" } @@ -302,7 +303,8 @@ traces { { "Azimuth_Drive_Safety_p270", "Boolean", $<Azimuth_Drive_Safety_p270> } { "Azimuth_Drive_Safety_m270", "Boolean", $<Azimuth_Drive_Safety_m270> } { "Azimuth_Override", "Boolean", "azimuth_recover", "value" } - + { "Azimuth_Slow_Mode", "Boolean", "azimuth_slow_mode", "value" } + { "Focusbox_Position", "Volt", "dt_az", "ae1" } { "Elevation_Position", "rad", $<Elevation_Position> } -- GitLab From 9c85d3f7c1ed00a896168630463865657cb6340e Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Wed, 2 Nov 2022 11:19:28 +0000 Subject: [PATCH 2/9] Add slow_mode input to spg3d --- controller/block/block_setpoint_generator_3d.c | 4 ++++ controller/block/block_setpoint_generator_3d.test.ctrl | 1 + controller/dt_ctrl.ctrl | 2 ++ 3 files changed, 7 insertions(+) diff --git a/controller/block/block_setpoint_generator_3d.c b/controller/block/block_setpoint_generator_3d.c index 0c733cf..1319d2f 100644 --- a/controller/block/block_setpoint_generator_3d.c +++ b/controller/block/block_setpoint_generator_3d.c @@ -48,6 +48,8 @@ | | ----| 5 track_v_cmd | | | + ----| 6 slow_mode | + | | ------------------------------- 'setpoint' is the setpoint as the user requested it. @@ -88,6 +90,7 @@ struct controller_block_private { float *track_v; bool *track_x_cmd; bool *track_v_cmd; + bool *slow_mode; /* beware: 'samples' is the time unit, not 'seconds', all parameters and commands are scaled on block entry/exit */ @@ -988,6 +991,7 @@ static struct controller_block_interm_list interms[] = { { "track_v", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, track_v) }, { "track_x_cmd", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, track_x_cmd) }, { "track_v_cmd", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, track_v_cmd) }, + { "slow_mode", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, slow_mode) }, { NULL } }; diff --git a/controller/block/block_setpoint_generator_3d.test.ctrl b/controller/block/block_setpoint_generator_3d.test.ctrl index ea9bb23..c849d74 100644 --- a/controller/block/block_setpoint_generator_3d.test.ctrl +++ b/controller/block/block_setpoint_generator_3d.test.ctrl @@ -29,6 +29,7 @@ links { { "track_v", "value", "spg", "track_v", true } { "false", "value", "spg", "track_x_cmd", true } { "false", "value", "spg", "track_v_cmd", true } + { "false", "value", "spg", "slow_mode", true } { "spg", "x", "x", "value", true } { "spg", "v", "v", "value", true } diff --git a/controller/dt_ctrl.ctrl b/controller/dt_ctrl.ctrl index b1a890d..c0f09b0 100644 --- a/controller/dt_ctrl.ctrl +++ b/controller/dt_ctrl.ctrl @@ -144,6 +144,7 @@ links { { "zero", "value", "azimuth_spg", "track_v" , true } { "false", "value", "azimuth_spg", "track_x_cmd" , true } { "false", "value", "azimuth_spg", "track_v_cmd" , true } + { "false", "value", "azimuth_spg", "slow_mode" , true } { "azimuth_spg", "x", "azimuth_servo_state", "spg_x" , true } { "azimuth_spg", "v", "azimuth_servo_state", "spg_v" , true } { "azimuth_spg", "a", "azimuth_servo_state", "spg_a" , true } @@ -193,6 +194,7 @@ links { { "zero", "value", "elevation_spg", "track_v" , true } { "false", "value", "elevation_spg", "track_x_cmd" , true } { "false", "value", "elevation_spg", "track_v_cmd" , true } + { "false", "value", "elevation_spg", "slow_mode" , true } { "elevation_spg", "x", "elevation_servo_state", "spg_x" , true } { "elevation_spg", "v", "elevation_servo_state", "spg_v" , true } { "elevation_spg", "a", "elevation_servo_state", "spg_a" , true } -- GitLab From 22c504abd5837c44ae6d32e020ee4fbaf4c56aa1 Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Wed, 2 Nov 2022 20:27:09 +0000 Subject: [PATCH 3/9] Add direct slow mode --- .../block/block_setpoint_generator_3d.c | 39 +++++++++++-------- controller/dt_ctrl.ctrl | 4 +- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/controller/block/block_setpoint_generator_3d.c b/controller/block/block_setpoint_generator_3d.c index 1319d2f..d29de18 100644 --- a/controller/block/block_setpoint_generator_3d.c +++ b/controller/block/block_setpoint_generator_3d.c @@ -34,23 +34,23 @@ inputs outputs nr name nr name - ------------------------------- - | | - ----| 0 reset_x 0 x |---- - | | - ----| 1 reset 1 v |---- - | | - ----| 2 track_x 2 a |---- - | | - ----| 3 track_v 3 j |---- - | | - ----| 4 track_x_cmd 4 setpoint |---- - | | - ----| 5 track_v_cmd | - | | - ----| 6 slow_mode | - | | - ------------------------------- + ------------------------------------- + | | + ----| 0 reset_x 0 x |---- + | | + ----| 1 reset 1 v |---- + | | + ----| 2 track_x 2 a |---- + | | + ----| 3 track_v 3 j |---- + | | + ----| 4 track_x_cmd 4 setpoint |---- + | | + ----| 5 track_v_cmd 5 slow_mode_used | + | | + ----| 6 slow_mode | + | | + ------------------------------------- 'setpoint' is the setpoint as the user requested it. 'x' is the output of the setpoint generator. @@ -91,6 +91,7 @@ struct controller_block_private { bool *track_x_cmd; bool *track_v_cmd; bool *slow_mode; + bool slow_mode_used; /* beware: 'samples' is the time unit, not 'seconds', all parameters and commands are scaled on block entry/exit */ @@ -242,9 +243,11 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) bool must_brake = false; bool good_x; bool good_v; + bool slow_mode_used; cur_x = priv->cur_x; cur_v = priv->cur_v; + slow_mode_used = *priv->slow_mode; // TODO add logic here! t_max_a = priv->t_max_a; @@ -809,6 +812,7 @@ set_output: priv->cmd_x_out = priv->cmd_x; priv->cur_x = cur_x; priv->cur_v = cur_v; + priv->slow_mode_used = slow_mode_used; } static int block_setpoint_generator_command_filter(struct controller_command *command, @@ -1001,6 +1005,7 @@ static struct controller_block_outterm_list outterms[] = { { "a", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cur_a_out) }, { "j", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cur_j_out) }, { "setpoint", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cmd_x_out) }, + { "slow_mode_used", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, slow_mode_used) }, { "id", CONTROLLER_BLOCK_TERM_UINT32, offsetof(struct controller_block_private, id) }, { NULL } }; diff --git a/controller/dt_ctrl.ctrl b/controller/dt_ctrl.ctrl index c0f09b0..baa289e 100644 --- a/controller/dt_ctrl.ctrl +++ b/controller/dt_ctrl.ctrl @@ -64,6 +64,7 @@ blocks ($(frequency), $(delay)) { { "or2", "azimuth_position_range" } { "command_bool", "azimuth_recover" } { "command_bool", "azimuth_slow_mode" } + { "value", "azimuth_slow_mode_used" } { "and2", "azimuth_position_safe" } { "log", "azimuth_position_range_log" } { "log", "azimuth_position_safe_log" } @@ -144,7 +145,7 @@ links { { "zero", "value", "azimuth_spg", "track_v" , true } { "false", "value", "azimuth_spg", "track_x_cmd" , true } { "false", "value", "azimuth_spg", "track_v_cmd" , true } - { "false", "value", "azimuth_spg", "slow_mode" , true } + { "azimuth_slow_mode", "value", "azimuth_spg", "slow_mode" , true } { "azimuth_spg", "x", "azimuth_servo_state", "spg_x" , true } { "azimuth_spg", "v", "azimuth_servo_state", "spg_v" , true } { "azimuth_spg", "a", "azimuth_servo_state", "spg_a" , true } @@ -305,7 +306,6 @@ traces { { "Azimuth_Drive_Safety_p270", "Boolean", $<Azimuth_Drive_Safety_p270> } { "Azimuth_Drive_Safety_m270", "Boolean", $<Azimuth_Drive_Safety_m270> } { "Azimuth_Override", "Boolean", "azimuth_recover", "value" } - { "Azimuth_Slow_Mode", "Boolean", "azimuth_slow_mode", "value" } { "Focusbox_Position", "Volt", "dt_az", "ae1" } -- GitLab From ef34076f69b2b04b0aae54e17c04d549ea7c5b9d Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Wed, 2 Nov 2022 20:54:48 +0000 Subject: [PATCH 4/9] Implement logic for changing slow mode --- controller/block/block_setpoint_generator_3d.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/controller/block/block_setpoint_generator_3d.c b/controller/block/block_setpoint_generator_3d.c index d29de18..8063172 100644 --- a/controller/block/block_setpoint_generator_3d.c +++ b/controller/block/block_setpoint_generator_3d.c @@ -91,7 +91,6 @@ struct controller_block_private { bool *track_x_cmd; bool *track_v_cmd; bool *slow_mode; - bool slow_mode_used; /* beware: 'samples' is the time unit, not 'seconds', all parameters and commands are scaled on block entry/exit */ @@ -139,6 +138,7 @@ struct controller_block_private { double cur_v; double cur_a; double cur_j; + bool cur_slow_mode; float cur_x_out; /* float version of the internal values */ float cur_v_out; float cur_a_out; @@ -243,11 +243,17 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) bool must_brake = false; bool good_x; bool good_v; - bool slow_mode_used; cur_x = priv->cur_x; cur_v = priv->cur_v; - slow_mode_used = *priv->slow_mode; // TODO add logic here! + if (fabs(cur_v) < 1.e-5) { + // Slow mode can only be changed when almost standing still + if (priv->cur_slow_mode != *priv->slow_mode) { + log_send(LOG_T_WARNING, "Slow mode changed\n"); + //log_send(LOG_T_WARNING, "cur_v = %5.8g!\n", cur_v); + } + priv->cur_slow_mode = *priv->slow_mode; + } t_max_a = priv->t_max_a; @@ -812,7 +818,6 @@ set_output: priv->cmd_x_out = priv->cmd_x; priv->cur_x = cur_x; priv->cur_v = cur_v; - priv->slow_mode_used = slow_mode_used; } static int block_setpoint_generator_command_filter(struct controller_command *command, @@ -1005,7 +1010,7 @@ static struct controller_block_outterm_list outterms[] = { { "a", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cur_a_out) }, { "j", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cur_j_out) }, { "setpoint", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cmd_x_out) }, - { "slow_mode_used", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, slow_mode_used) }, + { "slow_mode_used", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, cur_slow_mode) }, { "id", CONTROLLER_BLOCK_TERM_UINT32, offsetof(struct controller_block_private, id) }, { NULL } }; @@ -1061,6 +1066,7 @@ static struct controller_block * block_setpoint_generator_3d_create(char *name, spg->private->cur_v_out = 0.0; spg->private->cur_a_out = 0.0; spg->private->cur_j_out = 0.0; + spg->private->cur_slow_mode = false; spg->private->cmd_x_out = 0.0; spg->private->id = COMMAND_ID_NONE; -- GitLab From ef89ade1ced5421524ad85478f734727b1b1540a Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Thu, 3 Nov 2022 20:46:00 +0000 Subject: [PATCH 5/9] Use half speed in slow mode --- controller/block/block_setpoint_generator_3d.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/controller/block/block_setpoint_generator_3d.c b/controller/block/block_setpoint_generator_3d.c index 8063172..31df2e8 100644 --- a/controller/block/block_setpoint_generator_3d.c +++ b/controller/block/block_setpoint_generator_3d.c @@ -98,6 +98,7 @@ struct controller_block_private { float cmd_x_out; /* float version of the internal cmd_x */ double cmd_v; float max_x; + float max_v_fac; float min_x; float max_v; float max_a; @@ -253,6 +254,10 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) //log_send(LOG_T_WARNING, "cur_v = %5.8g!\n", cur_v); } priv->cur_slow_mode = *priv->slow_mode; + if (priv->cur_slow_mode) + priv->max_v_fac = 0.5; + else + priv->max_v_fac = 1.0; } t_max_a = priv->t_max_a; @@ -710,7 +715,7 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) v = v_after_ticks(priv, v, a, j, t); /* If not already at the right jerk, set it */ - if (fabs(v) > priv->max_v && signbit(priv->cur_j) != signbit(j)) { + if (fabs(v) > priv->max_v_fac * priv->max_v && signbit(priv->cur_j) != signbit(j)) { if (t <= 1) { priv->cur_j = 0; priv->cur_a = 0; @@ -768,7 +773,7 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) priv->start_t = 0; } - if (fabs(cur_v) >= priv->max_v) { + if (fabs(cur_v) >= priv->max_v_fac * priv->max_v) { /* prevent further acceleration beyond max v */ if (signbit(cur_v) == signbit(priv->cur_a)) { priv->cur_a = 0.0; @@ -776,7 +781,7 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) if (signbit(cur_v) == signbit(priv->cur_j)) { priv->cur_j = 0.0; } - cur_v = copysign(priv->max_v, cur_v); + cur_v = copysign(priv->max_v_fac * priv->max_v, cur_v); priv->start_j = priv->cur_j; priv->start_a = priv->cur_a; @@ -842,8 +847,8 @@ static int block_setpoint_generator_command_filter(struct controller_command *co case COMMAND_PTYPE_SPEED: { float value = entry->value.f; - if (fabs(value) > priv->max_v_sec) - value = copysign(priv->max_v_sec, value); + if (fabs(value) > priv->max_v_fac * priv->max_v_sec) + value = copysign(priv->max_v_fac * priv->max_v_sec, value); entry->value.f = value; @@ -1036,6 +1041,7 @@ static struct controller_block * block_setpoint_generator_3d_create(char *name, spg->private->max_x = 0.0; spg->private->min_x = 0.0; spg->private->max_v = 0.0; + spg->private->max_v_fac = 1.0; spg->private->max_a = 0.0; spg->private->inv_max_a = 1.0; spg->private->max_j = 0.0; -- GitLab From f05a9f42c24415915f926a7b9c9c94dbc6efa017 Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Thu, 3 Nov 2022 21:15:19 +0000 Subject: [PATCH 6/9] Add slow mode to mech.html --- console/htdocs/mech.html | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/console/htdocs/mech.html b/console/htdocs/mech.html index 3ba55d8..5e6f216 100644 --- a/console/htdocs/mech.html +++ b/console/htdocs/mech.html @@ -119,6 +119,17 @@ var azimuth_software = new dt_ui_window_trace("azimuth_software", "Azimuth Softw is_number: false, highlight: false, }, + { + name: "azimuth_spg.slow_mode_used", + frequency: 0, + label: "Max speed", + true_text: "Reduced max speed", + false_text: "Normal max speed", + func: one, + is_bool: true, + true_color: "orange", + false_color: "lightgreen" + }, { name: "Azimuth_Position", frequency: 4, @@ -467,6 +478,7 @@ var weather_url = "status.cgi"; var azimuth_enable_command = new controller_command("azimuth_servo_state", "bool"); var azimuth_recover_command = new controller_command("azimuth_recover", "bool"); +var azimuth_slow_mode_command = new controller_command("azimuth_slow_mode", "bool"); var elevation_enable_command = new controller_command("elevation_servo_state", "bool"); var elevation_recover_command = new controller_command("elevation_recover", "bool"); @@ -475,10 +487,13 @@ var button_azimuth_enable = new dt_ui_button("button_azimuth_enable"); var button_azimuth_disable = new dt_ui_button("button_azimuth_disable"); var button_azimuth_override = new dt_ui_button("button_azimuth_override"); var button_azimuth_normal = new dt_ui_button("button_azimuth_normal"); +var button_azimuth_normal_speed = new dt_ui_button("button_azimuth_normal_speed"); +var button_azimuth_reduced_speed = new dt_ui_button("button_azimuth_reduced_speed"); azimuth_software.add([ button_azimuth_enable, button_azimuth_disable, - button_azimuth_override, button_azimuth_normal, ]); + button_azimuth_override, button_azimuth_normal, + button_azimuth_normal_speed, button_azimuth_reduced_speed, ]); button_azimuth_enable.text_set("Enable"); button_azimuth_enable.color_set("darkgreen"); @@ -506,16 +521,28 @@ button_azimuth_override.onclick = function azimuth_override() { azimuth_recover_command.send(1); } +button_azimuth_normal_speed.text_set("Set normal speed"); +button_azimuth_normal_speed.color_set("darkgreen"); +button_azimuth_normal_speed.onclick = function azimuth_set_normal_speed() { + azimuth_slow_mode_command.send(0); +} + +button_azimuth_reduced_speed.text_set("Set reduced speed"); +button_azimuth_reduced_speed.color_set("darkgreen"); +button_azimuth_reduced_speed.onclick = function azimuth_set_reduced_speed() { + azimuth_slow_mode_command.send(1); +} azimuth_software.resize_equal([ button_azimuth_enable, button_azimuth_disable, button_azimuth_override, button_azimuth_normal, ]); azimuth_software.align_vertical([ button_azimuth_enable, button_azimuth_normal ]); -azimuth_software.align_horizontal([ button_azimuth_enable, button_azimuth_disable ]); -azimuth_software.align_horizontal([ button_azimuth_normal, button_azimuth_override ]); - - +azimuth_software.align_horizontal([ button_azimuth_enable, button_azimuth_disable, button_azimuth_normal_speed ]); +azimuth_software.align_horizontal([ button_azimuth_normal, button_azimuth_override, button_azimuth_reduced_speed ]); +azimuth_software.resize_equal([ + button_azimuth_normal_speed, button_azimuth_reduced_speed]); +azimuth_software.align_vertical([button_azimuth_normal_speed, button_azimuth_reduced_speed]); var button_elevation_enable = new dt_ui_button("button_elevation_enable"); -- GitLab From 619aade0b61d3d65084d0823075c2a48a5dc54fa Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Sun, 7 Apr 2024 21:15:10 +0200 Subject: [PATCH 7/9] Rename slow_mode_used -> slow_mode_active --- console/htdocs/mech.html | 2 +- .../block/block_setpoint_generator_3d.c | 36 +++++++++---------- controller/dt_ctrl.ctrl | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/console/htdocs/mech.html b/console/htdocs/mech.html index 5e6f216..343d577 100644 --- a/console/htdocs/mech.html +++ b/console/htdocs/mech.html @@ -120,7 +120,7 @@ var azimuth_software = new dt_ui_window_trace("azimuth_software", "Azimuth Softw highlight: false, }, { - name: "azimuth_spg.slow_mode_used", + name: "azimuth_spg.slow_mode_active", frequency: 0, label: "Max speed", true_text: "Reduced max speed", diff --git a/controller/block/block_setpoint_generator_3d.c b/controller/block/block_setpoint_generator_3d.c index 31df2e8..cacd2ba 100644 --- a/controller/block/block_setpoint_generator_3d.c +++ b/controller/block/block_setpoint_generator_3d.c @@ -34,23 +34,23 @@ inputs outputs nr name nr name - ------------------------------------- - | | - ----| 0 reset_x 0 x |---- - | | - ----| 1 reset 1 v |---- - | | - ----| 2 track_x 2 a |---- - | | - ----| 3 track_v 3 j |---- - | | - ----| 4 track_x_cmd 4 setpoint |---- - | | - ----| 5 track_v_cmd 5 slow_mode_used | - | | - ----| 6 slow_mode | - | | - ------------------------------------- + --------------------------------------- + | | + ----| 0 reset_x 0 x |---- + | | + ----| 1 reset 1 v |---- + | | + ----| 2 track_x 2 a |---- + | | + ----| 3 track_v 3 j |---- + | | + ----| 4 track_x_cmd 4 setpoint |---- + | | + ----| 5 track_v_cmd 5 slow_mode_active | + | | + ----| 6 slow_mode | + | | + --------------------------------------- 'setpoint' is the setpoint as the user requested it. 'x' is the output of the setpoint generator. @@ -1015,7 +1015,7 @@ static struct controller_block_outterm_list outterms[] = { { "a", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cur_a_out) }, { "j", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cur_j_out) }, { "setpoint", CONTROLLER_BLOCK_TERM_FLOAT, offsetof(struct controller_block_private, cmd_x_out) }, - { "slow_mode_used", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, cur_slow_mode) }, + { "slow_mode_active", CONTROLLER_BLOCK_TERM_BOOL, offsetof(struct controller_block_private, cur_slow_mode) }, { "id", CONTROLLER_BLOCK_TERM_UINT32, offsetof(struct controller_block_private, id) }, { NULL } }; diff --git a/controller/dt_ctrl.ctrl b/controller/dt_ctrl.ctrl index baa289e..5b2ca3a 100644 --- a/controller/dt_ctrl.ctrl +++ b/controller/dt_ctrl.ctrl @@ -64,7 +64,7 @@ blocks ($(frequency), $(delay)) { { "or2", "azimuth_position_range" } { "command_bool", "azimuth_recover" } { "command_bool", "azimuth_slow_mode" } - { "value", "azimuth_slow_mode_used" } + { "value", "azimuth_slow_mode_active" } { "and2", "azimuth_position_safe" } { "log", "azimuth_position_range_log" } { "log", "azimuth_position_safe_log" } -- GitLab From 0d755b73eab33223d6212a224573b97bada48012 Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Sun, 7 Apr 2024 21:16:34 +0200 Subject: [PATCH 8/9] Rename max_v_fac -> max_v_factor --- controller/block/block_setpoint_generator_3d.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/controller/block/block_setpoint_generator_3d.c b/controller/block/block_setpoint_generator_3d.c index cacd2ba..241d9e6 100644 --- a/controller/block/block_setpoint_generator_3d.c +++ b/controller/block/block_setpoint_generator_3d.c @@ -98,7 +98,7 @@ struct controller_block_private { float cmd_x_out; /* float version of the internal cmd_x */ double cmd_v; float max_x; - float max_v_fac; + float max_v_factor; float min_x; float max_v; float max_a; @@ -255,9 +255,9 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) } priv->cur_slow_mode = *priv->slow_mode; if (priv->cur_slow_mode) - priv->max_v_fac = 0.5; + priv->max_v_factor = 0.5; else - priv->max_v_fac = 1.0; + priv->max_v_factor = 1.0; } t_max_a = priv->t_max_a; @@ -715,7 +715,7 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) v = v_after_ticks(priv, v, a, j, t); /* If not already at the right jerk, set it */ - if (fabs(v) > priv->max_v_fac * priv->max_v && signbit(priv->cur_j) != signbit(j)) { + if (fabs(v) > priv->max_v_factor * priv->max_v && signbit(priv->cur_j) != signbit(j)) { if (t <= 1) { priv->cur_j = 0; priv->cur_a = 0; @@ -773,7 +773,7 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) priv->start_t = 0; } - if (fabs(cur_v) >= priv->max_v_fac * priv->max_v) { + if (fabs(cur_v) >= priv->max_v_factor * priv->max_v) { /* prevent further acceleration beyond max v */ if (signbit(cur_v) == signbit(priv->cur_a)) { priv->cur_a = 0.0; @@ -781,7 +781,7 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) if (signbit(cur_v) == signbit(priv->cur_j)) { priv->cur_j = 0.0; } - cur_v = copysign(priv->max_v_fac * priv->max_v, cur_v); + cur_v = copysign(priv->max_v_factor * priv->max_v, cur_v); priv->start_j = priv->cur_j; priv->start_a = priv->cur_a; @@ -847,8 +847,8 @@ static int block_setpoint_generator_command_filter(struct controller_command *co case COMMAND_PTYPE_SPEED: { float value = entry->value.f; - if (fabs(value) > priv->max_v_fac * priv->max_v_sec) - value = copysign(priv->max_v_fac * priv->max_v_sec, value); + if (fabs(value) > priv->max_v_factor * priv->max_v_sec) + value = copysign(priv->max_v_factor * priv->max_v_sec, value); entry->value.f = value; @@ -1041,7 +1041,7 @@ static struct controller_block * block_setpoint_generator_3d_create(char *name, spg->private->max_x = 0.0; spg->private->min_x = 0.0; spg->private->max_v = 0.0; - spg->private->max_v_fac = 1.0; + spg->private->max_v_factor = 1.0; spg->private->max_a = 0.0; spg->private->inv_max_a = 1.0; spg->private->max_j = 0.0; -- GitLab From 2c38b093f482b87bb2daeee05f4cd610546986d8 Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <T.J.Dijkema@gmail.com> Date: Mon, 8 Apr 2024 11:18:41 +0200 Subject: [PATCH 9/9] Clarify log message --- controller/block/block_setpoint_generator_3d.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/controller/block/block_setpoint_generator_3d.c b/controller/block/block_setpoint_generator_3d.c index 241d9e6..5ca4324 100644 --- a/controller/block/block_setpoint_generator_3d.c +++ b/controller/block/block_setpoint_generator_3d.c @@ -250,7 +250,11 @@ static void setpoint_generator_3d_calculate(struct controller_block *spg) if (fabs(cur_v) < 1.e-5) { // Slow mode can only be changed when almost standing still if (priv->cur_slow_mode != *priv->slow_mode) { - log_send(LOG_T_WARNING, "Slow mode changed\n"); + if (*priv->slow_mode) { + log_send(LOG_T_WARNING, "Slow mode activated\n"); + } else { + log_send(LOG_T_WARNING, "Slow mode deactivated\n"); + } //log_send(LOG_T_WARNING, "cur_v = %5.8g!\n", cur_v); } priv->cur_slow_mode = *priv->slow_mode; -- GitLab