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
This commit is contained in:
Tuomas Järvinen
2024-07-27 11:53:26 +03:00
parent 7052a05d55
commit ba810592b5
4 changed files with 28 additions and 6 deletions
+8 -2
View File
@@ -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 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 ```bash
cd autopilot/misc/rtsp_ai_player cd autopilot/misc/rtsp_ai_player
qmake6 && make qmake6 && make
./rtsp_ai_player ~/azaion/models/onnx/yolov8m.onnx ./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 ```bash
cd autopilot/misc/rtsp_ai_player cd autopilot/misc/rtsp_ai_player
qmake6 && make qmake6 && make
./rtsp_ai_player ~/azaion/models/azaion/azaion-2024-06-28.onnx ./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
```
+7
View File
@@ -50,7 +50,11 @@ AiEngine::AiEngine(QString modelPath, QObject *parent)
inferenceThread3->start(); inferenceThread3->start();
#endif #endif
#ifdef GIMBAL
mGimbalClient = new AiEngineGimbalClient(this); 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() << "FPS = " << (mFrameCounter / (mElapsedTimer.elapsed()/1000.0f));
//qDebug() << "AiEngine got inference results in thread: " << QThread::currentThreadId(); //qDebug() << "AiEngine got inference results in thread: " << QThread::currentThreadId();
if (mGimbalClient != nullptr) {
mGimbalClient->inferenceResultSlot(result); mGimbalClient->inferenceResultSlot(result);
}
cv::imshow("Received Frame", result.frame); cv::imshow("Received Frame", result.frame);
} }
@@ -108,8 +108,10 @@ void AiEngineGimbalClient::inferenceResultSlot(AiEngineInferenceResult result)
<< "Name:" << object.classStr << "Name:" << object.classStr
<< "Probability:" << bestObjectProb; << "Probability:" << bestObjectProb;
if (mGimbalServer->isAvailable()) {
emit zoomToAiTarget(target); emit zoomToAiTarget(target);
} }
}
/* /*
// We got list of all recognized objects, but at least for now we will zoom to all objects at // We got list of all recognized objects, but at least for now we will zoom to all objects at
+9 -2
View File
@@ -4,9 +4,16 @@ CONFIG += c++11 concurrent console
MOC_DIR = moc MOC_DIR = moc
OBJECTS_DIR = obj OBJECTS_DIR = obj
SOURCES = $$PWD/*.cpp $$PWD/../../misc/camera/a8_remote/remoteControl.cpp SOURCES = $$PWD/*.cpp
HEADERS = $$PWD/*.h 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 { opi5 {
message("OPI5 build") message("OPI5 build")