개발 관련/프로젝트

소프트웨어 검토

by 소서리스25 2023. 9. 10.
반응형

우선 개발하기 위한 소프트웨어?를 검토해 봐야 하는데.....

소프트웨어라기 보단 개발 프로그램으로 봐야 할 것 같다.

 

내가 윈도우 프로그램을 개발할 때는 대부분을 Autoit으로 이용하며 키관련해서는 C# 기반의 Sharp Develop를 아주 가끔 이용하고 3D가 적용되거나 그래픽 UI를 사용할 때는 Unity를 사용한다.

 

가끔 둘이 섞는 경우도 있다. 백그라운드 프로그램으로는 Autoit을 사용하고, 메인 프로그램은 Unity를 사용하기도 한다.

아무튼 비전문으로 사용 가능한 도구가 아주 한정적인 상황이라 선택의 여지가 없다.

따라서 목표는 안드로이드 스마트폰에 앱으로 설치할 것이므로 Unity를 사용한다.

안드로이드 버전은 배포할 것이 아니므로 대략 API 28 ~ 30 정도를 사용할 것이다. 큰 의미는 없어 더 낮아도 될 것 같다.

통신방식은 기본적으로 Bluetooth를 사용할 예정인데 WIFI를 사용할 수도 있다. WIFI도 드론제어에서 사용한 경험이 있으니 가능할 것 같다. 다만, Direct로 연결이 될지는 잘 모르겠다. 없다면 허브를 거쳐야 하는데....

 

여기까지 정리하면 다음과 같다.

1. 개발엔진 : Unity

2. 개발어플 : Android

3. 통신방식 : Bluetooth ( or WIFI)

 

다음으로는 개발될 사물인식에 대한 검토사항이다.

사물인식 방법에 대해 가능한 것으로 아는 것과 함께 몇 가지 조사를 진행했다.

1. AR인식 활용

2. OpenCV

3. Yolo(You Only Look Once)

4. ImageSearch

 

물론 이 방법외에도 여러 가지가 있을 거라 생각한다.

 

여기서 어떤 방식이 가장 좋냐는 것인데.... 우선 2가지를 선택해서 테스트해 볼 예정이다.

AR도 사물인식이 가능하지만 인식조건에 제약이 있고,

OpenCV는 10여년전 기억으로 Android를 무료로 사용하기에 적합하지 않을 것 같고 개발경험상 속도도 좋지 못했던 것을 기억한다. 그래서 다시 현재 것을 검토해 보았다.

OpenCV - Open Computer Vision Library

 

Home

OpenCV provides a real-time optimized Computer Vision library, tools, and hardware. It also supports model execution for Machine Learning (ML) and Artificial Intelligence (AI).

opencv.org

 

ImageSearch는 일단 PC버전에서 개발 시 속도가 적합하진 않지만 개발 시 매우 간편하게 적용할 수 있으나 Android 버전은 현재 만들어 본 적이 없어 가능성 여부의 판단이 필요하다.

 

여러 가지 검토를 해 봐도 학습기능이 있는 Yolo를 사용하는 게 가장 좋다는 판단이다. Yolo는 현재도 계속해서 버전 업되고 있다.

다만 내가 과연 Yolo를 Unity를 통해 Android에 적용할 수 있냐는 것인데,,, Android는 좀 나오긴 하는데 Unity 활용에 대해선 검색해도 잘 안 나온다. 일반적인 PC 환경에서는 여러 가지로 자료 검색이 되는데...

 

Yolo의 성능과 적용 가능한 것을 확인해 보면 다음과 같다. 물론 검색하면 여러 블로그에서 확인할 수 있다. 정말 괜찮은 것 같다. ( 아래 사이트에서 정리가 잘 되어 있는 것 같다.)

YOLO Object Detection, 객체인식 - 개념, 원리, 주목해야 할 이유, Use Case - 데이터헌트 (thedatahunt.com)

 

YOLO Object Detection, 객체인식 - 개념, 원리, 주목해야 할 이유, Use Case

object detection의 대표 모델인 YOLO 모델의 개념, 원리, Use case까지 전체적인 가이드를 알려드립니다. YOLO는 이미지를 일정 분할로 그리드한 다음, 신경망을 통과하여 바운딩 박스와 클래스 예측을

www.thedatahunt.com

 

다음으로 음성인식의 경우 예전에 사놓은 Asset을 이용하면 될 것 같다.

여러 번 테스트를 진행하였기 때문에 바로 적용이 가능하다고 볼 수 있다. 다만, 적용할 단어들을 정리해야 할 것 같다.

음성의 경우 영어가 아닌 우리나라 말을 텍스트로 옮겨서 실행될 예정이다.

문장을 인식할 경우 필요한 조사를 뺀 나머지 단어들의 조합으로 구성할 생각인데 쉽지는 않을 것 같다.

특히 음성인식의 가장 큰 문제는 음성을 마이크로 제대로 인식할 수 있냐는 것이다. 이건 예전 개발할 때부터 큰 난제였다. 그래도 일단은 해보자.

 

음성인식의 과정은 오작동 방지를 위해 예전 음성인식 스피커와 같은 방식으로 진행하면 어떨까 한다.

- 로보! > 명령어 인식 대기모드(화면컬러 변경이나 비프음) > 명령어 인식 후 몇 초간 대기 > 명령어 실행

- 긴급 명령어의 경우 대기모드 없이 바로 실행(예로 정지!! / 그만!! / 멈춰!! 등)

 

간단히 예로 든다면 쉬운 경우는 다음과 같다.

- 앞으로 전진 / 앞으로 가 / 전진 >> 보통의 속도로 전진 (뒤로가도 마찬가지)

- 빨리 가 / 천천히 가 > 속도를 +20% / -20% 로 이동

- 정지 / 멈춰 / 그만가 / 스톱(스돕) >> 이동시 정지 (긴급 명령어)

- 돌아 / 옆으로 돌아  >> 오른쪽으로 90도 제자리 회전 (기본 모드)

 

다음은 조합형 음성인식의 경우

- 오른쪽으로 30도 돌아 / 회전 > 오른쪽으로 30도만큼만 회전

- 앞으로 5초만 이동 > 5초동안만 이동 (가능하면 거리로 인식하게끔)

- 캔을 찾아봐 / 캔을 찾아줘 / 캔 찾아 > 인식되어 있는 캔을 자동 탐색모드로 주변 둘러보고 찾기

- 양말 찾아봐....

 

잘 될지 모르겠지만 대략적으로 이런식이면 재미있을 것 같다.

반응형

댓글