티스토리 뷰

개발

자율주행차 제작 일지

KWG07(joseph0528) 2025. 9. 2. 18:45
반응형

2024.06.01

 

자율주행차 제작 A to Z 시작

 

SW 미래채움에서 자율주행차 제작을 해보면서 자율주행차 만드는 거에 관심이 생겼다. 키트를 만드는건 재미없을 거 같아서 실제 사람이 탈 수 있는 자율주행차를 만들어보고자 한다.

자율주행차 제작 기획서

기획서도 만들었다.

엄청나게 큰 프로젝트이기 때문에 혼자선 할 수 없다고 생각했고, 팀프로젝트로 진행해야겠다는 생각을 했다. 

팀프로젝트라면 나뿐만 아니라 다른 친구들도 이점이 있어야 되니 각자가 원하는 방향성을 최대한 추구할 수 있게 프로젝트를 기획했다. 

오늘 202461일부터 언제끝날지 모르겠지만 자율주행차 제작 일지?를 작성해보자.


2024.06.04

팀원 모집

 

오늘은 팀원을 뽑기 위해 신청 폼을 만들었다.

최대한 프로젝트에 진심으로 참여할 수 있는 애들을 뽑기 위해서 열심히 만들었다. 만드는데 1시간 넘게 쓴 듯

 

학년 단톡방에 보내버렸다

 

소프트웨어는 내가 한다고 해도, 하드웨어는 잘 모르니까 잘하는 친구들이 참여해 주면 좋겠다.

 


 ~ 2024.07.06

1차 면접

면접 공지용 카톡방 사진

 

생각보다 많은 애들이 지원해 줬다. 아는 애들도 있고, 모르는 애들도 있어서 면접하면서 좀 친해져야 할 듯하다.

면접에서 애들이 잘하는 거 분석하고 파트 배정을 할 예정이다.

 

 


 ~ 2024.07.24

선발

면접 후 각자의 역량에 맞는 부서를 배정함

면접 이후에 각자의 역량 바탕으로 부서를 조직했다.

앞으로 부서별로 회의도 하고, 활동도 하면서 자동차를 만들 계획이다.

 

디스코드에 나와 팀원들이 공부하면 좋은 것들을 올려놨다. 자율주행차에 대해 조사해 보니까 SLAM, RRT*라는 알고리즘이 자율주행 하는데 도움이 많이 도리거 같아서 나중에 공부하려고 한다.


 ~ 2024.08.08

디자인 및 재료 선정

2주 동안 여러 번의 회의를 진행했다. 형태는 뭐로 할 건지, 재료는 뭐로 할건지, 지금 상황에서 뭘 할 수 있는지 등 다양한 논의를 진행했다.

유아 전동차

재료 선정과정에서 친구가 집에 있는 유아 전동차를 가지고 와줬다.  제작할 때 열심히 참고할 예정이다.

논의한 걸 바탕으로 초기 프로토 디자인을 친구가 CAD를 이용해서 만들어줬다.

 


 ~ 2024.09.14

장소 이동

청천벽력 같은 소식이다. 학교 건물이 공사하면서 다른 건물의 정보실로 이동했는데, 그 건물도 공사한다고 한다... (우린 어디서 작업하라고...!!)

 


 ~ 2024.09.17

비용 지원받음!!!!

돈 지원 받음!!

제목 그대로 돈을 지원받았다!! 이곳저곳 계속 돌아다니다가 학교 쪽에서 100만 원 지원을 받을 수 있었다.

최악의 상황에 애들끼리 n빵 해야 됐는데 다행인 거 같다.


 ~ 2024.09.21

시제품 조사(?)

학원가는 길에 전기자전거가 있길래 사진 몇 장 찍어줬다. 우리가 만드는 건 자동차이긴 하지만, 전기로 작동된다는 점은 같아서 전기자전거는 어떤 구조로 생겼는지 찍어줬다.

(당시 비가 오고 있어서 한 손으로 우산 들고, 한손으로 카메라로 찍다 보니 휴대폰을 떨어뜨리거나 우산을 놓치거나 별 생쇼를 다했다 ㅎㅎ...)

 


~ 2024.11.5

재료 선정 및 구매

그 사이 많은 일이 있었다. 일단 학교 시험기간이라 애들이 참여하기 어려워서 잠시 쉬다가 시험 끝나고 다시 재료를 정했다.

처음에  짰던 견적으로는 100만 원을 맞출 수 없어서 조금 작은 사이즈의 견적을 잡았다.

이후 각종 센서와 모터, 회로에 필요한 케이블이나 장치 드라이버, 라즈베리파이 등등 자율주행차 제작에 필요한 재료들을 이것저것 찾아봤다. 자율주행차를 제작한 사례가 없다 보니 관련 자료를 찾는 게 사막에서 바늘 찾기 만큼 어려워서 고생을 엄청 했다.

철물점에 답사를 가기도 했고, 모터집 가서 남는 부품을 구할 수 있는지도 물어봤다.

저번에 가져온 비틀에서 뜯어서 사용할까도 고민했다.

 

가장 힘들었던 건 어떤 재료든 1%가 부족하다는 것이다.

뭔가를 찾으면 문제점이 생기고, 다른 걸 찾으면 다른 문제점이 생기는 등 수없이 많은 문제를 직면했다.

그중 모터 쪽이 가장 어려웠다. (알맞은 모터 찾으려고 모터 관련 공부도 하고, 모터와 연결되는 시스템 구조도 공부하고 별짓을 다했다)

 

 

구동 모터 쪽 회로도이다. 소형 자율주행차는 관성이 작아 일반 모터로 자동차를 제작해도 된다. 하지만 우리가 하는 프로젝트는 실제 사이즈의 자율주행차 이기 때문에 모터 하나만 설치하면 관성에 의해 모터가 굴러가면서 반대방향으로 전류가 흐르게 된다. 

친구말로는 이럴 경우 모터가 터지든, 배터리가 터지든 아니면 다른  큰 문제가 생긴다고 해서 이 문제를 어떻게 해결할지 찾아보던 중, 회생제동에 대해서 알게 됐다.

회생 제동은 앞서 말한 큰 문제인 회생 전력을 막기 위해 저항을 가지고 회생 에너지를 열로서 소진시켜 주는 브레이킹 방법이다.

https://m.blog.naver.com/pg365/222031586553

 

모터를 멈추는 방법: 다이나믹 제동과 회생 제동

모터에 걸어준 전압에서의 속도보다 더 빨리 회전하거나(내리막길에서 구동), 감속하는 경우 모터는 발전기...

blog.naver.com

위 블로그에서 관련 자료를 공부하였고, 회생 제동이 우리 상황에서 가장 좋은 방법인 거 같아서 친구와 함께 위와 같은 회로도를 구성하였다.

 

또 다른 큰 문제는 조향이었다. 조향에 사용할 모터를 찾는 것도 쉽지 않았고, 어떻게 설치할지도 문제였다. 

조향 장치를 어떻게 할건지 열심히 말했다.

위 사진에 있는 조향장치가 현재 바퀴를 연결해 줄 조향 장치인데, 여기에 모터를 설치해야 되는 게 가장 큰 난관 중 하나였다. 키트가 있으면 좋겠지만 당연히 그딴 건 없었고, 저 상황에 맞는 조향 장치를 따로 찾든, 제작하든 해야 했다.

조향 문제를 해결하기 위해 다양한 유튜브 영상이나 자료들을 찾아봤던 거 같다.

다양한 자료를 찾아보고 구상해 보면서 최종적으로 위와 같은 형태의 조향장치를 구상했다. 프레임을 프로파일로 정했으니 프로파일을 덧대서 모터를 달고, 저번에 가져온 비틀의 조향 장치에서 착안해서 구성해 줬다. (처음에 비틀을 어떻게 쓸까 고민했는데, 생각이상으로 요긴하게 쓰였다.)

 

 

그렇게 해서 아래와 같은 견적을 잡았다.

 

이 파일을 선생님께 보냈다.

선생님이 바로 구매해 주시겠지...

 

 

추가로 방을 또 이동했다.

원래 학교 공사로 모듈러로 이동하면서 모듈러에 남는 공간을 허락받고 사용 중이었는데, 이제 거기도 사용하지 말라고 한다...

