쪼물락 비젼 AI/DATABASE

AI VISION MISSION Save

ZEROWIN.TECH 2021. 1. 12. 18:55
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