728x90
AI VISION 미션 저장관련 함수를 추가합니다.
미션 AI 저장관련 정의입니다.
#define USE_AI_VISION (1)
AI_MISSION_Start(); AI VISION 을 저장을 시작합니다. |
미션 수행중 블럭 스텝마다 라즈베리파이 + 카메라에 모듈에 촬영 & 서버에 사진 전송을 요청합니다. |
ai_thread 서버로부터 수신된 AI VISION 정보를 처리합니다. |
int codebot::ai_thread()
{
while(!stop_flag_)
{
int n;
memset(bufferAI, 0x00, MAXLINE);
socklen_t len = 0;
n = recvfrom(sockfdAI, (char *)bufferAI, MAXLINE,
MSG_WAITALL, ( struct sockaddr *) &cliaddrAI,
&len);
if(0 < n) {
LOG_INFO("ai_thread %s\n", bufferAI);
char * pChatbot = NULL;
char * pActionData = NULL;
char * ptr = strtok(bufferAI, ",");
if(ptr != NULL) pChatbot = ptr;
ptr = strtok(NULL, ",");
if(ptr != NULL) pActionData = ptr;
LOG_INFO("AI_CHAT#3 : %s\n", pChatbot);
LOG_INFO("AI_ACTD#3 : %s\n", pActionData);
if(strlen(pActionData) == 0) {
memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
sprintf(tts_buffer, "AI 서버를 확인해주세요.");
LOG_INFO("%s", (char *)tts_buffer);
play_tts_queue_push((char *)tts_buffer);
}
else
if(memcmp(pActionData, "AI_RESPONSE_TTS", 15) == 0)
{
unsigned char bFound = false;
int i = 0;
for(i = 0; i < AI_ANIMAL_ARRAY_NUM; i++)
{
if(memcmp(AI_ANIMAL_Array[i].eng,
pChatbot,
strlen(pChatbot)) == 0) {
bFound = true;
break;
}
}
if(bFound == true) {
memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
sprintf(tts_buffer, "분석한 영상은 %s 입니다.",
AI_ANIMAL_Array[i].kor);
LOG_INFO("%s", (char *)tts_buffer);
play_tts_queue_push((char *)tts_buffer);
}
else {
memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
sprintf(tts_buffer, "잘모르겠어요. 적당한 위치로 이동해서 다시 촬영해주세요.");
LOG_INFO("#1 %s", (char *)tts_buffer);
play_tts_queue_push((char *)tts_buffer);
}
}
else
if(memcmp(pActionData, "AI_RESPONSE", 11) == 0)
{
LOG_INFO("do AI_RESPONSE");
AI_Add(pChatbot);
}
else {
memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
sprintf(tts_buffer, "잘모르겠어요. 적당한 위치로 이동해서 다시 촬영해주세요.");
LOG_INFO("#2 %s", (char *)tts_buffer);
play_tts_queue_push((char *)tts_buffer);
}
}
}
return 0;
}
codebot.h
int aiVisionPos;
int bAiMissionEnable;
int AI_Init(); // 비젼 스텝을 초기화합니다.
int AI_Add(std::string s); // 액션중 수행 스텝마다 AI VISION 수행후 동물사진을 저장합니다.
int AI_Display(); // AI VISION 히스토리
int AI_MISSION_Start(); // 미션을 시작하면서 히스토리를 초기화합니다.
int AI_MISSION_Stop(); // 미션이 종료되면 AI VISION 히스토리를 보여줍니다.
codebot.cpp
int codebot::AI_Init()
{
for(int i = 0; i < 32; i++)
{
text_ai_visioin[i] = "";
}
aiVisionPos = 0;
return 0;
}
int codebot::AI_Add(std::string s)
{
if(bAiMissionEnable == true) {
LOG_INFO("AI_Add %s", s.c_str());
int bSame = 0;
if(0 < aiVisionPos)
{
if(s.compare(text_ai_visioin[aiVisionPos-1]) == 0)
bSame = 1;
}
if(bSame == 0) {
text_ai_visioin[aiVisionPos] = s;
aiVisionPos += 1;
}
AI_Display();
}
return 0;
}
int codebot::AI_Display()
{
LOG_INFO("============ AI_Display ============");
for(int i = 0; i < aiVisionPos; i++)
{
LOG_INFO("%d %s", i, text_ai_visioin[i].c_str());
}
return 0;
}
int codebot::AI_MISSION_Start()
{
LOG_INFO("============ AI_MISSION_Start ============");
bAiMissionEnable = true;
AI_Init();
return 0;
}
int codebot::AI_MISSION_Stop()
{
LOG_INFO("============ AI_MISSION_Stop ============");
bAiMissionEnable = false;
return 0;
}
결과 디버그 표시
미션 수행 종료후 AI 분석 결과를 표시합니다.
'쪼물락 비젼 AI > DATABASE' 카테고리의 다른 글
데이터베이스 변경 & 정리 #2 (0) | 2021.01.15 |
---|---|
데이터베이스 변경 & 정리 (0) | 2021.01.05 |
Database 정리 (0) | 2020.12.24 |