그래서 짐을 정리해서 2-4반(작성자 반)에 놓아뒀다.


~ 2024.12.16

재료 도착 및 조립 1

 

프레임 재료인 프로파일이 왔다. 마침 시험도 끝나서 학교에서 하는 게 거의 없기 때문에 교실 한쪽에서 팀원들이랑 조립했다.

( 자가 없어서 길이에 대한 조립을 감으로 진행했는데 괜찮으면 좋겠다 )

개인적으로 앞쪽 조향 쪽을 다는 게 정말 거지 같았다. 중국산이라 그런 건지 연결부와 부품이 호환도 안돼서 강제로 힘으로 해결했다.

( 실제 중국산인지는 불명이지만 배송기간과 포장 상태를 보았을 때 99% 중국산이라 확신한다 )

 

그렇게 아침부터 하루종일 작업해서 학교가 끝날 때쯤 밑판 틀 제작을 완료했다.

내일 나머지 부분들을 조립할 예정이다.

 


~ 2024.12.17

재료 도착 및 조립 2

일단 틀은 완성된 상태다

오늘도 아침부터 팀원들과 조립했다. 중간과정이 없긴 한데 사진 찍을 겨를도 없이 수업 -> 조립 -> 수업 -> 조립을 반복했다.

( 원래 체력 딸려서 힘든 적이 잘 없었는데 어제오늘 작업한 뒤에 너무 피곤해서 자버렸다... )


~ 2024.12.19

모형으로 자율주행 테스트


동아리 비로 모형 자율주행차를 구매해서 조립했다.

(라즈베리파이는 v5인데, 라즈베리파이 카메라 케이블은 4까지만 호환되는 케이블이라 추가로 구매해 줬다... 내 돈...)

 

실제 만드는 차량에서 사용할 코드를 라즈베리파이에다가 제작해 줬다. 

일단 기존 키트에는 초음파 센서랑 IR 센서로 라인 트레이싱을 해야 되는데, 실제 자동차에 IR 센서를 달지 않을 거라 과감히 버려줬다. 이 차에 라이다 센서를 달 수 없어서 카메라 기반으로 운행하기 위해 1학년 때 SW 미래채움에서 작성한 CNN 모델을 가지고 와서 라인트레이싱 코드를 작성해 줬다.

그렇게 실행을 했는데... 그냥 망했다.

일단 맵을 절연 테이프로 만들어 줬더니 천장등 때문에 빛이 반사돼서 학습을 해줘도 제대로 되지 않았다. 

그래서 다른 검은 테이프로 시도해 봤지만 역시나 잘되지 않았다... 빛반사 이외에도 주변 사물에 있는 검은색을 인식해서 다른 방향으로 움직이는 일도 생겼고, 맵에 벽을 세우는 등 어떻게든 막아보고자 하였지만 그래도 10번 1번씩은 맵을 이탈 했다.. ㅜㅜ

 

개발은 adafruit 공식문서를 참고하면서 개발했다.

https://docs.keyestudio.com/projects/KS0223/en/latest/3.Raspberry%20Pi%20Hardware%20Control/3.Raspberry%20Pi%20Hardware%20Control.html#oled-display

 


~ 2024.12.29

라즈베리파이 세팅

동아리에서 만든 자동차는 라즈베리파이 5를 사용하긴 했지만 파이썬밖에 사용 안 해서 아무 세팅 없이 진행했었다. 

그러다 보니 작업할 때 불편했던 게 한둘이 아니라서 작업 편하게 세팅을 하고자 한다.

일단 라즈베리파이 sd 카드도 교체해줬다. 

기존에는 32GB sd 카드였는데, 128GB sd 카드로 교체해 줬다. 

32 GB 가 작은 건 아니지만 AI 개발할 때 데이터가 100GB를 넘어가는 일이 많기 때문에 넉넉한 sd 카드를 구매해 줬다.

이후 라즈베리파이에 한글 설정을 해줬다.

영어를 못하는 건 아니기에 그냥 해도 무리는 없지만, 한글을 읽고 이해하는 속도보단 훨씬 느리기에 한글 설정을 진행해 줬다.

https://humber.tistory.com/entry/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4Raspberry-Pi-%ED%95%9C%EA%B8%80-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0#google_vignette

 

라즈베리파이(Raspberry Pi) 한글 설치하기

라즈베리파이 인스톨 후 한글이 구현되도록 환경설정과 한글폰트 설치에 대해서 알아보겠습니다. 라즈베리파이 OS 설치되면 기본적으로 영문모드만 지원되기 때문에 한글을 사용하기 위한 환

humber.tistory.com

이 블로그 이외에도 다양한 한글 설정 블로그를 참고해서 한글 세팅을 해봤다.

결과는 실패였는데, 대부분의 블로그는 라즈베리파이 버전 4 이하의 모델들에서 진행했던 것이라 라즈베리파이 5에선 잘 적용되지 않았다. 이 한글 패치 때문에 3~4일을 애를 먹었는데, 결국 포기하고 영어 공부하는 셈 치고 영어로 사용하기로 했다...

대신 한글 키보드는 주석 때문에 포기할 수 없어서 여러 블로그를 뒤져보면서 방법을 찾아서 적용하였다.

https://m.blog.naver.com/mythee1/223300805398

 

라즈베리파이 (Raspberry Pi) 5 한글 입력기 설치

앞선 글에서 라즈베리파이5에 데스크톱 OS를 설치하면서 한글 깨짐 현상이 발생하는 현상과, 이에 대한 ...

blog.naver.com

간혹 되기도 하고 안되고도 하는 이상한 상황이지만, 완전히 안 되는 것은 아니라서 이 블로그를 참고해서 세팅해 주었다.

 

이후에 가상환경 세팅을 해주었다. 

가상환경 또한 세팅하지 않았다가 버전이 꼬이는 대참사를 겪은 경험이 있기 때문에 자주 사용하는 아나콘다로 가상환경을 세팅하고자 하였다. 당연히 이것도 잘 안 됐다. 분명 라즈베리파이에서 미니 아나콘다가 되는 걸 확인하고 똑같이 설치해 줬는데 나만 안된다. 그래서 그냥 파이썬의 venv를 이용해 줬다.


~ 2025.1.11

모형으로 자율주행 테스트

라즈베리파이 카메라 연결을 해줬고, 모델은 라즈베리파이 v3 wide를 이용해 줬다.

(원래 일반 v3를 샀는데, 시야각이 너무 좁아서 시야각이 120도인 wide 모델을 사줬다... 내 돈...)

오른쪽은 집에서 micro hdmi to hdmi 케이블로 연결한 뒤 카메라를 테스트해본 것이다. (케이블도 집에 없어서 마트 가서 샀다..)

왼쪽은 모니터가 없는 경우에도 라즈베리파이 화면을 확인할 수 있게 캡처보드를 이용해서 미러링을 해주었다.

 


~ 2025.1.16

라이다 작동 입문

라이다 센서를 늦게 주문해 오늘 도착하였다. 

우리가 구매한 라이다는 RPLIDAR C1 모델로 15~20만 원 상당의 고가까진 아니지만 적당한 가격과 성능의 라이다로 아두이노 호환이 되는 모델 같아 주문하였다. 

 

지금 사용중인 라이다 다.

 

https://www.slamtec.com/ko/RoboStudio

 

RoboStudio 확장형 로봇 관리 및 개발 소프트웨어(SLAMTEC)

 

www.slamtec.com

 

해당 사이트에서 라이다 모델을 테스트를 할 수 있는 파일을 제공해서 설치하고 테스트해보았다.

 

이후 라즈베리파이에서 테스트를 해보았다.

결과는 저번과 비슷한 레퍼토리인 실패였다... 

 

뭐가 문제였을까... 현타가 많이 몰려왔고, 일지만 작성하고 며칠 작업을 안 했다. 

이후 친구랑 정보를 찾아보면서 usb 인식의 문제였음을 알게 되었다. 이후 수색 끝에 인식시킬 수 있는 방법을 찾게 되었다.

https://blog.naver.com/no1_devicemart/223273535991

https://www.silabs.com/software-and-tools/usb-to-uart-bridge-vcp-drivers

 

CP210x USB to UART Bridge VCP Drivers - Silicon Labs

The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products. These devices can also interface to a host using the direct access driver.

www.silabs.com

위 블로그에서 해법을 찾을 수 있었고, 아래 링크에서 파일을 받으니 실행시킬 수 있었다..

 

라이다 테스트는 파이썬 라이브러리인 adafruit_rplidar 라이브러리를 이용하였다. (파이썬은 진짜 만능이다)

테스트 프로그램을 작성해도 잘되지 않아 위 블로그를 바탕으로 baud rate를 수정해 보면서 그나마 작동되는 빈도가 높은 값을 찾아 세팅 후 실행시켜 주었다.


~ 2025.2.6

3번째 방이동

제목 그대로 3번째 방이동이다. 2학년 겨울방학이 끝나고 잠시 1주 동안 등교하면서 2학년 짐을 모두 3학년으로 옮겼다. 물론 자율주행차 재료 및 자동차를 3학년 건물로 옮겼다.

팀원들을 호출해서 짐을 같이 옮기자고 권유를 하였으나 아무도 답을 주지 않았고... 결국 혼자 눈이 깔려있는 운동장을 가로지르며 짐을 옮겼다. 교과서 및 책도 옮겨야 돼서 학교에서 녹색 대차를 빌려서 짐들을 옮기고, 차는 실을 수가 없어서 끌고 갔다.

 

오늘은 짐 옮기는 것만으로 너무 힘들어서 개발을 할 수 없었다.... 내일 열심히 해야지

 


~ 2025.2.10

4번째 방이동

짐을 원래 교실에 옮겼는데, 교실의 공간이 협소해서 남는 교실을 찾다가 공용실로 쓰이는 공간을 발견했다. 그 공간에서 사용하는 대신, 옆에 여닫이 문을 두고 자습실이 있어 자습실에 피해가 가지 않도록 최대한 조용히 작업하라는 선생님의 지령이 있어 쉬는 시간이나 자습이 없는 시간 때 주 작업을 진행하고자 한다.



이 사진에 보이는 거처럼 여닫이 문을 두고 자습실이 있어 모든 작업을 숨죽이며 진행해야한다

 


~ 2025.2.12

외관 작업

 

팀원들을 불러서 외관작업을 진행하였다. 방학기간이기에 등교한 친구들이 많이 없어서 소수 정예로 우드락을 크기에 맞게 자르고 부착시켜 줬다. 부착시킨 것 이외에 다른 부분들도 길이에 맞게 우드락을 잘라서 외관을 만들어 주었다.

 

추가로 라이다 작업을 진행해 주었다. 현재 라이다 작업의 큰 문제는 인식이 덜된다는 것이다. 컴퓨터에선 잘만 되는 게 라즈베리파이에서만 작업하면 계속 라이다가 연결되지 않았다.

며칠 계속 방법을 찾아봤지만 결국 찾지 못했다...

이 오류가 왜 발생한지도 모르겠다. 작업하다보니 별의별 오류를 다 만났고, 그중 하나를 사진 찍었다.


~ 2025.2.13

모터 작업 1

 

모터 정보를 팀원에게 보내기 위해 찍은 사진이다.

우린 분명 500W에 24V 짜리 모터를 샀다. 근데 저 스티커나 모터에 쓰여 있는 값은 24V가 아니라 26V, 12V였다. 중국산이라 그런 건지, 프린트를 잘못한 건지 구매처에 쓰여있는 수치와는 전혀 다른 수치가 모터에 쓰여 있어 이 모터를 과연 사용할 수 있는가에 대해 큰 의문이 생겼다. 

 

이 모터도 사용할 수 있는 건지 자료조사를 엄청 진행했다... (도대체 이런 일이 왜 발생하는 건지 모르겠다)

 

 


~ 2025.2.14

모터 작업 2 & 외관 & LED 작업

 

자료 조사를 하면 할수록 더 미궁 속으로 빠졌다. 여러 자료에는 모두 다 다른 수치가 쓰여있었고, 이대로는 절대 진행할 수 없어, 모터와 배터리를 직결해서 테스트 해보자는 미친 결정을 내렸다. (만약 모터가 우리가 구매한 수치의 상태가 아니라면 모터 혹은 베터리 둘 중 하나가 타버릴 수도 있는 상황이었다.)

모터를 사용하기 위해 연결부분을 베터리에 직접 연결할 수 있는 상태로 땜을 해주었다.

 


자동차 밑에 있는 음료 및 물들을 정수기 하나 없는 열악한 이 학교의 실태를 보여준다.

 

상당히 더럽긴 하지만 추가적인 외관작업을 진행해 주었다. 그리고 왼쪽 사진 속 의자는 앞서 가지고 왔던 비틀의 의자이다. 비틀은 오른쪽 사진처럼 완전 해체 당하였고, 그 비틀 에 있는 부품 일부분을 가지고 와서 사용해 주었다.

 

 

영상에 나오는 등은 비틀에서 뜯어온 등이다. 나름 쓸모가 있을 거 같아 뜯어왔고, 땜을 통해 아두이노 핀과 연결해 주었다. 이후 릴레이를 활용해 버튼 클릭으로 등을 껐다, 켰다를 반복할 수 있게 테스트 회로를 제작해 주었다.

 


~ 2025.2.15

모터 작업 3

이날 진짜로 쫄렸다.

다음날 모터 테스트를 하기 위해 운동장으로 나왔다. 이론상 문제가 없어야 하지만 ^^한 중국산 모터 때문에 화재 및 폭발 위험을 대비해 소화기랑 나름 보호 장비(?)인 옷을 껴입었다. 

 

테스트 결과는....

다행히 성공적이었다!!

중국산 모터가 판매 표기에 작성한 수치가 다행히도 맞는 수치였던 것이다. 

 

이때 모터를 테스트하기 전까지 혹시나 잘못되면 어떡하지라는 생각을 하면서 팀원들과 "어차피 개인 프로젝트라 산재 처리 안될 거 같은데~" 같은 살벌한 농담을 하면서 테스트를 진행했다.

 


~ 2025.2.17

5번째 방이동 & 해체

또 방이동 했다..

공간이 더 좁다...

조용히 작업을 하였음에도 시끄럽다는 민원이 들어와서(자습시간 때 작업을 안 했는데...) 자리를 옮겼다. 학교 건물에서 남는 장소를 찾던 중, 위클래스 옆 작은 공간이 빈 공간으로 쓰이고 있다는 것을 알게 되었고, 그 공간을 허락을 받고 모든 짐을 해당 방으로 이동하였다. 

사진을 통해 차체의 길이가 안 맞는다는 것을 알게 되었다.. 당시 상당히 머리 아팠다...

 

또 작업과정에서 부품들이 제대로 조립되어 있지 않아 계속 틀어지는 일이 발생했다. 이런 일이 너무 빈번하게 일어나자, 회의를 통해 전체 해체 후 다시 조립하기로 결정해 전부 해체하고 다시 조립 중이다.

 

 

해체 후 다시 조립 중이다... 이번에는 정확하게 길이를 계산해서 오차 없이 제작할 것이다.

 


~ 2025.2.19

모터 작업 4

초기에 설계했던 회생 제동 회로를 제작하기 위해 시멘트 저항 5개를 병렬 연결 시켜줬다. 

 

5개의 50옴, 20W 시멘트 저항을 병렬 연결해서 10옴 100W 저항을 만들어줬다.

 

https://www.youtube.com/shorts/7wrIbkFqZ-s

영상 이미지 오류로 대체 이미지로 넣었습니다

 

 

비틀에서 뗀 버튼이 생각보다 쓸만한 거 같아 뗌 작업 이후 릴레이를 이용해 on, off 스위치를 만들어줬다. 버튼 자체는 활용성이 좋았는데, 한 가지 문제는 릴레이 아니면 버튼이 계속해서 연속으로 신호가 간다는 것이다... 센서 입력 간에 딜레이를 넣어봐도 계속 그래서 이를 해결할 방법을 찾아보고 있다...

 

라즈베라파이 5에서 라이다 테스트, 캡쳐보드로 obs 에서 연결한 모습이다.

 

