Skip to content
Snippets Groups Projects
Commit 81c8344a authored by Paul Beuchat's avatar Paul Beuchat
Browse files

Added the setting of the time delay for CS1 to the GUI. Needs testing

parent 37137dd4
No related branches found
No related tags found
No related merge requests found
......@@ -421,7 +421,23 @@
<property name="rightMargin">
<number>0</number>
</property>
<item row="1" column="7">
<item row="0" column="2">
<widget class="QLabel" name="label_time_delay">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Time Delay</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="8">
<layout class="QGridLayout" name="gridLayout_8">
<item row="2" column="0">
<widget class="QPushButton" name="reset_integrator_button">
......@@ -479,7 +495,7 @@
</item>
</layout>
</item>
<item row="0" column="6">
<item row="0" column="7">
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
......@@ -495,7 +511,7 @@
</property>
</spacer>
</item>
<item row="0" column="4">
<item row="0" column="5">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
......@@ -527,7 +543,7 @@
</property>
</widget>
</item>
<item row="0" column="9">
<item row="0" column="10">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
......@@ -708,7 +724,7 @@
</item>
</layout>
</item>
<item row="1" column="2">
<item row="1" column="3">
<layout class="QGridLayout" name="gridLayout_6">
<item row="1" column="0">
<widget class="QPushButton" name="set_pd_controller_parameters_button">
......@@ -824,7 +840,7 @@
</item>
</layout>
</item>
<item row="0" column="5">
<item row="0" column="6">
<widget class="QLabel" name="label_step_details">
<property name="font">
<font>
......@@ -840,7 +856,7 @@
</property>
</widget>
</item>
<item row="1" column="5">
<item row="1" column="6">
<layout class="QGridLayout" name="gridLayout_4">
<property name="leftMargin">
<number>0</number>
......@@ -900,6 +916,11 @@
<height>60</height>
</size>
</property>
<property name="font">
<font>
<family>Courier</family>
</font>
</property>
<property name="text">
<string>0.2</string>
</property>
......@@ -922,6 +943,11 @@
<height>60</height>
</size>
</property>
<property name="font">
<font>
<family>Courier</family>
</font>
</property>
<property name="text">
<string>10</string>
</property>
......@@ -971,7 +997,7 @@
</layout>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer">
<spacer name="horizontalSpacer_pd_controller">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
......@@ -986,7 +1012,7 @@
</property>
</spacer>
</item>
<item row="0" column="2">
<item row="0" column="3">
<widget class="QLabel" name="label_pid_controller">
<property name="font">
<font>
......@@ -1002,7 +1028,7 @@
</property>
</widget>
</item>
<item row="0" column="7">
<item row="0" column="8">
<widget class="QLabel" name="label_integrator">
<property name="font">
<font>
......@@ -1018,7 +1044,7 @@
</property>
</widget>
</item>
<item row="0" column="8">
<item row="0" column="9">
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
......@@ -1031,6 +1057,72 @@
</property>
</spacer>
</item>
<item row="1" column="2">
<layout class="QGridLayout" name="gridLayout_13">
<item row="0" column="0">
<widget class="QLabel" name="label_time_delay_units">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>[milli sec]</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="set_time_delay_button">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>60</height>
</size>
</property>
<property name="text">
<string>Set</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="lineEdit_time_delay">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>60</height>
</size>
</property>
<property name="font">
<font>
<family>Courier</family>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="7" column="0">
......
......@@ -128,6 +128,8 @@ private slots:
void on_set_lead_compensator_parameters_button_clicked();
void on_set_time_delay_button_clicked();
void on_toggle_integrator_button_clicked();
void on_reset_integrator_button_clicked();
......@@ -136,6 +138,7 @@ private slots:
void on_lineEdit_alpha_returnPressed();
void on_lineEdit_kp_returnPressed();
void on_lineEdit_kd_returnPressed();
void on_lineEdit_time_delay_returnPressed();
void on_lineEdit_step_size_returnPressed();
void on_lineEdit_step_duration_returnPressed();
......@@ -201,6 +204,9 @@ private:
// > For requesting a change in the integrator state
ros::Publisher requestIntegratorStateChangePublisher;
// > For requesting the time delay to be changed
ros::Publisher requestTimeDelayChangePublisher;
// SUBSCRIBER
// > For being notified when the setpoint is changed
ros::Subscriber setpointChangedSubscriber;
......@@ -240,6 +246,8 @@ private:
void publishRequestForIntegratorStateChange(int flag_to_publish);
void publishRequestForTimeDelayChange(int time_delay_to_publish);
};
#endif // CSONECONTROLLERTAB_H
......@@ -47,6 +47,15 @@ CsoneControllerTab::CsoneControllerTab(QWidget *parent) :
ui->red_frame_position_left->setVisible(false);
ui->red_frame_position_right->setVisible(false);
// ------------------------------------------------------------- //
// HIDE THE PD CONTROLLER FIELDS
ui->label_pid_controller->hide();
ui->label_kp->hide();
ui->label_kd->hide();
ui->lineEdit_kp->hide();
ui->lineEdit_kd->hide();
ui->set_pd_controller_parameters_button->hide();
// ------------------------------------------------------------- //
// SETUP THE CHART VIEW FOR THE X POSITION
//
......@@ -157,6 +166,9 @@ CsoneControllerTab::CsoneControllerTab(QWidget *parent) :
// CREATE THE REQUEST CONTROLLER PARAMTER CHANGE PUBLISHER
requestControllerParamterChangePublisher = nodeHandle_for_this_gui.advertise<dfall_pkg::SetpointWithHeader>("CsoneControllerService/RequestControllerParametersChange", 1);
// CREATE THE REQUEST CONTROLLER PARAMTER CHANGE PUBLISHER
requestTimeDelayChangePublisher = nodeHandle_for_this_gui.advertise<dfall_pkg::IntWithHeader>("CsoneControllerService/RequestTimeDelayChange", 1);
// CREATE THE REQUEST INTEGRATOR STATE CHANGE PUBLISHER
requestIntegratorStateChangePublisher = nodeHandle_for_this_gui.advertise<dfall_pkg::IntWithHeader>("CsoneControllerService/RequestIntegratorStateChange", 1);
......@@ -402,7 +414,7 @@ void CsoneControllerTab::on_set_lead_compensator_parameters_button_clicked()
k = 0.0;
ui->lineEdit_k->setText(qstr + QString::number( k, 'f', 4));
}
else if (T > 100.0)
else if (k > 100.0)
{
k = 100.0;
ui->lineEdit_k->setText(qstr + QString::number( k, 'f', 4));
......@@ -461,6 +473,35 @@ void CsoneControllerTab::on_set_lead_compensator_parameters_button_clicked()
void CsoneControllerTab::on_set_time_delay_button_clicked()
{
// Initialise local variable for the time delay
float time_delay_int = 0;
// Take the new value if available, otherwise use default
if(!ui->lineEdit_time_delay->text().isEmpty())
{
float time_delay_float = (ui->lineEdit_time_delay->text()).toFloat();
// Ensure that it is in the range [0,1000]
if (time_delay_float < 0.0)
time_delay_int = 0;
else if (time_delay_float > 1000.0)
time_delay_int = 1000;
else
time_delay_int = int(time_delay_float);
}
else
{
time_delay_int = 0;
}
// Put the value back into the line edit
ui->lineEdit_time_delay->setText( QString::number( time_delay_int, 'd', 0) );
// Call the function to publish the time delay
publishRequestForTimeDelayChange(time_delay_int);
}
void CsoneControllerTab::on_toggle_integrator_button_clicked()
......@@ -504,6 +545,11 @@ void CsoneControllerTab::on_lineEdit_kd_returnPressed()
ui->set_pd_controller_parameters_button->animateClick();
}
void CsoneControllerTab::on_lineEdit_time_delay_returnPressed()
{
ui->set_time_delay_button->animateClick();
}
void CsoneControllerTab::on_lineEdit_step_size_returnPressed()
{
ui->perform_step_button->animateClick();
......@@ -1056,6 +1102,33 @@ void CsoneControllerTab::publishRequestForIntegratorStateChange(int flag_to_publ
void CsoneControllerTab::publishRequestForTimeDelayChange(int time_delay_to_publish)
{
#ifdef CATKIN_MAKE
// Initialise the message as a local variable
dfall_pkg::IntWithHeader msg;
// Fill the header of the message
fillIntMessageHeader( msg );
// Fill in the controller values
msg.data = time_delay_to_publish;
// Publish the setpoint
this->requestTimeDelayChangePublisher.publish(msg);
// Inform the user about the change
ROS_INFO_STREAM("[CSONE CONTROLLER GUI] Published request for time delay of " << time_delay_to_publish << " milliseconds");
#else
// TO ASSIST WITH DEBUGGING WHEN COMPILED AND RUN IN "QtCreator"
QTextStream(stdout) << "[CSONE CONTROLLER GUI] would publish request for time delay of " << time_delay_to_publish << " milliseconds";
#endif
}
// ----------------------------------------------------------------------------------
// A GGGG EEEEE N N TTTTT III DDDD SSSS
// A A G E NN N T I D D S
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment