임베디드시스템 프로젝트를 진행할 때에는 구축하고자 하는 시스템에 대한 명확한 정의 + 이에 걸맞는 적절한 프로세서와 센서를 선정하는 것이 가장 중요한 첫 번째 스텝이라고 여겨진다. 그리고 실제로 학생들은 그렇게 교육받는다.
아이카봇에게 요구사항을 전달하는 것에 있어 현재 자율주행팀 상황의 문제점:
팀 내에서 “아이카봇을 통해 달성하고자 하는 것에 대한 명확한 정의" 가 되어 있지 않다.
- 제조사가 걱정하는 부분은 크게 두 가지로 볼 수 있다. (a) 터무니없는 가격의, 터무니없는 사이즈의 보드와 센서를 들고 와서 하드웨어 제작을 요청하는 것, (b) 도중에 끊임없이 개발 계획이 변경되는 것. 자율주행팀 모두는 (a) 에 대해서 이견이 없다. 재석이형과 준서의 생각은 비록 추후 한번정도는 수정할 기회가 있을 것이라고 생각하고 있고 나도 이에 동의하므로 (b) 에 대해서도 자율주행팀의 이견은 없다고 할 수 있다. 그런데 최근, 그렇게까지 고민을 할 필요가 없을 것이라는 재석이형과 준서의 생각과, 고민이 더 필요하다고 생각하는 나의 생각이 왜 충돌하는지 문제를 잘 분해해 보니, 그 이유는 “하고자 하는 것에 대한 명확한 정의" 가 부족하기 때문이라는 진단을 내릴 수 있었다. 현재 하고자 하는 것에 대한 서로의 생각이 조금씩 다른 상황이 구체적으로 어떤 것인지를 설명하는 동시에, 지금 충분한 고민이 필요한 이유를 설명할 것이다. 그리고 내가 아이카봇을 대하는 태도에 대해서 설명을 하고자 한다.
우리가 보드와 센서를 고를 때는 다음 기준을 충족하는지 확인해 보아야 한다. (1) 우리가 빠르게 개발을 해 볼 수 있는 익숙한 보드를 선택해야 한다. (2) WebRTC 같이 잘 정의된 소프트웨어를 빠르고 쉽게 사용하기 위해 운영체제를 올릴 수 있는 컴퓨터(≠마이크로프로세서)를 써야 한다. (3) 이 컴퓨터의 사양이 애초에 우리가 하고자 하는 일들을 수행할 수 있는 것인지 알아야 한다. (4) 보드와 센서의 가격이 제조사가 납득할 수 있을 정도인가를 고려해야 한다. 앞서 말했듯 이는 임베디드시스템 프로젝트의 기본이라고 여겨진다.
해야 하는 행동:
아이카봇에게 전달하기 전에 이제 보드 후보 전부 다 사서 카메라 꽂아보고 싸그리 다 돌려보자.
- 최근 4~5일간 STEP3.자율주행 알고리즘 강화에 필요한 데이터를 취득할 수 있는 무선 카메라 스트리밍 시스템을 만들 때 어느 부분에서 문제가 생길까를 굉장히 나이브하게 공부해 보았다. 완전히 처음 공부해보는 분야이다 보니 알아보는 속도가 더뎠던 것을 부인할 수는 없다. 그래도 공부 덕분에 카메라를 여러 개 꽂아놓고 동시에 가동시킬 때 가장 문제가 되는 점에 대해서 나름 명확한 한 줄의 문장으로 정의하게 될 수 있었다. 보드의 연산 장치들이 “카메라로부터 오는 영상 스트림을 얼마나 빠르고 안정적으로 후처리하고 인코딩하는가, 이것을 GPU 에서 처리하고 얼마나 빠르게 CPU 메모리로 옮겨 놓는가” 가 그 핵심이다. 이 능력에 따라서 몇 개의 카메라를 (N) 얼마의 해상도로 (RES) 얼마나 빠른 빈도로 (FPS) 스트리밍할 수 있는지 결정된다는 것이다.
참고
- 준서: 어차피 킥보드 헤드에 컴퓨터, 카메라, IoT 가 전부 들어가게 될테니, 어느정도 충분한 공간만 남겨두고 설계해 달라고 하면 되지 않을까?
- [인텔 퀵 싱크 비디오(영어: Intel Quick Sync Video)는 인텔의 자사 일부 CPU에 탑재된, 하드웨어 가속을 통한 영상 인코딩 및 디코딩 기술이다. 2011년 1월 9일, 샌디브리지 CPU 마이크로아키텍처와 함께 발표되었다. 퀵 싱크 기술은 속도 덕분에 주목을 받아왔는데[1], 범용 GPU를 통해서 영상을 인코딩하는 방식과 달리, 퀵 싱크 기술은 프로세서 다이에 내장된 영상 처리 전용 하드웨어 코어를 통해 영상을 인코딩하므로 더욱 빠르고 전력 효율적인 영상처리를 가능하게 한다.[2][3] 그러나, 다른 하드웨어 기반 영상 가속 기술과 마찬가지로 영상 품질보다 속도에 주안점을 두어 CPU를 통한 인코딩 결과물보다 낮은 품질의 결과물을 만든다.[4]](https://www.notion.so/Intel-Quick-Sync-Video-CPU-2011-1-9-CPU--3ca72f3a0abe4205816dcfaa38c90273)
- [Q. 베어로보틱스에서 사용한 엣지 디바이스는 무엇인가? 그리고 그 이유는 무엇인가? 아이카봇과 같은 하드웨어 제작사들은 프로토타입을 만들 때 개발보드 (developer kit) 를 사용하는가, 상용모듈 을 사용하는가? 둘 다 쓸 수 있다면, 개발회사들은 어떤 것을 사용하게 될까? A. Intel i9 최상급 CPU 를 사용했다. GPU 는 사용하지 않았다. 보드는 자체 제작해서 사용했다. 판매하는 제품을 사용하지 않았다.](https://www.notion.so/Q-A-Intel-i9-CPU-GPU-007c05da6576450d878c8d87e8da15ce)
- Q. 무선 스트리밍 솔루션 업체에 따르면 4K 해상도 영상을 라즈베리파이4 에서 LTE 망으로 200ms 내외의 지연시간으로 스트리밍할 수 있다고 했다. (세부질문 1~4) : 인코딩을 진짜 빠르게 하고 잘 압축이 된다면 4K 영상도 보낼수는 있을 것 같다. LTE 망 자체의 bandwidth 는 잘 압축된 4K 영상을 무난하게 보낼 수 있다. 200ms 는 LTE 의 스펙이지 보내는 전송량과는 크게 차이가 나지 않는다.
- ‣
- 왜 0 to 100 을 하려고 하냐. 0 to 1 먼저 해 보자. 하드웨어 스펙표를 정확히 인지한다고 하더라도 실제로 돌려보기 전에는 모른다. 나도 해보니 스펙표와 실제값에는 차이가 존재하는 것 같다. 적어도 제조업체 부탁하려면 0 to 1 의 증거정도는 있어야 하지 않을까?
- As a result of running on the GPU, it can encode your (rather large) images to disk at around 4 frames per second whilst using almost no CPU. I observed 3 CPU cores were idle and the fourth core hovered on and off around 10-15% usage.
- step1 에서 step2 로 넘어가는 것이 엄청나게 무거운 작업일 것이다. 그래서 차라리 step3 을 엄청 열심히 하는 것이 더 나을지도 모른다. -준서