컴퓨터에선 라이다가 잘 작동하였지만, 이상하게 라즈베리파이에선 작동하지 않았다.. 그전부터 이를 해결하기 위해 온갖 방법을 다 다 찾아봤지만 라즈베리파이 5에서 작동되지 않는 문제를 찾을 수 없었는데, 친구가 해결책을 찾아줬다.

 

그건 바로 파워 문제였다..!

 

라즈베라파이 4까진 5V 3A의 콘센트만으로도 잘 작동하였기에, 학교에 있는 라즈베리파이 4 콘센트를 사용하였지만, 라즈베리파이 5부턴 5V 5A가 필요하다는 사실을 알지 못했다... 그래서 그동안 삽질을 계속했는데, 친구가 5V 5A 가 되는데 콘센트로 연결해 보니 된다는 사실을 알게 되면서 그동안 라이다가 작동하지 않는 문제를 해결할 수 있었다.

밤 12시쯤 나갈시간 때 찍은 사진이다. 슬슬 나갈때가 되서 다들 쉬거나 작업하고 있다.

 

 

 


~ 2025.2.20

이동 통보...

 

학교 선생님께서 장소를 빼라고 메시지를 보내셨다... 할 건 많은데 벌써 정리해야 된다니...  그 많은 짐을 벌써 5번이나 옮겼는데 다시 옮길 생각을 하니 어질어질하다... 슬슬 개학시즌이 되면서, 팀원들의 참여가 저조해져 짐에 비해 사람 수가 적은데.. 찾아가서 참여를 독려하든, 카톡으로 하든 어떻게든 일손을 구해봐야겠다.

 


~ 2025.2.27

모터 설치 & 각종 작업

전원 스위치

기존 버튼형 스위치는 센서 오류가 계속 발생해서, 돌려서 키고 끌 수 있는 스위치를 추가로 구매했다. 그리고 24V 배터리를 버틸 수 있는 스위치로 구매했는데, 이는 앞서 하나의 사건 때문이 발단이었다.

 

모터를 설치하기 전에 모터와 회생 제동 회로를 구성해 테스트하던 도중, 릴레이에서 연기가 일어나더니 번쩍하고 터져버렸다... 지금까지 잘 작동했었는데, 갑자기 릴레이가 터져버려서 이게 뭔 상황인가 싶었다.

정보를 조사해 보니 기존 릴레이는 10A까지밖에 버틸 수 없지만 우리가 사용하는 배터리는  24V 12A 이였기에, 릴레이가 버티지 못하고 터진 것으로 추정됐다. 그래서 차량용 릴레이를 기반으로 하는 새로운 회로도를 다시 만들어야 했다.

다시 만든 릴레이 회로도다

 

차량용 릴레이와 아두이노 릴레이를 이용해서 더 높은 파워의 배터리가 연결돼도 버틸 수 있도록 회로도를 구상하였다. 

 

위 회로도를 바탕으로 회로를 다시 만들어 줬다. 이후 체인도 연결해서 테스트할 수 있는 상태로 만들어줬다.

 

https://www.youtube.com/shorts/6cmmqpsaNDc

 

실제 테스트 영상이다. 바닥에서 굴리기에는 공간이 좁아 친구들과 함께 차량을 들어 올리고 작동 테스트를 해주었다.

 


 

~ 2025.3.01

라이다 군집화 테스트 & 라즈베리파이 작

 

라이다에 잡히는 점들을 군집화 하는 작업을 진행해 줬다. 라이다에 잡히는 값들은 점들로 이루어져 있기 때문에, 그 점들이 어떤 객체에 해당하는지 묶어줄 필요가 있다. 이를 위해선 임의의 점에 대해 가장 가까운 점을 알 필요가 있다. 이를 위해 델로네 삼각분할 알고리즘을 이용하였다.

 

델로네 삼각 분할이란?

평면 위의 점들을 삼각형으로 연결하여 공간을 분할할 때, 이 삼각형들의 내각의 최솟값이 최대가 되도록 하는 분할을 말한다.

간단히 말하면 임의의 점이랑 가장 가까운 점으로 삼각형을 만드는 것을 말한다.

델로네 삼각분할과 보르노이 다이어그램 예시

델로네 삼각분할을 이용하면 임의의 점과 만들어지는 삼각형의 점들을 알 수 있는데, 이는 즉 그 점에서 가장 가까운 점 중 하나가 된다. 이를 이용하면 O(NlogN)으로 임의의 점에 대해 가까운 점들을 찾을 수 있게 된다.

 

그리고 이를 이용해 특정 거리에 해당되는 점들끼리 군집화를 해주었다.

이때 특정 거리에 대한 수치를 임의로 설정했는데, 이를 CNN를 이용해 가장 정확한 군집을 만족하는 수치를 찾아볼 것이다.

 

그리고 라즈베리파이 5에서 파이썬 관련 작업들을 진행해 주었다. 윈도가 아닌 리눅스 기반에서 작업하다 보니, 관련 명령어도 새롭게 공부해야 했고, 라즈베리파이 5에서만 일어나는 정체불명의 오류들과도 싸우고 있다. 특히 파이썬 라이브러리 설치 및 카메라, 라이다 작업에서 골머리를 앓고 있다. 노트북을 사용하지 않은 것에 대해 후회는 하지만 이미 일 벌여놓은 거, 라즈베리파이 기반으로 만들어 보고자 한다.

 


 

~ 2025.3.20

추가 장비 및 테스트

오랜만에 글을 쓴다. 개학하고 해야 될 게 많아서 작업만 진행하고 글을 못썼는데, 오늘은 시간이 나서 작성하고 있다.

그동안 많은 일이 있었다. 외관 작업 이후 회로 작업에 들어갔고, 그 와중 모터드라이버가 망가졌다. 원인은 프로파일과의 접촉으로 인한 쇼트로 추정된다... 그래서 5만 원짜리 모터 드라이버를 다시 구매했다... (내 돈 ㅜㅜ)

또 전면등을 구매했다. 실제 자동차에서 쓰이는 등인데, 자율주행차가 밤에도 학습 및 주행할 수 있도록 성능 좋은 걸로 구매해 설치해 주었다. 

전면등

이렇게 하나하나 센서가 늘어나다 보니 배터리 전원을 나눠줄 장치가 필요해 쇼트바를 구매하였다. 

쇼트바를 이용하면 각 부품이 필요로 하는 최소치 전력, 전압을 병렬적으로 뽑아낼 수 있기에 구매하였다.

 

 

또 체인 쪽에 간의 텐셔너를 달아줬다. 기존 상태에선 체인이 계속 튕기는 현상 때문에 속도가 저하되는 일이 일어났다.

이를 해결하기 위해 다른 곳에서 사용하는 텐셔너를 구매해 임시방편으로 달아주었다. 결과는 그럭저럭 작동하였지만, 그래도 아직 문제가 있다. 이는 나중에 보안해보려고 한다.

텐셔너로 체인을 팽팽하게 만들어주었다

 

 

 

외관이 어느 정도 만들어서 회로 작업을 해주었다. 

솔직히 이 작업이 가장 힘들었다. 뒤에서부터 앞으로까지 전선을 빼주거나, 센서 및 부품들이 위치한 곳으로 배선을 해주는 작업에서 선을 엄청 잘라먹거나 땜으로 태워먹거나 그 외 다양하게 전선을 소비했다. 기존에 아두이노로 작업할 때는 이런 작업이 없었기에, 땜을 배우고 익숙해지기까지, 엄청난 시행착오가 있었다. 그리고 지금은 어느 정도 다룰 줄 알게 되었다.

 

배선 작업을 위한 정리

이 사진은 배선작업을 위해 아두이노 핀에 어떤 센서 및 부품을 연결해야 될지 정리하고 완료된 걸 표시한 사진이다. (정말 정말 정말 정말 정말 정말 정말 힘들었다...)

 

이렇게 온갖 시행착오와 고생을 하면서 작업 이외의 일도 경험했다.

일단 학기가 시작하면서 선생님들의 간섭이 심해졌다... 학생의 본분은 공부니 어느 정도 간섭이 있는 것은 맞지만, 그래도 너무 간섭이 심했다. (작업에서 핵심 인물들을 다 빼가고, 본인 또한 작업을 할 수 없게 막으니 선생님들이 다 가고 난 9시 30분 이후, 친구들과 함께 12시까지 작업하였다)

