(4-1) 프로젝트 결과
1. 프로젝트 결과
Turtlebot3 navigation 중 번호판 인식에 성공했고, 문 앞에서 정지하는 것까지 성공할 수 있었다.
2. 프로젝트의 어려웠던 점
(1) Raspberry Pi의 과부화
- Turtlebot3의 Raspberry Pi 하나만으로 번호판 인식과 navigation을 모두 수행하려 했지만 이것을 한 번에 다루기 어려웠고 Raspberry Pi의 과부화를 초래할 것이라 예상했다. 그래서 추가적인 Raspberry Pi를 이용해 번호판 인식을 처리하는 데에 사용했다. 따라서 Turtlebot3의 Raspberry Pi와 ANPR을 이용해 번호판 인식을 처리하는 Raspberry Pi 2개를 사용함으로써 관련된 문제를 해결했다.
(2) Turtlebot3의 주행 제어
- 번호판을 인식한 후 velocity를 publish해서 Turtlebot3을 제어하려 했으나, Turtlebot3 Navigation이 실행 중일 때 velocity를 제어할 수 없었다. 그래서 Turtlebot3 Navigation의 코드를 수정하려 했으나, launch 파일로 존재하였기에 수정할 수 없었다. 이 문제를 해결하기 위해 고민하던 중 Navigation프로세스를 kill한 뒤 Turtlebot3 velocity를 publish하기로 결정했고, 이를 통해 Turtlebot3을 원하는 대로 주행할 수 있었다.
(3) Local PC & Raspberry Pi 통신 문제
- 번호판 인식 알고리즘인 ANPR은 python 코드로 구성되어 있었고 Turtlebot3는 C++ 코드로 구성되어있었기 때문에 어떤 통신 방법을 이용해야 할지 고민이었다. 처음에는 gRPC 통신을 이용하려고 했지만 세팅에 어려움이 있었고 자료를 찾아보니 사용 언어가 달라도 TCP socket 통신이 가능하다는 것을 확인했다. 그래서 Turtlebot3을 server로, 번호판 인식은 client로 socket 통신을 이용해 번호판 데이터를 넘겨주었다.
(4) Turtlebot3의 속도 문제
- Turtlebot3의 속도가 빨라 번호판 인식이 어려웠다. 이를 해결하기 위하여 Turtlebot3의 yaml파일을 수정해 Turtlebot3의 속도를 늦춰주었다.