#ifndef ROBOGLUE_GUI_H #define ROBOGLUE_GUI_H /* * roboglue_gui.cpp * * Created on: Jan 21, 2019 * Author: emanuele * * Interfaccia utente di roboglue, conterrà la visualizzazione grafica del robot e tutte le * interfaccce per il richiamo e la registrazione dei programmi di incollaggio * tutta la logica sarà deferita ad un modulo main. * * 20190121 - Prima Scittura * 20190122 - Disegnata la prima interfaccia grafica a scopo di debug, stampa solo le informazioni * relative alla posizione cartesiana del robot. * Impostata la struttura comune a tutti i moduli. * 20190123 - Aggiunti elementi all'interfaccia grafica, connessione, disconnessione, indirizzo * e porta del robot. * 20190124 - Aggiunta logica per mandare comandi URscript senza controllo di ortografia e validità, * aggiunta la lettura di un file json che include i nomi degli stati di robot * e controller per una migliore leggibilità dell'interfaccia. * Piccole modifiche alla grafica. * 20190125 - Aggiunta una frame i cui fare il tracciamento del mouse per mandare posizioni * in tempo reale. La Z dovrebbbe essere compito della rotella del mouse che però * non genera eventi, trovare una soluzione (magari con la tastiera) per sostituirla. * L'invio dei comandi al robot dalla gui è TEMPORANEO, sarà gestito dal main * per fare il calcolo della cinematica inversa. * 20190128 - Sostituita la lettura della rotella con quella dei tasti freccia, * rimane da risolvere il fatto che quando non si usa il mouse le coordinate impazziscono * (ma è solo per test quindi va bene così forse) * 20190131 - Piccole modifiche alla grafica, aggiunte visualizzazioni posizione giunti * 20190211 - Scrittura delle funzioni che mandano i comandi parametrizzati al modulo roboglue_com * per l'invio di istruzioni a ros tramite mqtt. L'invio diretto al modulo com è solo * temporaneo, le comunicazioni andranno gestite tutte dal main. * 20190308 - Riscrittura delle funzioni associate ai bottoni di Record e Play per includere i metadati del * file da scrivere o leggere * 20190311 - Inversione del segno coordinata y prima dell'invio al modulo com. * 20190322 - Modifica dei nomi segnali tra questo modulo e com. * 20190402 - Aggiunte due spinbox per il settaggio di delta tempo e delta spazio da salvare nel * file dei metadati per la pianificazione dei persorsi salvati */ #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Ui { class RoboGlue_GUI; } using nlohmann::json; class RoboGlue_GUI : public QMainWindow { Q_OBJECT public: explicit RoboGlue_GUI(RoboGlue_SHARED *mem = nullptr); ~RoboGlue_GUI(); private: shared_ptr modlog; RoboGlue_SHARED *m; Ui::RoboGlue_GUI *ui; bool eventFilter(QObject* obj, QEvent* event); json nameDefinitions; QVariantMap getLockAxes(void); void enableLockAxes(void); void disableLockAxes(void); public slots: void on_commonStatusChange(void); void on_newRobotData(); private slots: void on_btn_sendCommand_clicked(); void on_btn_robotConnect_clicked(); void on_btn_robotDisconnect_clicked(); void on_chk_autoConnect_clicked(bool checked); void on_pad_hoverEvent(QEvent *e); void on_btn_record_clicked(); void on_btn_play_clicked(); void on_btn_realtime_clicked(); void on_btn_open_clicked(); signals: void robotConnect(QString, uint port, uchar retry); void robotDisconnect(); void robotSendURscript(QString); void sendROScoordinates(QList); void sendROScommand(QString command, QVariantMap args); void sendROSstate(QMap digital, QMap analog); void pad_hoverEvent(QEvent *e); }; #endif // ROBOGLUE_GUI_H