이 과정에서 나가야 되는 시간을 놓쳐 문이 잠기거나, 관리아저씨께 엄청 혼나기도 하였다.

(한때는 문이 모두 잠겨, 작업하고 있는 방의 창문으로 나간 적도 있다 ㅋㅋ...)

 

그렇게 열심히 작업하대서 어느 정도 완성하였다.



라즈베리파이를 위치하는 곳에 발열을 최소한으로 줄이고자 팬을 달아주었다. 앞뒤로 팬을 설치해 환풍 및 발열 최소화를 목표로 한다.



 

얼추 완성된 모습이다. 주변이 엉망이긴 하지만, 외관작업도 진행하고 전면등도 달아주었다. 환풍용 팬도 달아주었다.

 

이건 밤에 전등 테스트하기 위해 찍은 사진이다. 열심히 회로작업한 결실이 이렇게 드러나서 기분이 정말로 좋았다. 

 

 


 

~ 2025.3.21

6번째 자리 이동

 

얼마 전에 선생님께서 보냈던 카톡의 날이다.. 정확히는 이미 그전에 이동해야 했지만, 선생님께 부탁드려 계속 미루고 있었지만, 오늘은 이동해야 했다. 그래서 오늘 하루 종일 장소를 알아봤다. 주변 건물을 공사 중이고, 3학년 건물은 남는 공간이 없어서 장소를 알아보던 중, 한 곳을 찾게 되었다.

3학년 건물 옥상이다

 

옥상에 여유 공간이 있다는 것을 알게 되었다. 등에 전기는 들어오지만, 콘센트가 없고, 와이파이도 터지지 않아 최악의 환경이지만 여기 말고는 옮길 곳이 없었다. 그래서 팀원들 몇 명과 함께 4층(옥상)까지 들고 올라왔다. 초기에는 그래도 도와주는 팀원들이 많이 있었는데, 시간이 지날수록 사람 수가 적어져서 저번보다 짐을 옮기는데 더 힘들었다.

특히 만들어진 차를 1층에서 4층까지 들고 올라오는 게 정말 힘들었던 거 같다.

 


 

~ 2025.4.12

회로 작업 n일차

 

제목 그대로 회로 작업 n일차이다. 몇 번 작업했는지 기억나지 않아서 n으로 표시했다.

 

저번에 구매한 쇼트바를 연결해 주었다. 여기서도 한 가지 문제가 있었는데... 그건 쇼트바가 단자대에 꽂아서 사용하기에는 버티지 못할 거 같다는 의견이 있었다. 우리가 가진 쇼트바는 배터리의 A를 완전히 버틸 수 없기 때문에 이를 해결하기 위해 쇼트바 2개를 합쳐주는 방법을 선택했다. (전기 쪽으로 잘 아는 친구의 말에 의하면 두 개를 합치면 암페어를 2배 버틸 수 있을 거라고 한다.. 아마도..? )

그냥 합쳐서 연결하면 두 개의 쇼트바가 간섭되지 않기 때문에 의미가 없다. 그래서 두 쇼트바를 합쳐서 이용하기 위해 쇼트바의 한쪽 면을 사포로 최대한 갈아서 서로 간섭할 수 있게 만들고, 두 쇼트바를 땜을 통해 붙여줬다.

 

결과는 일단 성공이었다. 

 

그리고 그 외 세부 회로작업을 해주었다. 앞서 해준 작업은 각각 단일 작업을 해주었기에, 하나의 시스템에서 통합하여 작동시킬 수 있도록 인버터와 릴레이를 연결해 주는 작업을 진행해 주었다.

 

 

 


 

~ 2025.5.1

그간 있었던 일 

 

시험 기간 동안 작업을 잠시 멈췄다가, 시험이 끝난 후 다시 재개하였다.

시험 전까지 여러 일들이 있었다. 일단 그동안 참고 있었던 화를 냈다.

몇 명 친구들이 성실히 참여해주고 있지만, 기존 20명이었던 멤버는 4명의 이탈과 대부분이 참여하지 않아 소수로만 프로젝트가 운영되었다. 기존까지 작업 일시와 작업에 관한 멘토링, 각자에게 필요한 작업에 대한 정보나 이것저것 프로젝트에 열심히 참여할 수 있도록 정보를 제공해 주고, 이를 생기부에 녹여서 값진 경험을 할 수 있도록 최선을 다해 노력했음에도 애들이 참여해주지 않았다.

결정적으로 n빵 하기로 했음에도 비용을 보내주지 않는 것이 트리거였다.

참여를 하지 않으면 나가달라고도 했지만 나가지 않아 참여하는 걸로 간주하고 n빵을 하였지만, 돈을 보내주지 않으니 여러 가지 복합적인 게 트리거가 되어 카톡방에서 엄청난 양의 화풀이를 했다.

 

그렇게 화풀이를 하고 난 뒤에 하루동안 생각에 프로젝트의 방향성에 대해 깊게 고민하였다. 팀을 어떻게 이끌면 좋을지, 참여하지 않는 애들은 모두 버려야 할지, 이후는 어떻게 나아가야 될지 등 다양한 생각을 하였다. 그러다 근처 지인분들께 관련 사정을 털어놓았고, 그분들로부터 조언을 얻을 수 있었다.

 

일단 최근 들어 만나는 일이 적어지다 보니, 공지를 카톡으로 자주 진행했고, 이게 다른 팀원들 입장에선 단순히 통보가 될 수 있다는 것이었다. 불참 혹은 궁금한 게 있는 사람은 물어봐달라고 했지만 그러지 않았던 애들이기에, 처음에 이 말에 동의하진 않았지만, 생각을 가다듬다 보니 실제로 통보에 비슷한 일들이 몇 번 있었다는 걸을 생각 했다.

 

두 번째는 프로젝트에 대한 생각이 모두 다르다는 것이다. 처음에는 모두 열심히 하기 위해 참여했더라도, 각자 프로젝트에 부여하는 사명감? 그런 게 모두 다르고, 생각하는 바도 모두 다르다. 하지만 본인은 대부분 카톡방에서만 이야기를 하고, 실제로 다가가서 이야기를 하지 않았으니, 모두의 생각을 알지 못한 채 화를 내게 된 것이다.

 

이런 것들을 돌아보니, 내가 화를 낸 것이 팀의 리더로서 잘한 행동이 아니었다고 생각했고, 다음날 카톡 및 애들에게 찾아가 사과를 했다. 그리고 지금까지의 문제를 해결하기 위해 팀원들과 더 적극적으로 만나서 대화해 보면서 문제점을 찾고, 줄여나가고자 하였다.

지금도 수시로 이야기하면서 프로젝트를 원활하게 운영할 수 있도록 힘쓰고 있다.

 

이런 전반적인 과정에서 깨달은 점은 아직 나는 미숙하다는 것이다. 기존에 여러 프로젝트에서 리더의 역할을 맡아 수행했던 것은 혼자서도 대부분 처리할 수 있던 것이나 다른 팀원들이 짧고 단시간 안에 작업을 끝낼 수 있던 것이기에 이런 과정에서 리더십이 있다고 생각을 하였지만, 이 프로젝트를 하면서 진정한 리더십이 적어도 지금까지 한 것과는 다르다는 것을 알 수 있었다.

 

본인은 이 프로젝트에서 발생하는 여러 크고 작은 일들을 처리하면서 프로젝트뿐만 아니라 팀원들까지 모두 통솔하면서 이끌 수 있 수 있을 때, 비로소 진정한 리더십을 가지게 될 수 있을 거라고 생각했고, 앞으로 프로젝트를 계속 운영하며 이를 완성시킴으로써, 진정한 리더십에 도달해보고자 한다.

 

 


 

~ 2025.5.2

 의자 설치를 위한 준비 과정

 

일단 오늘 한 작업은 의자설치를 위한 준비 작업이다. 의자를 설치하기 위해선 의자 구멍에 맞게 프로파일에 홈을 파야했기에, 팀원들에게 부탁해 구멍을 파는 작업을 수행하였다.

 

학교 자건거 거치대가 있는 외부에서 구멍을 뚤어주었다


 

~ 2025.5.10

 새로운 조향 장치 논의 & 7번째 자리 이동

 

제목 그대로 새로운 조향 장치에 대해 논의하고 있다. 그 이유는 기존 모터와 기존 조향 체계에서 테스트를 해봤을 때, 모터 이가 다 나가는 일이 있었다... 

기존에 사용하던 모터와 동일한 제품이다

 

사진과 같은 모터를 사용했었는데.. 30kg 토크가 기준치가 다른가보다.

 

 

논의 중인 조향 모터

 

새로운 조향 모터로 위와 같은 웜기어 모터가 논의 중에 있다.

단국대 대학 교수님께 현재 시스템에 대해 문의를 드렸고, 관련 답변으로 스텝모터로는 한계가 있을 수 있으니 웜기어 형태로 해라는 조언을 받았다. 그래서 웜기어 류를 찾고 있고, 그중 저 모터가 가장 쓰임이 좋아 보여 팀원들과 함께 논의 중에 있다.

 

실제로 보낸 메일이다

 

그리고 또 장소를 이동했다. 계속 옥상에서 작업하다가 어찌어찌 반으로 내려와서 작업할 수 있게 되었다. 대신 9시 30분 이전에는 같은 반 애들 자습 때문에 못하고, 9시 30분부터 12시 사이에 작업을 하게 될 예정이다.

 

조향 시스템을 바꿔야 되긴 하지만, 아직 제대로 논의된 게 없어 회로 작업을 진행하고 있다.

 

 

배터리를 둘 곳이 없어 의자 뒤쪽에 두다 보니 배선이 상당이 더러워졌다... 언젠가 다시 정리할 예정이다.

 


 

~ 2025.5.21

회로 작업 및 테스트

 

회로 작업을 얼추 다해줬다.

 

 

이 회로는 각종 LED와 팬, 그 외 각종 on/off 작업에 필요한 릴레이를 만능 기판에 연결해 준 것이다.

작업 내내 엄청 힘들었지만 (선을 엄청 잘라먹음) 그래도 시스템이 작동되도록 제작해서 테스트 영상을 촬영했다.

 

https://www.youtube.com/watch?v=CgT_BVrv6Q8

 


~ 2025.5.29

전조등 테스트

 

https://www.youtube.com/watch?v=MJiR9jVsEsg

 

전조등을 연결해서 테스트를 진행해 줬다. 영상에서 보이는 외관은 디자인 팀에서 공기 역학에 관한 탐구를 진행하고자 제작했던 외관인데 잘되지는 않았다. 그래도 나름? 멋이 있어서 설치한 뒤, 등을 연결해서 작동되는 걸 테스트하였다.

 


~ 2025.5.31

모터 테스트

https://www.youtube.com/watch?v=yki7bZvHkOc

 

제목 그대로 모터 테스트를 해줬다. 작업을 혼자 하다 보니 차량을 들면서 촬영을 해야 돼서 영상 초점이 많이 흐트러졌다.

나름 잘 작동해서 기분이 좋았는데, 영상 마지막에 모터를 멈춘 이유는 반대쪽 바퀴에서 케이블이 엉켜서 끊어졌기 때문이다... 

ㅜㅜㅜㅜㅜㅜㅜㅜ

 

영상 촬영 이후 끊어진 부분을 작업을 진행해 주었다.

 

 


~ 2025.06.07

모터 테스트

https://www.youtube.com/watch?v=SJORspiWJXM

 

전반적인 회로작업이 끝나서 전체 테스트 영상을 촬영해 주었다. 그리고 디자인 팀에서 뒤쪽 외관도 만들어줘서 이를 장착한 채로 영상을 촬영하였다.

 

그리고 조향 장치에 대한 길고 긴 논의가 최근에 끝났다. 최대한 기존의 구조에서 덜 변경하는 방향의 조향 장치를 찾고자 하였고, 그나마 가장 나은 부품을 찾아서 구매해 주었다. 아마 곧 작업이 가능하지 않을까 싶다.

 

 

만능 기판을 2층으로 만들어 줬다. 아래는 오디오 관련 회로가 구성되어 있다.

기존에 만능 기판 2개로 관리를 하다가, 층을 쌓는 것이 관리하는데 편하다고 생각해 만능 기판 구멍에 맞는 부품을 구매해서 연결해 줬다. 

 

조립 이후 관리가 편해져서 나름 잘한 선택인 거 같다고 생각한다.

 


~ 2025.07.08

조향 모터 테스트 & 8번째 방 이동

 

https://www.youtube.com/shorts/VLHCuKtVBwg 

 

조향용 모터는 도착했고, 이걸 조향 하기 위한 모터 드라이버를 구매해 줬다.... 

 

분명 알맞은 조향 모터를 샀다고 생각했지만, 구매한 건 AC 모터 드라이버였다. 즉 교류를 입력받는 모터라는 거다.

그래서 모터 테스트 영상에서도 모터가 왔다 갔다 한다.

 

영상 촬영 이후 DC로 어떻게 할 수 있지 않을까라는 생각으로 각종 테스트를 해주다가 모터 드라이버를 작은 폭발과 함께 보내주었다.... AC 드라이버를 DC가 되게 작업하는 건 불가능한가 보다...

 

 

그리고 도대체 몇 번이나 더 이동할지 모르겠지만 8번째 방이동을 했다.

이번에는 그래도 넓은 곳으로 이동했는데, 최근 학교 공사가 대부분 마무리되면서 정보실이 개방되었기 때문이다.

 

 

 

공사가 끝난 걸 확인하자마자 선생님께 사용요청을 드렸고, 다행히 허락받아 전기도 되고, 와이파이도 되는 넓은 공간으로 이동하였다. 대신 학교 수업이 진행되는 교실이라 저녁마다 청소해야 되긴 하지만 이 정도는 감수할 수 있다.

 

기숙사로 들어가기 전 찍은 사진이다.

 

 

이외에도 프로젝트 진행 시 도움이 되는 정보를 얻고자 공동교육과정 스터디를 만들었다. 근처 공고에서 자율주행차 제작에 도움이 될만한 공교과를 진행하고 있어서 같이 들을 스터디를 모집했다.

 

일단 고등학생이라 생기부를 작성해야 돼서 이점을 같이 들을 팀원들을 꼬드겨 봤다. (혼자 듣기에는 너무 외로워 ㅜㅜ)


~ 2025.07.12

오디오, gps 테스트

 

https://www.youtube.com/shorts/t_ewAtfteg4

 

 

https://www.youtube.com/shorts/2nxVzP9Xw68

 

 

 

차량 위치 추적용 gps랑 오디오 회로를 연결해 주었다. 기존에 이미 만든 적이 있었지만, 장소를 이동하면서 다 부서진 관계로 다시 만들어줬다. 최근 들어 학교에서 제재랑 애들을 빼가시는 선생님들 계셔서 작업이 늦어지고 있다.

 

조향 장치가 왔지만 며칠 째 조립을 못하고 있다.

 

조향 장치에 대해서 할 말이 더 있는데, 분명 최대한 현재 차량에 설치할 수 있는 부품으로 주문했지만, 그래도 사이즈가 너무 컸다.... 그래서 현재 설치 방향에 대해서 논의하고 있다. 논의는 주로 점심시간이나 카톡으로 진행하고 있는데, 그러다 보니 논의 자체가 너무 길어져서 언제 한번 애들이랑 만나서 이야기할 예정이다.

 


~ 2025.07.23

차량 전체 개조

 

제목 그대로 차량을 전체 해체 후 재조립을 진행하였다.. 결정적인 이유는 조향 장치 설치에 대한 이슈가 가장 컸고, 기존 모터 시스템도 텐셔너가 있다곤 하지만 그래도 체인이 튕겨 체인에 부담이 가는 문제랑 무게 때문에 생기는 문제 등 다양한 문제 상황이 있어 해체 후 처음부터 새롭게 제작하는 걸로 결정했다...

 

1년 정도 해온 게 다 없어진다는 생각에 너무나도 슬펐지만 더 나은 자율주행차 제작을 위해서라면 감수해야 되는 일이라고 생각한다.

 

추가로 다시 제작을 진행함에 따라 돈이 더 깨지게 생겼다... 지금도 지원비 100으론 부족해 개인 사비를 들여서 400만 원 가까이 사용하였는데, 그래도 더 사용해야 될 거 같아서 돈을 어디서 벌어와야 될지 고민이다...

 

 

https://www.youtube.com/shorts/zkWXJHd2Oxw

 

이 영상은 전체 해체 이후 현재 조향장치에 맞는 세팅으로 재조립하고 있는 장면이다. 저 영상에도 비하인드가 있는데, 그건 바로 조향이랑 바퀴가 돌아가는 방향이 반대라는 것이다.. 조향 장치를 설치할 때 방향을 반대로 설치해서 반대로 돌아가는 영상이 만들어졌다... 반대로 돌아가는 문제는 이후에 다시 해체 이후 작업해서 고치고자 한다... (내 시간 ㅜㅜ)

 

카메라를 밑에 설치하고 새로 조립한 조향장치를 촬영했다


2025.07.22 ~ 2025.07.29

공교과 자율주행차

공교과에서 와서 자율주행차에 대해 공부하고 있다.


 

위 사진과 같은 자동차를 공교과에서 운전했다. 리눅스 기반으로 ROS를 조작하는 자율주행차인데, 가격이 4백만 원 언저리였던 걸로 기억한다... 이거 생각하면 우리가 상당히 저렴하게 자동차를 만들고 있다는 생각이 들기도 했다.

 

수업에서는 자율주행차에 관한 다양한 내용들을 배웠는데, 대부분 아는 내용이라 조금 실망했다. 공교과 교육계획표에는 인공지능을 활용해서 하는 활동이 있었는데, 인공지능은 마지막날 CNN 기초와 시뮬레이션 프로그램에서 블록코딩을 이용한 인공지능 활용만 해볼 수 있어서 재미는 있었지만, 아쉬운 수업이었다.

 

그나마 다행인 점은 친구 몇 명과 같이 갔다는 점..? 외롭지는 않았다는 점이다.

 

https://www.youtube.com/shorts/ZHX_BGv2ySo

 

중간에 자율주행차가 제대로 움직이지 못하는 곳이 있는데, 그곳은 이 자율주행차의 고질병이라고 한다..

 


 

2025.08.04 ~ 2025.08.05

문 열어줘!! n회차

 

 

카톡 사진이 모든 걸 설명해 준다. 저번에도 몇 번 문이 잠겨서 못 들어간 적이 있었지만, 저 날은 12시 4분에 카톡을 보내고도 아무도 열어주지 않았다... 12시 20분? 까지 밖에 기다리다가 친구 한 명이 열어줘서 간신히 들어왔다..

 

 


~ 2025.08.19

자율주행차 v2

 

 

기존 시스템을 모두 부수고, 바퀴랑 프로파일을 새로 구매해 제작해 주었다. 기존 차량 사이즈보다 좀 더 커져서 작업해야 될 양이 늘었고, 조향 장치를 다는 것과 바퀴를 연결하는 것 하나하나가 모두 전보다 빡세져서 제작하는데 시간이 오래 걸렸다.

가장 큰 문제는 학교에서 9시 30분부터 11시 사이에만 정보실을 사용할 수 있도록 제한을 둬서 작업 시간 자체가 적어 오래 걸렸던 거 같다.

 

차량이 커지고 그에 따라 무거워짐에 따라 모터도 더 강한 파워를 낼 수 있는 모터를 새로 구매해 줬다. 그리고 기존까진 한 손으로 차량을 들고, 반대 손으로 작업을 하면서 고생이란 고생은 다 하였기에, 차량을 들어줄 수 있는 도구를 추가로 구매했다.

 


~ 2025.08.22

조향 장치 만들기

 

 

조향 때문에 처음부터 리셋하고 다시 작업하였지만 다시 조향에서 문제가 생겼다... 기존 조향의 안정성이 매우 낮아, 다른 방법을 찾아보던 중 기존 웜기어를 분해해 위 사진과 같이 조향 축에 연결되는 막대에 모터를 연결하여 활용하는 아이디어를 냈다. 이후 이 작업을 진행하던 도중, 가장 큰 문제를 직면했는데... 그건 바로 쇠 막대가 너무 단단하다는 거다. 드릴로 뚫어봐도 거의 뚫리지 않아서 상당히 애를 먹고 있다.

 

 

사진에 보이는 거처럼 천공기를 활용해서 뚫어보려고 시도 중이다. 시도 과정에서 수많은 불꽃이 일어나서 이를 줄이기 위한 방법을 찾아보는 중이다.

 


~ 2025.08.28

자율주행차 RL 

 

자율주행차라면 강화학습은 필수다. 그래서 전부터 강화학습을 하기 위해 시뮬레이션을 제작하고 현재 다양한 시도를 해보고 있다.

 

제작한 시뮬레이션 내 자동차와 라이다센서를 나타낸 것이다.

차를 중심으로 여러 각도로 뻗어 나가서 도로와 교차하는 부분에 빨간색 점을 표시한다.

이 과정에서 차량은 라이다 센서 값 거리를 모두 알 수 있는데, 이는 실제 우리가 사용하는 라이다와 같은 방식으로 제작해 주었다.

 

RL는 DQN을 기반으로 하면서 Duel DQN 과 Double DQN 을 같이 적용시켜 주었다.

 

Reward는 차량이 도로의 중앙에 가까울수록 커지며, 임계값을 설정해서 특정 범위를 넘어서면 reward 가 아니라 벌을 주는 형태로 제작하였다. 그리고 차량이 가만히 있거나 벽에 박을 때 벽과의 각도에 따라 벌을 다르게 부과하는 Reward를 구축하였다.

DQN 모델은 라이다 값과 차량의 속도를 입력받아 학습을 진행해 전진, 후진, 우회전, 좌회전, 직진하면서 우회전, 좌회전 이렇게 6가지의 케이스 중 하나를 리턴하게 한다.

 

class NoisyLinear(nn.Module):
    def __init__(self, in_features, out_features, sigma_init=0.017):
        super().__init__()
        self.in_features = in_features
        self.out_features = out_features

        self.weight_mu = nn.Parameter(torch.empty(out_features, in_features))
        self.weight_sigma = nn.Parameter(torch.full((out_features, in_features), sigma_init))
        self.bias_mu = nn.Parameter(torch.empty(out_features))
        self.bias_sigma = nn.Parameter(torch.full((out_features,), sigma_init))
        self.reset_parameters()

    def reset_parameters(self):
        mu_range = 1. / (self.in_features ** 0.5)
        self.weight_mu.data.uniform_(-mu_range, mu_range)
        self.bias_mu.data.uniform_(-mu_range, mu_range)

    def _f(self, x):
        return torch.sign(x) * torch.sqrt(torch.abs(x))

    def forward(self, x):
        if self.training:
            eps_in = self._f(torch.randn(x.size(-1), device=x.device))
            eps_out = self._f(torch.randn(self.out_features, device=x.device))
            noise_w = torch.ger(eps_out, eps_in)
            w = self.weight_mu + self.weight_sigma * noise_w
            b = self.bias_mu + self.bias_sigma * eps_out
        else:
            w = self.weight_mu
            b = self.bias_mu
        return F.linear(x, w, b)

class DQN(nn.Module):
    def __init__(self, state_dim, action_dim, fc1_nodes, hidden_dim=512, enable_dueling_dqn=True):
        super().__init__()
        hidden = int(fc1_nodes) if fc1_nodes is not None else int(hidden_dim)
        self.enable_dueling_dqn = enable_dueling_dqn

       self.fc1 = NoisyLinear(state_dim, hidden)
        self.ln1 = nn.LayerNorm(hidden)
        self.fc2 = NoisyLinear(hidden, hidden)

        if self.enable_dueling_dqn:
            # Value/Advantage heads (Noisy)
            self.v1 = NoisyLinear(hidden, hidden // 2)
            self.V = nn.Linear(hidden // 2, 1)

            self.a1 = NoisyLinear(hidden, hidden // 2)
            self.A = nn.Linear(hidden // 2, action_dim)
        else:
            self.out1 = NoisyLinear(hidden, hidden)
            self.out2 = nn.Linear(hidden, action_dim)


    def forward(self, x):
        if x.dim() > 2:
            x = x.view(x.size(0), -1)
        x = F.relu(self.ln1(self.fc1(x)))
        x = F.relu(self.fc2(x))
        if self.enable_dueling_dqn:
            v = F.relu(self.v1(x)); V = self.V(v)
            a = F.relu(self.a1(x)); A = self.A(a)
            Q = V + A - A.mean(dim=1, keepdim=True)
        else:
            x = F.relu(self.out1(x))
            Q = self.out2(x)
        return Q

 

현재 사용 중인 DQN 모델이다.

NoisyLinear를 기존 DQN 모델에 삽입해서 자율주행차가 자연스럽게 동작을 이어나갈 수 있도록 제작해 주었다. 

NoisyLinear는 https://arxiv.org/abs/1706.10295에 대해 잘 정리한 블로그랑 pytorch 공식 문서를 활용해서 작성하였다.

 

 

현재 위와 같은 학습을 계속해서 진행해주고 있다. 하지만 아직 좋은 성과를 보이는 모델을 찾지 못해서 여러 가지를 조작해 보면서 뛰어난 성능을 보이는 모델과 Agent 보상 방식을 찾고 있다.

 

강화학습은 틈틈이 계속 진행하면서 성과가 나타난다면 일지를 통해 새롭게 업데이트할 예정이다.

 

RL github : https://github.com/UNHO-AutonomousVehicle/RL_autodriving

 

GitHub - UNHO-AutonomousVehicle/RL_autodriving

Contribute to UNHO-AutonomousVehicle/RL_autodriving development by creating an account on GitHub.

github.com

 

 

https://www.youtube.com/watch?v=rQVuQ_wF6bs

 

 


~ 2025.09.04

모터 구동 & 조향 장치 중간보고

 

https://www.youtube.com/shorts/OWnHHQWJ2VI

 

구동 모터를 설치했다. 구동 모터를 설치하고 돌리기 까지도 많은 역경과 고난이 있었는데, 모터에 있는 너트가 풀림 방지 너트라서 모터 축과 같이 돌아가 풀 수 없었다는 점과, 현재 가지고 있는 428 DID 체인에 해당하는 체인 기어를 구할 수가 없는 게 가장 큰 문제였다. 

 

너트는 동일한 너트를 어디선가 찾아내면서, 모터에 달려 있는 너트를 부수는 방향으로 이야기가 진행되었고, 실제로 드릴로 너트를 부쉈다.

 

체인 기어 같은 경우 학교 근처에 있는 오토바이 수리점을 돌아보면서 체인과 모터에 해당하는 체인 기어가 있는지 탐방을 진행하였다.

그중 한 가게에서 체인에 맞는 기어를 무료로 제공해 주시면서 문제를 해결할 수 있었다.

 

 

체인 기어의 내경이 모터 축에 비해 커서 와셔와 힘(?)으로 강제로 고정시켜 주었다.

 


~ 2025.09.09

주행 테스트

 

제목 그대로 주행 테스트다. 별의별 고난과 역경이 있었고, 이것들을 모두 처리하면서 드디어 주행 테스트를 할 수 있게 되었다. 

 

당일 관리아저씨께 양해를 구해 10시 30분부터 12시까지 외부에서 테스트를 진행하였다.

 

테스트가 순조롭게 진행되었다면 11시에 마무리했겠지만 아래 영상에 나오는 거처럼 초반에 기어가 헛도는 현상 때문에 11시 40분까지 문제 해결을 위해 사투를 벌였다.... 

 

11시 40분에 결국 문제를 해결하면서 주행할 수 있는 상태를 만들었고, 11시 40분부터 12시까지 신나게 주행시키면서 스트레스를 풀었다. 

1년 하고도 2개월 동안 정말 많은 일들이 있었고, 제작하는 과정에서 셀 수 없이 많은 어려움이 있었는데 결국 주행 테스트를 할 수 있게 돼서 기분이 너무너무 좋았다. 하지만 여기서 멈추지 않고 더 완벽한 자율주행차를 만들어서 실제 트랙에서 작동시키는 게 내 목표다.

 

그게 언제가 될지는 모르겠지만 앞으로도 이 활동을 계속 진행할 것이다.

 

https://www.youtube.com/watch?v=Elh2P6uRY-U

 


~ 2025.09.26

RL 개발 및 9번째 방 이동

 

쓰여 있는 그대로 9번째 방이동 했다.

발단은 수시 원서를 넣은 날 발생했는데, 이날 우리는 아무도 건물에 출입하지 않았지만 우리가 사용하지 않는 층이 불이 켜져 있었고, 선생님은 그에 대한 책임을 우리에게 진 것이다. 그 전날에 그 위치에서 공교과를 한다는 사실을 알았기에, 그걸 말했으나 결국 우리 잘못으로 넘어간 분위기였다. 우리가 비밀번호를 유출했다나 뭐라나... 우리는 비번을 아는 사람이 핵심 멤버 3명만이 알고 있고, 모두 그날 가지 않았음을 보장할 수 있다. 근데 그에 대한 책임을 우리에게...

 

그리고 이를 핑계로 방을 강제 이동 당하고 프로젝트 운영에 어려움이 생겼다.

학교에서 프로젝트를 중단시켰다는 것이다. 솔직히 방 제공과 초기 100만 원 이외에 도움은 없고, 오히려 방해만 했는데 제작한 자동차를 기부하라거나 애들을 데려가면서 방해란 방해는 계속해왔는데 이젠 억울하게 누명을 씌우며 프로젝트를 중단시키는 게 도저히 이해가 가지 않았다...

 

이러한 이유로 더 좁은 창고로 이동했고, 창고에 짐을 정리하고 잠정적 중단이 되었다.

하지만 중단이 되었다고 해서 그만둘 내가 아니다.

 

비밀번호는 아직 알고 있기에 그걸로 선생 니들이 퇴근하신 이후에 들어가서 작업을 이어서 해왔다.

 

현재는 RL을 가장 중점적으로 하고 있으며, 조향에 필요한 추가 재료를 구매해 주었다.

그리고 계속해서 실패했던 가공회사의 연락이 닿았고, 이야기를 통해 현재 가지고 있는 모터에 해당하는 구멍은 뚫기 힘들다는 결론이 나왔다.. 키가 가장 문제가 되는 부분이었고, 그래서 키가 없는 모터로 다시 구매해야 하는 상황이다...

 

그래도 다행인 건 키 문제만 해결하면 10만 원 안에 해결할 수 있는 모양이다. 그래서 지금은 조향 모터로 활용한 다른 모터를 찾는 중이다.

 

RL 은 몇 가지 변경 사항이 있다.

일단 라이다의 범위를 커스텀으로 조정할 수 있게 변경하였다. 기존은 360도의 라이더 값을 이용했는데, 이제는 특정 각 범위만을 이용해서 판단한다. 이는 현재 RL 시스템에서 360도의 라이다 값이 오히려 학습을 방해하는 거 같아 실험적으로 도입한 기능이다.

 

그리고 라이다의 인식 범위를 늘리고, normalization을 exp를 통해 좀 더 차이가 크게 나타날 수 있도록 수정하였다.

 

 

이렇게 바꾼 이후 테스트를 진행했을 때, 조금은 평균이 상승한 모습을 보였지만 아직 좋은 성과를 보이고 있지는 않다.

 

 

조금은 개선? 된 거 같이 보인다.

 

이외에도 다양한 실험을 진행하면서 좀 더 좋은 결과를 보이는 ENV, REWARD, DQN을 찾고 있다.

그리고 실험 데이터 관리가 어려워 기존까진 그냥 폴더로만 정리하였는데, 실험 횟수가 증가하고, 다양한 조합이 생기면서 폴더로 정리하는 것에는 한계가 생겼다.

 

그래서 향후 스프레드시트를 이용한 실험결과표를 새로 작성할 예정이다.

 

 

반응형

'개발' 카테고리의 다른 글

TETRIS  (0) 2025.09.09
MATHGAME  (0) 2025.09.09
자율주행차 제작  (0) 2025.01.07
paper-domain-generalization  (0) 2024.03.13
tetris  (0) 2024.03.13
댓글