원래는 Astar, Pure Pursuit 알고리즘이나 opencv부터 올리려고 하였으나, 해당 졸업작품의 동작에 대한 설명을 말하고 해야 할 것 같아서 순서를 이렇게 하였습니다.
기존의 아이디어
처음에는 트랙에 벽 부분에 실제로 벽을 세운 뒤 라이다 센서를 탑재한 RC카를 이용해 트랙 전체를 한 번 스캔하여
노트북 상에 트랙의 모습이 뜨도록 한 다음 동작하려고 하였으나,
라이다 센서에서 요구하는 Ubuntu, ROS 등을 깔고 Ubuntu 내부에서 코딩하려 하였으나, LG 그램 노트북으로 하다 보니 그래픽카드가 없어 지도를 그릴 때 너무 랙이 심하고 버벅대는 모습이 나타나며,
코드 또한 이해가 가지 않으며 아두이노에서 실시간으로 지도와 최단 경로 추종을 실시간으로 받아야 한다는 점에서 불편 요소가 너무 많았고 그 이유로 동작 방식을 조금 수정하였습니다.
처음에 생각한 동작은 다음과 같습니다.



글로 간단히 설명하자면
트랙은 장애물이나 벽 부분을 실제로 위로 올려 라이다 센서에 인식되도록 하고
RC카 모형안에는 라이다 센서, 아두이노, 모터, 모터 드라이버 등이 탑재 되어있으며,
스캔의 정확도를 위해 Linux OS를 사용하는 라즈베리파이는 외부에 노트북과 연결한 다음
RC카 모형을 트랙 위에 올린 뒤 라즈베리파이와 아두이노 통신을 통하여 일차적으로 트랙 전체를 스캔한 뒤,
이후에 라즈베리파이에서 첫 번째 클릭을 하게 될 경우 해당 지점이 출발점 좌표가 되며, 이후 두 번째 클릭하게 될 경우 도착점이 됩니다.
출발점과 도착점에 대한 좌푯값을 받으면 라즈베리파이에서 Astar 알고리즘을 통하여 최단 경로로 갈 방법을 연산하여 출력하며 해당 좌표들이 스캔한 화면에 출력이 되며,
또한 차량이 이동 중에 기울었을 때 차량이 똑바로 갈 수 있도록 Pure Pursuit 알고리즘을 통하여 지속해서 제어를 해주는 알고리즘을 통하여
RC카가 보다 정확하고 최단 경로로 이동할 수 있도록 두 가지 알고리즘을 택하였습니다.
하지만 앞에서 말한 대로 라이다 센서에 대한 미숙과 아두이노 버퍼가 이것을 모두 담기엔 역부족이며, 라즈베리파이 또한 2080, 3080 같은 외장 그래픽카드가 깔린 게 아니기 때문에 스캔, 그리고 실시간 데이터 이 모든 것을 동작하기엔 역부족이었습니다.
변경된 동작



우선 부품의 경우 라즈베리파이 -> 노트북으로 변경되었으며,
라이다 센서->휴대전화 카메라로 변경되었습니다.
사실 앞에 재료비 45만 원 중 대부분을 차지 하는 것이 라즈베리파이와 라이다 센서였는데 정작 두 개가 들어가지 않았으며,
변경된 동작은
앞에 설명에서 라즈베리파이 부분을 노트북으로 바꾸고
라이다 센서를 빼고 천장에 휴대전화 거치대를 설치한 다음 거치대에 스마트폰을 연결하여 위에서 아래로 촬영, 트랙 전체가 들어오도록 설치 한 다음
IP WEBCAM이라는 앱을 통하여 같은 와이파이에 들어가 있는 기기들끼리 CAM을 공유해주는 앱을 이용해 스마트폰이 촬영하는 화면을 노트북에서 작성한 코드에서 받을 수 있도록 코딩을 한 다음 이후 내용은 앞의 내용과 같습니다.
단, 앞에서 말한 장애물, 벽을 실제로 높이를 만들 필요가 없어졌기에 높이가 아닌 색을 통하여 구분하였으며, RC카를 통해 트랙을 한번 스캔하는 동작 또한 필요가 없어졌기에 해당 내용은 진행하지 않았습니다.
다음 내용은 해당 프로젝트에서 OPENCV 부분에 대한 내용으로 글을 작성하게 될 것 같습니다.
'프로젝트 > 캡스톤디자인(졸업작품)' 카테고리의 다른 글
[캡스톤디자인] OPENCV - 3 (모라벡의 역설) (1) | 2024.04.12 |
---|---|
[캡스톤디자인] 재료 - 1 (0) | 2024.04.12 |
[캡스톤디자인] 프롤로그 - 0 (1) | 2024.04.12 |