diff --git a/CMakeLists.txt b/CMakeLists.txt index d32a901..647f2c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,21 +33,17 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -set(SOURCES - src/include/qnode.hpp - src/include/joystick.h - src/include/dashboard.h - src/main/main.cpp - src/main/mainwindow.cpp - src/main/qnode.cpp - src/main/joystick.cpp - src/main/dashboard.cpp - src/ui/mainwindow.hpp - src/ui/mainwindow.ui +file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/ui/*.ui) +file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/resources/*.qrc) +file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + FOLLOW_SYMLINKS src/include/Air_Ground_CEC/*.hpp *.h) +file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + FOLLOW_SYMLINKS src/*.cpp) -) +QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES}) +QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS}) +QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC}) -QT5_add_resources(qrc_Files src/resources/images.qrc) ## Specify additional locations of header files ## Your package locations should be listed before other locations include_directories( @@ -56,7 +52,9 @@ include_directories( ${OpenCV_INCLUDE_DIRS} ) -add_executable(Air_Ground_CEC ${SOURCES} ${qrc_Files}) +add_executable(Air_Ground_CEC ${QRC_FILES} ${QT_SOURCES} + ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP}) + target_link_libraries(Air_Ground_CEC Qt5::Widgets ${catkin_LIBRARIES} diff --git a/src/Djitellowhite/Djitellowhite.cpp b/src/Djitellowhite/Djitellowhite.cpp deleted file mode 100644 index c8a8f52..0000000 --- a/src/Djitellowhite/Djitellowhite.cpp +++ /dev/null @@ -1,146 +0,0 @@ -#include"Djitellowhite.h" -#include -#include - - -#include -#include -#include - -#include -#include - -using namespace cv; -using namespace std; -Tello::Tello(const char* IP) { - this->stream_on=false; - this->host = inet_addr(IP); - cout << "create successfully!" << endl; - -} -Tello::~Tello() {} -void Tello::set_conf(int socket){ - this->sock = socket; -} -void Tello::get_connect(sockaddr_in serveraddr) { - char tmp[10] = {"command"}; - send_message(tmp,serveraddr,0);// 0 -> timeout - cout << "connect successfully!" <host; -} -void Tello::takeoff(sockaddr_in serveraddr) { - char tmp[10] = {"takeoff"}; - send_message(tmp,serveraddr,0);// 0 -> timeout - cout << "takeoff successfully!" < timeout - cout << "land successfully!" <sock,buffer,strlen(buffer),0,(struct sockaddr *)&server_addr, sizeof(server_addr)); - return true; -} -void* Tello::udp_response_receiver(void* arg){ - //int m_SockServer; //创建socket对象 - //sockaddr_in serveraddr; //创建sockaddr_in对象储存自身信息(当有多个端口,可以多个绑定) - //sockaddr_in serveraddrfrom; - - //serveraddr.sin_family = AF_INET; //设置服务器地址家族 - //serveraddr.sin_port = htons(8889); //设置服务器端口号 - //serveraddr.sin_addr.s_addr = inet_addr("0.0.0.0"); - //m_SockServer = socket(AF_INET, SOCK_DGRAM, 0); //创建一个临时变量并赋值给m_SockServer - //int i = bind(m_SockServer, (sockaddr*)&serveraddr, sizeof(serveraddr)); //把名字和套接字绑定 - //std::cout << "bind:" << i << std::endl; - - int socket = *(int *)arg; - - cout << "receive start" << endl; - while(1){ - char buffer[20]; - int iret; - memset(buffer,0,sizeof(buffer)); - - iret = recv(socket, buffer,20,MSG_WAITALL); - if(iret > 0 && iret <10){ - printf("Message from tello: %s\n", buffer); - } - } -} -void Tello::forward(sockaddr_in serveraddr){ - char tmp[15] = {"forward 20"}; - send_message(tmp,serveraddr,0);// 0 -> timeout - cout << "forward successfully!" < timeout - cout << "back successfully!" < timeout - cout << "left successfully!" < timeout - cout << "right successfully!" < timeout - cout << "up successfully!" < timeout - cout << "down successfully!" < timeout - cout << "cw successfully!" < timeout - cout << "ccw successfully!" <stream_on = true; - - cout << "vid"; - VideoCapture cap("udp://@0.0.0.0:11111"); - cout << "cap"; - if(!cap.isOpened()){ - cout << "fuck off"; - return; - } - - Mat frame; - cout << "continue!"; - while(1){ - cap>>frame; - if(frame.empty()) - break; - imshow("video",frame); - waitKey(20); - - } - cap.release(); - - -} diff --git a/src/Djitellowhite/Djitellowhite.h b/src/Djitellowhite/Djitellowhite.h deleted file mode 100644 index bfaa936..0000000 --- a/src/Djitellowhite/Djitellowhite.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef _DJITELLOWHITE_H -#define _DJITELLOWHITE_H -#include -#include -#include -#include -#include -#include -/*Library for interacting with DJI Ryze Tello drones.*/ - - -//coding = utf - 8 - -/* """C++ wrapper to interact with the Ryze Tello drone using the official Tello api. - Tello API documentation: - [1.3](https://dl-cdn.ryzerobotics.com/downloads/tello/20180910/Tello%20SDK%20Documentation%20EN_1.3.pdf) -*/ - -#define RESPONSE_TIMEOUT 7 //in seconds -#define TAKEOFF_TIMEOUT 20 //in seconds -#define FRAME_GRAB_TIMEOUT 3 -#define TIME_BTW_COMMANDS 0.1 //in seconds -#define TIME_BTW_RC_CONTROL_COMMANDS 0.001 //in seconds -#define RETRY_COUNT 3 //number of retries after a failed command - - -//Video stream, server socket -#define VS_UDP_IP "0.0.0.0" -#define VS_UDP_PORT 11111 - -#define CONTROL_UDP_PORT 8889 -#define STATE_UDP_PORT 8890 - -#define BUFFER_SIZE 1024 -//Constants for video settings -#define BITRATE_AUTO 0 -#define BITRATE_1MBPS 1 -#define BITRATE_2MBPS 2 -#define BITRATE_3MBPS 3 -#define BITRATE_4MBPS 4 -#define BITRATE_5MBPS 5 -#define RESOLUTION_480P "low" -#define RESOLUTION_720P "high" -#define FPS_5 "low" -#define FPS_15 "middle" -#define FPS_30 "high" -#define CAMERA_FORWARD 0 -#define CAMERA_DOWNWARD 1 -//日志模块暂时不写 - -class Tello { -private: - int sock; - bool stream_on; - unsigned long host; -public: - Tello(const char* IP); - ~Tello(); - void set_conf(int socket); - unsigned long gethost(); - void get_connect(sockaddr_in serveraddr); - void takeoff(sockaddr_in serveraddr); - void land(sockaddr_in serveraddr); - void forward(sockaddr_in serveraddr); - void back(sockaddr_in serveraddr); - void left(sockaddr_in serveraddr); - void right(sockaddr_in serveraddr); - void up(sockaddr_in serveraddr); - void down(sockaddr_in serveraddr); - void cw(sockaddr_in serveraddr); - void ccw(sockaddr_in serveraddr); - bool send_message(char* msg,sockaddr_in server_addr,int timeout = RESPONSE_TIMEOUT); - static void *udp_response_receiver(void* arg); - void get_video(sockaddr_in serveraddr); -}; - - - - -#endif diff --git a/src/Djitellowhite/Djitellowhite.o b/src/Djitellowhite/Djitellowhite.o deleted file mode 100644 index 12a9638..0000000 Binary files a/src/Djitellowhite/Djitellowhite.o and /dev/null differ diff --git a/src/Djitellowhite/Hardwarelistener.h b/src/Djitellowhite/Hardwarelistener.h deleted file mode 100644 index 599fa82..0000000 --- a/src/Djitellowhite/Hardwarelistener.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _HARDWARELISTENER_H -#define _HARDWARELISTENER_H -#include "Djitellowhite.h" -int listenkeyboard(Tello T,sockaddr_in serveraddr); -int scanKeyboard(); -#endif diff --git a/src/Djitellowhite/Triplet.cpp b/src/Djitellowhite/Triplet.cpp deleted file mode 100644 index 9c0ef65..0000000 --- a/src/Djitellowhite/Triplet.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include"Djitellowhite.h" -#include"Hardwarelistener.h" -#include -using namespace std; -int main(void){ - Tello T("192.168.10.1"); - int socket_fd, err; - - if((socket_fd = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) - { - cout << "initialized error" << endl; - cout << 0; - return -1; - } - - //cout << 1 << socket_fd; - T.set_conf(socket_fd); - - pthread_t thread_receive; - err = pthread_create(&thread_receive,nullptr,T.udp_response_receiver,&socket_fd); - sleep(3); - struct sockaddr_in serveraddr; - memset(&serveraddr,0,sizeof(serveraddr)); - serveraddr.sin_family=AF_INET; - serveraddr.sin_addr.s_addr=T.gethost(); - serveraddr.sin_port=htons(CONTROL_UDP_PORT); - - - - if(err!=0) - { - cout << err << " " << "can't create thread"; - } - - T.get_connect(serveraddr); - //sleep(1); - //T.takeoff(serveraddr); - T.get_video(serveraddr); - sleep(5); - //T.land(serveraddr); - - pthread_join(thread_receive,NULL); - listenkeyboard(T,serveraddr); - return 0; -} diff --git a/src/Djitellowhite/keyboard.cpp b/src/Djitellowhite/keyboard.cpp deleted file mode 100644 index dcf3ade..0000000 --- a/src/Djitellowhite/keyboard.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include -#include -#include "Hardwarelistener.h" -#include - -using namespace std; -int scanKeyboard() -{ - - int in; - - struct termios new_settings; - struct termios stored_settings; - //设置终端参数 - tcgetattr(0,&stored_settings); - new_settings = stored_settings; - new_settings.c_lflag &= (~ICANON); - new_settings.c_cc[VTIME] = 0; - tcgetattr(0,&stored_settings); - new_settings.c_cc[VMIN] = 1; - tcsetattr(0,TCSANOW,&new_settings); - in = getchar(); - tcsetattr(0,TCSANOW,&stored_settings); - - return in; - -} - -//测试函数 -int listenkeyboard(Tello T, sockaddr_in serveraddr){ - while(1){ - switch(scanKeyboard()) - { - case (int)'w': - cout << "forward"<< endl; - T.forward(serveraddr); - break; - case (int)'s': - cout << "back" << endl; - T.back(serveraddr); - break; - case (int)'a': - cout << "left" < -#include -#include -#include -#include -#include -#include -#include -#define PORT 8890 - -void udp_server(int sockfd) -{ - - socklen_t len; - char buf[1024] = {0}; - struct sockaddr_in server_addr; - int n; - int opt = 1; - len = sizeof(server_addr); - memset(&buf, 0, sizeof(buf)); - server_addr.sin_family = AF_INET; - server_addr.sin_addr.s_addr = htonl(INADDR_ANY); - server_addr.sin_port = htons(PORT); - - setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); //当服务器非正常断开的时候重启服务器,不会进入TIME_WAIT状态 - - if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { - printf("can not bind\n"); - exit(1); - } - - while (1) { - printf("========wait for client's request========\n"); - n = recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&server_addr, &len); - buf[n] = '\0'; - printf("receive client's data: %s\n", buf); - sendto(sockfd, buf, n, 0, (struct sockaddr *)&server_addr, len); - printf("send data to client: %s\n", buf); - } - - close(sockfd); -} - -int main(int argc, char **argv) -{ - int sockfd; - - if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { - printf("create socket false\n"); - exit(1); - } - - udp_server(sockfd); - - exit(0); -} - - diff --git a/src/Djitellowhite/test b/src/Djitellowhite/test deleted file mode 100755 index 5becd75..0000000 Binary files a/src/Djitellowhite/test and /dev/null differ diff --git a/src/include/automove.h b/src/include/Air_Ground_CEC/automove.h similarity index 100% rename from src/include/automove.h rename to src/include/Air_Ground_CEC/automove.h diff --git a/src/include/dashboard.h b/src/include/Air_Ground_CEC/dashboard.h similarity index 100% rename from src/include/dashboard.h rename to src/include/Air_Ground_CEC/dashboard.h diff --git a/src/include/joystick.h b/src/include/Air_Ground_CEC/joystick.h similarity index 100% rename from src/include/joystick.h rename to src/include/Air_Ground_CEC/joystick.h diff --git a/src/ui/mainwindow.hpp b/src/include/Air_Ground_CEC/mainwindow.hpp similarity index 93% rename from src/ui/mainwindow.hpp rename to src/include/Air_Ground_CEC/mainwindow.hpp index 29dd080..23ff0e4 100644 --- a/src/ui/mainwindow.hpp +++ b/src/include/Air_Ground_CEC/mainwindow.hpp @@ -6,9 +6,10 @@ #include #include #include "ui_mainwindow.h" -#include "../include/joystick.h" -#include "../include/qnode.hpp" -#include "../include/dashboard.h" + +#include "joystick.h" +#include "qnode.hpp" +#include "dashboard.h" #include using namespace cv; diff --git a/src/include/qnode.hpp b/src/include/Air_Ground_CEC/qnode.hpp similarity index 100% rename from src/include/qnode.hpp rename to src/include/Air_Ground_CEC/qnode.hpp diff --git a/src/include/automove.cpp b/src/include/automove.cpp deleted file mode 100644 index 3238fd7..0000000 --- a/src/include/automove.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "automove.h" - -AutoMove::AutoMove() -{ - -} diff --git a/src/main/automove.cpp b/src/main/automove.cpp new file mode 100644 index 0000000..5fd6256 --- /dev/null +++ b/src/main/automove.cpp @@ -0,0 +1,6 @@ +#include "../include/Air_Ground_CEC/automove.h" + +AutoMove::AutoMove() +{ + +} diff --git a/src/main/dashboard.cpp b/src/main/dashboard.cpp index d5a6ed3..9f28439 100644 --- a/src/main/dashboard.cpp +++ b/src/main/dashboard.cpp @@ -1,4 +1,4 @@ -#include "../include/dashboard.h" +#include "../include/Air_Ground_CEC/dashboard.h" #include #include diff --git a/src/main/joystick.cpp b/src/main/joystick.cpp index 8d6eb41..76f0e5a 100644 --- a/src/main/joystick.cpp +++ b/src/main/joystick.cpp @@ -1,4 +1,4 @@ -#include "../include/joystick.h" +#include "../include/Air_Ground_CEC/joystick.h" #include JoyStick::JoyStick(QWidget* parent) : QWidget(parent) { diff --git a/src/main/main.cpp b/src/main/main.cpp index 7e95cdf..e06e3b5 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -1,5 +1,4 @@ - -#include "../ui/mainwindow.hpp" +#include "../include/Air_Ground_CEC/mainwindow.hpp" #include diff --git a/src/main/mainwindow.cpp b/src/main/mainwindow.cpp index f3e3725..ad29714 100644 --- a/src/main/mainwindow.cpp +++ b/src/main/mainwindow.cpp @@ -1,4 +1,4 @@ -#include "../ui/mainwindow.hpp" +#include "../include/Air_Ground_CEC/mainwindow.hpp" #include diff --git a/src/main/qnode.cpp b/src/main/qnode.cpp index c0bd5f3..850a2e4 100644 --- a/src/main/qnode.cpp +++ b/src/main/qnode.cpp @@ -1,4 +1,4 @@ -#include "../include/qnode.hpp" +#include "../include/Air_Ground_CEC/qnode.hpp" #include "sensor_msgs/image_encodings.h" #include diff --git a/src/ui/Triplet/.gitignore b/src/ui/Triplet/.gitignore deleted file mode 100644 index fab7372..0000000 --- a/src/ui/Triplet/.gitignore +++ /dev/null @@ -1,73 +0,0 @@ -# This file is used to ignore files which are generated -# ---------------------------------------------------------------------------- - -*~ -*.autosave -*.a -*.core -*.moc -*.o -*.obj -*.orig -*.rej -*.so -*.so.* -*_pch.h.cpp -*_resource.rc -*.qm -.#* -*.*# -core -!core/ -tags -.DS_Store -.directory -*.debug -Makefile* -*.prl -*.app -moc_*.cpp -ui_*.h -qrc_*.cpp -Thumbs.db -*.res -*.rc -/.qmake.cache -/.qmake.stash - -# qtcreator generated files -*.pro.user* - -# xemacs temporary files -*.flc - -# Vim temporary files -.*.swp - -# Visual Studio generated files -*.ib_pdb_index -*.idb -*.ilk -*.pdb -*.sln -*.suo -*.vcproj -*vcproj.*.*.user -*.ncb -*.sdf -*.opensdf -*.vcxproj -*vcxproj.* - -# MinGW generated files -*.Debug -*.Release - -# Python byte code -*.pyc - -# Binaries -# -------- -*.dll -*.exe - diff --git a/src/ui/Triplet/Triplet.pro b/src/ui/Triplet/Triplet.pro deleted file mode 100644 index 06138d8..0000000 --- a/src/ui/Triplet/Triplet.pro +++ /dev/null @@ -1,38 +0,0 @@ -QT += core gui - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - -CONFIG += c++11 - -# The following define makes your compiler emit warnings if you use -# any Qt feature that has been marked deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if it uses deprecated APIs. -# In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. -#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - -SOURCES += \ - main.cpp \ - mainwindow.cpp - -HEADERS += \ - mainwindow.h - -FORMS += \ - mainwindow.ui - -# Default rules for deployment. -qnx: target.path = /tmp/$${TARGET}/bin -else: unix:!android: target.path = /opt/$${TARGET}/bin -!isEmpty(target.path): INSTALLS += target - -INCLUDEPATH += /usr/local/include \ -/usr/local/include/opencv2 \ -/usr/local/include/opencv4 - - -LIBS += /usr/local/lib/libopencv_world.so diff --git a/src/ui/Triplet/main.cpp b/src/ui/Triplet/main.cpp deleted file mode 100644 index fd3e533..0000000 --- a/src/ui/Triplet/main.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "mainwindow.h" - -#include - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - MainWindow w; - w.show(); - return a.exec(); -} diff --git a/src/ui/Triplet/mainwindow.cpp b/src/ui/Triplet/mainwindow.cpp deleted file mode 100644 index 7365b8c..0000000 --- a/src/ui/Triplet/mainwindow.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "mainwindow.h" -#include "ui_mainwindow.h" - -MainWindow::MainWindow(QWidget *parent) - : QMainWindow(parent) - , ui(new Ui::MainWindow) -{ - ui->setupUi(this); - timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), this, SLOT(importFrame())); - - //InitVideo(); -} - -void MainWindow::importFrame() -{ - capture >> frame; - cvtColor(frame, frame, CV_BGR2RGB); - QImage srcQImage = QImage((uchar*)(frame.data), frame.cols, frame.rows, QImage::Format_RGB888); - ui->label->setPixmap(QPixmap::fromImage(srcQImage)); - ui->label->resize(srcQImage.size()); - ui->label->show(); -} - - - - -MainWindow::~MainWindow() -{ - delete ui; -} - - - -void MainWindow::on_PLAY_clicked() -{ - capture.open("udp://@0.0.0.0:11111"); - timer->start(30); -} - -void MainWindow::on_CLOSE_clicked() -{ - timer->stop(); - capture.release(); -} - - - - - - diff --git a/src/ui/Triplet/mainwindow.h b/src/ui/Triplet/mainwindow.h deleted file mode 100644 index b959c59..0000000 --- a/src/ui/Triplet/mainwindow.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include -#include -#include -#include "opencv2/opencv.hpp" -#include -#include -#include -#include - -using namespace std; -using namespace cv; - -QT_BEGIN_NAMESPACE -namespace Ui { class MainWindow; } -QT_END_NAMESPACE - -class MainWindow : public QMainWindow -{ - Q_OBJECT - -public: - MainWindow(QWidget *parent = nullptr); - ~MainWindow(); - VideoCapture cap; - void InitVideo(); - - -private slots: - - - void importFrame();//read video - - void on_PLAY_clicked();//start video - - void on_CLOSE_clicked();//finish video - -private: - Ui::MainWindow *ui; - VideoCapture capture; - QTimer *timer; - Mat frame; - bool isCamerea = 0; -}; -#endif // MAINWINDOW_H diff --git a/src/ui/Triplet/mainwindow.ui b/src/ui/Triplet/mainwindow.ui deleted file mode 100644 index 96a2ec2..0000000 --- a/src/ui/Triplet/mainwindow.ui +++ /dev/null @@ -1,71 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 1280 - 768 - - - - MainWindow - - - - - - 1100 - 440 - 80 - 25 - - - - CLOSE - - - - - - 1100 - 250 - 80 - 25 - - - - PLAY - - - - - - 50 - 30 - 731 - 461 - - - - - - - - - - - 0 - 0 - 1280 - 22 - - - - - - - -