114 lines
4.3 KiB
C++
114 lines
4.3 KiB
C++
#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
|
|
* 20191023 - Spostati i commenti in GIT
|
|
*/
|
|
|
|
#include <QMainWindow>
|
|
#include <QString>
|
|
#include <QVariantMap>
|
|
#include <QJsonObject>
|
|
#include <QJsonDocument>
|
|
#include <QEvent>
|
|
#include <QMouseEvent>
|
|
#include <QFile>
|
|
#include <QUuid>
|
|
#include <QCoreApplication>
|
|
#include <boost/algorithm/clamp.hpp>
|
|
#include <libURcom/URCLinterface.h>
|
|
#include <shared/roboglue_shared.h>
|
|
|
|
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<spdlog::logger> 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_home_clicked();
|
|
void on_btn_open_clicked();
|
|
|
|
void on_btn_setFrame_clicked();
|
|
|
|
void on_btn_stopRos_clicked();
|
|
|
|
signals:
|
|
void robotConnect(QString, uint port, uchar retry);
|
|
void robotDisconnect();
|
|
void robotSendURscript(QString);
|
|
|
|
void sendROScoordinates(QList<double>);
|
|
void sendROScommand(QString command, QVariantMap args);
|
|
void sendROSstate(QMap<std::string, bool> digital, QMap<std::string, uint16_t> analog);
|
|
void pad_hoverEvent(QEvent *e);
|
|
};
|
|
|
|
#endif // ROBOGLUE_GUI_H
|