Commit b9863c56 authored by Mariano Lizarraga's avatar Mariano Lizarraga

Added support for HIL SIM state. Changed the labels that are show for certain modes that SLUGS uses

parent 040e413a
...@@ -286,30 +286,44 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) ...@@ -286,30 +286,44 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message)
case (uint8_t)MAV_MODE_MANUAL: case (uint8_t)MAV_MODE_MANUAL:
mode = "MANUAL MODE"; mode = "MANUAL MODE";
break; break;
#ifdef MAVLINK_ENABLED_SLUGS
case (uint8_t)MAV_MODE_AUTO:
mode = "WAYPOINT MODE";
break;
case (uint8_t)MAV_MODE_GUIDED:
mode = "MID-L CMDS MODE";
break;
case (uint8_t)MAV_MODE_TEST1:
mode = "PASST MODE";
break;
case (uint8_t)MAV_MODE_TEST2:
mode = "SEL PT MODE";
break;
#else
case (uint8_t)MAV_MODE_AUTO: case (uint8_t)MAV_MODE_AUTO:
mode = "AUTO MODE"; mode = "AUTO MODE";
break; break;
case (uint8_t)MAV_MODE_GUIDED: case (uint8_t)MAV_MODE_GUIDED:
mode = "GUIDED MODE"; mode = "GUIDED MODE";
break; break;
case (uint8_t)MAV_MODE_READY:
mode = "READY MODE";
break;
case (uint8_t)MAV_MODE_TEST1: case (uint8_t)MAV_MODE_TEST1:
mode = "TEST1 MODE"; mode = "TEST1 MODE";
break; break;
case (uint8_t)MAV_MODE_TEST2: case (uint8_t)MAV_MODE_TEST2:
mode = "TEST2 MODE"; mode = "TEST2 MODE";
break; break;
#ifdef MAVLINK_ENABLED_SLUGS #endif
case (uint8_t)MAV_MODE_TEST3: case (uint8_t)MAV_MODE_READY:
mode = "HIL MODE"; mode = "READY MODE";
break; break;
#else
case (uint8_t)MAV_MODE_TEST3: case (uint8_t)MAV_MODE_TEST3:
mode = "TEST3 MODE"; mode = "TEST3 MODE";
break; break;
#endif
case (uint8_t)MAV_MODE_RC_TRAINING: case (uint8_t)MAV_MODE_RC_TRAINING:
mode = "RC TRAINING MODE"; mode = "RC TRAINING MODE";
break; break;
...@@ -1404,10 +1418,16 @@ void UAS::getStatusForCode(int statusCode, QString& uasState, QString& stateDesc ...@@ -1404,10 +1418,16 @@ void UAS::getStatusForCode(int statusCode, QString& uasState, QString& stateDesc
uasState = tr("EMERGENCY"); uasState = tr("EMERGENCY");
stateDescription = tr("EMERGENCY: Land Immediately!"); stateDescription = tr("EMERGENCY: Land Immediately!");
break; break;
case MAV_STATE_HILSIM:
uasState = tr("HIL SIM");
stateDescription = tr("HIL Simulation, Sensors read from SIM");
break;
case MAV_STATE_POWEROFF: case MAV_STATE_POWEROFF:
uasState = tr("SHUTDOWN"); uasState = tr("SHUTDOWN");
stateDescription = tr("Powering off system."); stateDescription = tr("Powering off system.");
break; break;
default: default:
uasState = tr("UNKNOWN"); uasState = tr("UNKNOWN");
stateDescription = tr("Unknown system state"); stateDescription = tr("Unknown system state");
...@@ -2000,12 +2020,14 @@ void UAS::clearWaypointList() ...@@ -2000,12 +2020,14 @@ void UAS::clearWaypointList()
void UAS::halt() void UAS::halt()
{ {
mavlink_message_t msg; mavlink_message_t msg;
// TODO Replace MG System ID with static function call and allow to change ID in GUI // TODO Replace MG System ID with static function call and allow to change ID in GUI
mavlink_msg_action_pack(MG::SYSTEM::ID, MG::SYSTEM::COMPID, &msg, this->getUASID(), MAV_COMP_ID_IMU, (int)MAV_ACTION_HALT); mavlink_msg_action_pack(MG::SYSTEM::ID, MG::SYSTEM::COMPID, &msg, this->getUASID(), MAV_COMP_ID_IMU, (int)MAV_ACTION_HALT);
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg); sendMessage(msg);
} }
void UAS::go() void UAS::go()
...@@ -2035,6 +2057,7 @@ void UAS::home() ...@@ -2035,6 +2057,7 @@ void UAS::home()
*/ */
void UAS::emergencySTOP() void UAS::emergencySTOP()
{ {
mavlink_message_t msg; mavlink_message_t msg;
// TODO Replace MG System ID with static function call and allow to change ID in GUI // TODO Replace MG System ID with static function call and allow to change ID in GUI
mavlink_msg_action_pack(MG::SYSTEM::ID, MG::SYSTEM::COMPID, &msg, this->getUASID(), MAV_COMP_ID_IMU, (int)MAV_ACTION_EMCY_LAND); mavlink_msg_action_pack(MG::SYSTEM::ID, MG::SYSTEM::COMPID, &msg, this->getUASID(), MAV_COMP_ID_IMU, (int)MAV_ACTION_EMCY_LAND);
...@@ -2077,6 +2100,29 @@ bool UAS::emergencyKILL() ...@@ -2077,6 +2100,29 @@ bool UAS::emergencyKILL()
return result; return result;
} }
void UAS::startHil(){
mavlink_message_t msg;
// TODO Replace MG System ID with static function call and allow to change ID in GUI
mavlink_msg_action_pack(MG::SYSTEM::ID, MG::SYSTEM::COMPID, &msg, this->getUASID(), MAV_COMP_ID_IMU,(int)MAV_ACTION_START_HILSIM);
// Send message twice to increase chance of reception
sendMessage(msg);
sendMessage(msg);
}
void UAS::stopHil(){
mavlink_message_t msg;
// TODO Replace MG System ID with static function call and allow to change ID in GUI
mavlink_msg_action_pack(MG::SYSTEM::ID, MG::SYSTEM::COMPID, &msg, this->getUASID(), MAV_COMP_ID_IMU,(int)MAV_ACTION_STOP_HILSIM);
// Send message twice to increase chance of reception
sendMessage(msg);
sendMessage(msg);
}
void UAS::shutdown() void UAS::shutdown()
{ {
bool result = false; bool result = false;
...@@ -2084,6 +2130,7 @@ void UAS::shutdown() ...@@ -2084,6 +2130,7 @@ void UAS::shutdown()
msgBox.setIcon(QMessageBox::Critical); msgBox.setIcon(QMessageBox::Critical);
msgBox.setText("Shutting down the UAS"); msgBox.setText("Shutting down the UAS");
msgBox.setInformativeText("Do you want to shut down the onboard computer?"); msgBox.setInformativeText("Do you want to shut down the onboard computer?");
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Cancel);
int ret = msgBox.exec(); int ret = msgBox.exec();
...@@ -2101,6 +2148,7 @@ void UAS::shutdown() ...@@ -2101,6 +2148,7 @@ void UAS::shutdown()
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg); sendMessage(msg);
result = true; result = true;
} }
} }
......
...@@ -233,6 +233,13 @@ public slots: ...@@ -233,6 +233,13 @@ public slots:
void home(); void home();
void halt(); void halt();
void go(); void go();
/** @brief Places the UAV in Hardware-in-the-Loop simulation status **/
void startHil();
/** @brief Stops the UAV's Hardware-in-the-Loop simulation status **/
void stopHil();
/** @brief Stops the robot system. If it is an MAV, the robot starts the emergency landing procedure **/ /** @brief Stops the robot system. If it is an MAV, the robot starts the emergency landing procedure **/
void emergencySTOP(); void emergencySTOP();
......
...@@ -108,6 +108,8 @@ void SlugsHilSim::putInHilMode(void){ ...@@ -108,6 +108,8 @@ void SlugsHilSim::putInHilMode(void){
ui->bt_startHil->setText(buttonCaption); ui->bt_startHil->setText(buttonCaption);
activeUas->startHil();
} else { } else {
ui->bt_startHil->setChecked(false); ui->bt_startHil->setChecked(false);
} }
...@@ -120,6 +122,7 @@ void SlugsHilSim::putInHilMode(void){ ...@@ -120,6 +122,7 @@ void SlugsHilSim::putInHilMode(void){
ui->bt_startHil->setText(buttonCaption); ui->bt_startHil->setText(buttonCaption);
rxSocket->disconnectFromHost(); rxSocket->disconnectFromHost();
activeUas->stopHil();
} }
} }
...@@ -151,8 +154,6 @@ void SlugsHilSim::activeUasSet(UASInterface* uas){ ...@@ -151,8 +154,6 @@ void SlugsHilSim::activeUasSet(UASInterface* uas){
if (uas != NULL) { if (uas != NULL) {
activeUas = static_cast <UAS *>(uas); activeUas = static_cast <UAS *>(uas);
//connect(uas, SIGNAL())
} }
} }
......
...@@ -3,11 +3,19 @@ ...@@ -3,11 +3,19 @@
#define CONTROL_MODE_LOCKED "MODE LOCKED" #define CONTROL_MODE_LOCKED "MODE LOCKED"
#define CONTROL_MODE_MANUAL "MODE MANUAL" #define CONTROL_MODE_MANUAL "MODE MANUAL"
#define CONTROL_MODE_GUIDED "MODE GUIDED"
#define CONTROL_MODE_AUTO "MODE AUTO" #ifdef MAVLINK_ENABLED_SLUGS
#define CONTROL_MODE_TEST1 "MODE TEST1" #define CONTROL_MODE_GUIDED "MODE MID-L CMDS"
#define CONTROL_MODE_TEST2 "MODE TEST2" #define CONTROL_MODE_AUTO "MODE WAYPOINT"
#define CONTROL_MODE_TEST3 "MODE TEST3" #define CONTROL_MODE_TEST1 "MODE PASST"
#define CONTROL_MODE_TEST2 "MODE SEL PT"
#else
#define CONTROL_MODE_GUIDED "MODE GUIDED"
#define CONTROL_MODE_AUTO "MODE AUTO"
#define CONTROL_MODE_TEST1 "MODE TEST1"
#define CONTROL_MODE_TEST2 "MODE TEST2"
#endif
#define CONTROL_MODE_READY "MODE TEST3" #define CONTROL_MODE_READY "MODE TEST3"
#define CONTROL_MODE_RC_TRAINING "RC SIMULATION" #define CONTROL_MODE_RC_TRAINING "RC SIMULATION"
...@@ -51,20 +59,38 @@ void UASControlParameters::changedMode(int mode) ...@@ -51,20 +59,38 @@ void UASControlParameters::changedMode(int mode)
case (uint8_t)MAV_MODE_MANUAL: case (uint8_t)MAV_MODE_MANUAL:
modeTemp = "MANUAL MODE"; modeTemp = "MANUAL MODE";
break; break;
#ifdef MAVLINK_ENABLED_SLUGS
case (uint8_t)MAV_MODE_AUTO: case (uint8_t)MAV_MODE_AUTO:
modeTemp = "AUTO MODE"; modeTemp = "WAYPOINT MODE";
break; break;
case (uint8_t)MAV_MODE_GUIDED: case (uint8_t)MAV_MODE_GUIDED:
modeTemp = "GUIDED MODE"; modeTemp = "MID-L CMDS MODE";
break; break;
case (uint8_t)MAV_MODE_READY:
modeTemp = "READY MODE"; case (uint8_t)MAV_MODE_TEST1:
modeTemp = "PASST MODE";
break;
case (uint8_t)MAV_MODE_TEST2:
modeTemp = "SEL PT MODE";
break; break;
#else
case (uint8_t)MAV_MODE_AUTO:
mode = "AUTO MODE";
break;
case (uint8_t)MAV_MODE_GUIDED:
mode = "GUIDED MODE";
break;
case (uint8_t)MAV_MODE_TEST1: case (uint8_t)MAV_MODE_TEST1:
modeTemp = "TEST1 MODE"; mode = "TEST1 MODE";
break; break;
case (uint8_t)MAV_MODE_TEST2: case (uint8_t)MAV_MODE_TEST2:
modeTemp = "TEST2 MODE"; mode = "TEST2 MODE";
break;
#endif
case (uint8_t)MAV_MODE_READY:
modeTemp = "READY MODE";
break;
break; break;
case (uint8_t)MAV_MODE_TEST3: case (uint8_t)MAV_MODE_TEST3:
modeTemp = "TEST3 MODE"; modeTemp = "TEST3 MODE";
......
...@@ -45,16 +45,21 @@ This file is part of the PIXHAWK project ...@@ -45,16 +45,21 @@ This file is part of the PIXHAWK project
#define CONTROL_MODE_LOCKED "MODE LOCKED" #define CONTROL_MODE_LOCKED "MODE LOCKED"
#define CONTROL_MODE_MANUAL "MODE MANUAL" #define CONTROL_MODE_MANUAL "MODE MANUAL"
#define CONTROL_MODE_GUIDED "MODE GUIDED"
#define CONTROL_MODE_AUTO "MODE AUTO"
#define CONTROL_MODE_TEST1 "MODE TEST1"
#define CONTROL_MODE_TEST2 "MODE TEST2"
#ifdef MAVLINK_ENABLED_SLUGS #ifdef MAVLINK_ENABLED_SLUGS
#define CONTROL_MODE_TEST3 "MODE HIL" #define CONTROL_MODE_GUIDED "MODE MID-L CMDS"
#define CONTROL_MODE_AUTO "MODE WAYPOINT"
#define CONTROL_MODE_TEST1 "MODE PASST"
#define CONTROL_MODE_TEST2 "MODE SEL PT"
#else #else
#define CONTROL_MODE_TEST3 "MODE TEST3" #define CONTROL_MODE_GUIDED "MODE GUIDED"
#define CONTROL_MODE_AUTO "MODE AUTO"
#define CONTROL_MODE_TEST1 "MODE TEST1"
#define CONTROL_MODE_TEST2 "MODE TEST2"
#endif #endif
#define CONTROL_MODE_READY "MODE TEST3"
#define CONTROL_MODE_TEST3 "MODE TEST3"
#define CONTROL_MODE_READY "MODE READY"
#define CONTROL_MODE_RC_TRAINING "RC SIMULATION" #define CONTROL_MODE_RC_TRAINING "RC SIMULATION"
#define CONTROL_MODE_LOCKED_INDEX 1 #define CONTROL_MODE_LOCKED_INDEX 1
...@@ -91,6 +96,7 @@ engineOn(false) ...@@ -91,6 +96,7 @@ engineOn(false)
ui.modeComboBox->setCurrentIndex(0); ui.modeComboBox->setCurrentIndex(0);
ui.gridLayout->setAlignment(Qt::AlignTop); ui.gridLayout->setAlignment(Qt::AlignTop);
} }
void UASControlWidget::setUAS(UASInterface* uas) void UASControlWidget::setUAS(UASInterface* uas)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment