From ba810592b5882d1f064da449b7be10a251f59a85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomas=20J=C3=A4rvinen?= Date: Sat, 27 Jul 2024 11:53:26 +0300 Subject: [PATCH] Added new qmake config option which enables real gimbal camera Gimbal camera can be enabled and used for example with command: qmake6 CONFIG+=gimbal && make && ./rtsp_ai_player ~/azaion/models/onnx/yolov8m.onnx --- misc/rtsp_ai_player/README.md | 10 ++++++++-- misc/rtsp_ai_player/aiengine.cpp | 9 ++++++++- misc/rtsp_ai_player/aienginegimbalclient.cpp | 4 +++- misc/rtsp_ai_player/rtsp_ai_player.pro | 11 +++++++++-- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/misc/rtsp_ai_player/README.md b/misc/rtsp_ai_player/README.md index 39b88ec..8661dd6 100644 --- a/misc/rtsp_ai_player/README.md +++ b/misc/rtsp_ai_player/README.md @@ -63,17 +63,23 @@ ffmpeg -re -stream_loop -1 -i $HOME/azaion/videos/table.mp4 -c copy -f rtsp rtsp ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream ``` -### Compile and run rtsp_ai_player with YOLOv8 medium AI mode: +### Compile and run rtsp_ai_player with YOLOv8 medium AI model: ```bash cd autopilot/misc/rtsp_ai_player qmake6 && make ./rtsp_ai_player ~/azaion/models/onnx/yolov8m.onnx ``` -### Compile and run rtsp_ai_player with Azaion AI mode: +### Compile and run rtsp_ai_player with Azaion AI model: ```bash cd autopilot/misc/rtsp_ai_player qmake6 && make ./rtsp_ai_player ~/azaion/models/azaion/azaion-2024-06-28.onnx ``` +### Compile and run rtsp_ai_player with YOLOv8 medium model and gimbal camera: +```bash +cd autopilot/misc/rtsp_ai_player +qmake6 CONFIG+=gimbal && make +./rtsp_ai_player ~/azaion/models/onnx/yolov8m.onnx +``` diff --git a/misc/rtsp_ai_player/aiengine.cpp b/misc/rtsp_ai_player/aiengine.cpp index 3833434..0764b41 100644 --- a/misc/rtsp_ai_player/aiengine.cpp +++ b/misc/rtsp_ai_player/aiengine.cpp @@ -50,7 +50,11 @@ AiEngine::AiEngine(QString modelPath, QObject *parent) inferenceThread3->start(); #endif +#ifdef GIMBAL mGimbalClient = new AiEngineGimbalClient(this); +#else + mGimbalClient = nullptr; +#endif } @@ -73,7 +77,10 @@ void AiEngine::inferenceResultsReceivedSlot(AiEngineInferenceResult result) qDebug() << "FPS = " << (mFrameCounter / (mElapsedTimer.elapsed()/1000.0f)); //qDebug() << "AiEngine got inference results in thread: " << QThread::currentThreadId(); - mGimbalClient->inferenceResultSlot(result); + if (mGimbalClient != nullptr) { + mGimbalClient->inferenceResultSlot(result); + } + cv::imshow("Received Frame", result.frame); } diff --git a/misc/rtsp_ai_player/aienginegimbalclient.cpp b/misc/rtsp_ai_player/aienginegimbalclient.cpp index d945f56..eab6243 100644 --- a/misc/rtsp_ai_player/aienginegimbalclient.cpp +++ b/misc/rtsp_ai_player/aienginegimbalclient.cpp @@ -108,7 +108,9 @@ void AiEngineGimbalClient::inferenceResultSlot(AiEngineInferenceResult result) << "Name:" << object.classStr << "Probability:" << bestObjectProb; - emit zoomToAiTarget(target); + if (mGimbalServer->isAvailable()) { + emit zoomToAiTarget(target); + } } /* diff --git a/misc/rtsp_ai_player/rtsp_ai_player.pro b/misc/rtsp_ai_player/rtsp_ai_player.pro index 15333a5..35bf0bd 100644 --- a/misc/rtsp_ai_player/rtsp_ai_player.pro +++ b/misc/rtsp_ai_player/rtsp_ai_player.pro @@ -4,9 +4,16 @@ CONFIG += c++11 concurrent console MOC_DIR = moc OBJECTS_DIR = obj -SOURCES = $$PWD/*.cpp $$PWD/../../misc/camera/a8_remote/remoteControl.cpp +SOURCES = $$PWD/*.cpp HEADERS = $$PWD/*.h -INCLUDEPATH += $$PWD/../../misc/camera/a8_remote + +gimbal { + message("Using real gimbal camera.") + QMAKE_CXXFLAGS += -DGIMBAL +} +else { + message("Not using real gimbal camera.") +} opi5 { message("OPI5 build")