Jetson & 머신러닝

[2] 신호등 신호 변경 인식 및 차량 출발 인식 시스템 만들기

아크리엑터 2024. 3. 2. 22:58
반응형



몇 년전 차안에서 있은 일부터 기록한다.

첫번째 사례는 출근길에 자주 있었던 상황이다.
서울에서 분당까지 출근할 때, 사거리에 멈췄을 때 잠시 눈을 감고 쉴 때가 많다. 1시간의 출근 시간동안 잠은 부족하고해서 1분여의 잠시 눈 감고 있는 시간이 꿀 같았었을 것 같다. 신호가 바뀌었을까를 걱정하며 수시로 실눈 떠서 신호를 보곤했다. 물론, 뒤에서 빵빵 거려서 출발한 적도 있었다.

두번째 사례는 아내와 같이 사거리에서 신호 대기할 때 상황이다.
사거리에 걸렸을 때 딴짓을 많이 하는 경우가 많아서, 아내의 잔소리를 많이 듣는다. 분명히, 신호를 잠깐 잠깐씩 보면서 딴짓을 하는데, 신호가 바뀌면 아내의 잔소리..
파란불로 바뀌었다. 앞 차 출발했다 라는 잔소리를 자주 듣게 된다.
이 상황을 극복(?)하고자 “와이프2.0”이라는 것을 만들어야 겠다고 생각한지 벌써 몇 년이 지났다.

그동안 필요한 것은 찾아보고 시험을 해보았는데, 주업이 아닌 시간 날때마다 건드리니, 6개월만에 만지는 경우도 있어서 시간이 너무 잘 지나간다.
오랜 시간이 지나니, 이런 기능을 가진 블랙박스가 나오고 있기도 하다.

그동안 라즈베리파이에 올려보려고, 집에 있던 오래된 라즈베라파이2,3를 꺼내서 이미지 인식 성능을 확인해보았다.
아주 빠른 속도가 나올 팔요는 없고 초당 1장의 사진 인식만 되어도, 앞 차 출발하는 것과 신호등 바뀐 것을 인식할 수 있기에 집에 있던 것을 이용해보려했다.

이미지 인식을 위해서는 YOLO를 이용해서 학습을 시키고, 라즈베리파이에서 돌아가도록해봤는데... 2,3 로는 성능이 나오지 않는다.
스펙상으로는 라즈베리파이4는 될 것 같은데 10만원이 넘는 가격에 새로 사기도 아깝고 해서, 그럴 바엔 집에 있는 nvidia의 젯슨나노를 이용하는 것이 낫을 것 같아 이를 사용하였다.
젯슨나노와 라즈베리파이4의 가격이 비슷하지 않을까? 요즘 가격은 비교 안해봤는데.. 그랬던 것 같다.
블랙박스에 촬영된 동영상으로  신호등 변화를 인식하고, 앞차를 인식하게 해보니 초당 1장 이상의 속도는 나오는 것을 확인하였다.
자세한 것은 나중에 순서대로 얘기하겠다.

우선 차량에 jetson nano를 붙이려면, 차 시동을 껐을 때 OS가 자동으로 꺼지도록 해야만 했다. 그렇지 않으면, 수시로 시동을 꺼지게 되는 상황에서 OS가 깨지는 것은 당연할 듯.
차 시동이 꺼졌을 때를 인식해서, jetson nano의 OS(우분투를 설치할 듯)를 안전하게 셧다운하기 위해 30초 정도 유지할 전원이 필요하다.
이것을 위해, 집에 돌아다니는 배터리를 사용할까했지만 리튬이온 배터리가 여름철 차안에서 폭발할 수 있어서 배제하였다. 차량 내부 온도를 재어보지는 않았지만, 60도에 녹는 폴리모프를 차에 뒀더니 녹아있는 것으로 봐서는 그 이상이 되는 것 같다.

다른 방법으로, 슈퍼커패시터를 이용하여 배터리를 대신하는 UPS를 만들어 봤다.  하지만, 만들고 보니 슈퍼커패시터는 콘덴서와는 달리 80도 이상에서는 문제가 있는 것으로 확인했다. 그래서, 이것도 만들다가 중단했다. 물론, 15패럿짜리 슈퍼커패시터로는 젯슨나노를 5초도 버티지는 못했다.

마지막으로, 이런 것 사용하지 않고 차량의 상시전원을 이용하여 젯슨나노를 안전하게 꺼지게 하는 것이 제일 맞는 방법으로 생각하고 아래와 같이 만들어보았다.
차량 전원은 아래와 같다.

일반적으로는 위의 2번인 ACC를 사용하지만, 시동이 꺼지면 바로 전원이 차단된다. 물론 1번을 연결하면 지속 사용할 수있다. 블랙박스를 1번에 연결해서 시동이 꺼지더라도 계속 사용할 수 있게 하지만, 배터리 방전시키게 만드는 주요 원인이 된다. 물론 자주 운전하면, 이러한 방전을 막을수 있겠지만.

위의 1번과 2번을 이용해서 시동이 꺼졌을 때, 안전하게 OS를 셧다운 시킬수 있는 수준의 30초 정도의 전원만 끌어오도록 만들어봤다.  회로를 새로 만들기 보다는 판매하는 모듈을 사서 조합하는 방식으로 사용하였다.

먼저, 알리에서 타임지연회로를 구매했다. 12v 용으로 20A까지 지원하는 모듈이다.  지연시간은 딥스위치를 조합하여 0.5초에서 120초까지 설정할 수 있다.
https://s.click.aliexpress.com/e/_okOqKfU

US $3.16  21% Off | DC 12V Delay Power-off Switch Car ACC Trigger  Board 20A Timing Switch Relay Module For Driving Recorder S

US $3.16 21% Off | DC 12V Delay Power-off Switch Car ACC Trigger Board 20A Timing Switch Relay Module For Driving Recorder Stereo

star.aliexpress.com



그리고, 젯슨나노에 전원을 넣기 위해서는 5v로 변경해야하기 때문에 step down 모듈을 추가했다. 5v용으로 바꾸는 것은 다양한 모듈이 있을텐데, 난 다른 목적으로 아래의 stepdown모듈을 구매해서 사용하였다. 이것은 반고정 저항을 돌려서 출력 전압과 전류를 조정할 수 있다. 내가 산 것은 아래 것과는 다른 놈인데, 아래 것이 숫자가 출력돠도록해서 조정되는 전압을 확인할 수 있어보인다.

https://s.click.aliexpress.com/e/_oDarGDs

US $1.76  30% Off | XL4015 75W DC-DC 5A Voltage Regulators Module Adjustable Buck Module With Voltmeter Display

US $1.76 30% Off | XL4015 75W DC-DC 5A Voltage Regulators Module Adjustable Buck Module With Voltmeter Display

star.aliexpress.com


위의 두가지를 조합해서, 젯슨나노로 들어갈 전원을 만들어준다. 우선, 시간지연회로의 뒷면의 점퍼 부분을 납땜질로 연결해둔다. 아래의 빨간색 표시 부분이다.



아래와 같이 연결하면, 시동이 꺼지더라도 설정된 시간 만큼 전원이 유지되도록할 수 있다.


그 다음은, 젯근나노에서 차량 시동이 꺼진 것을 인지하도록 만들어보자. 위에서는 차량 시동이 꺼지면 120초 동안 전원이 추가로 유지되도록 하였다. 이 시간동안에 젯슨나노에서 시동이 꺼진 것을 인식해서 자동으로 shutdown 명령어를 실행하도록 해야하는데, 젯슨 나노에서 인식할 수 있는 회로를 아래에 구성해본다. 이 회로의 모듈은 판매가 되ㄹ수도 있는데, 너무 간단해서 부품을 사서 납땜해서 만들어보았다. 회로는 아래와 같다.



필요한 부품 구매 링크는 아래에 넣어둔다.

1. photo coupler 50개에 2천원 정도 한다.
https://s.click.aliexpress.com/e/_oDLMKBG

US $1.49  70% Off | 50pcs PC817C PC817B PC817  EL817 817 DIP-4 photoelectric coupler new original

US $1.49 70% Off | 50pcs PC817C PC817B PC817 EL817 817 DIP-4 photoelectric coupler new original

star.aliexpress.com


2. 저항은 100개 단위로 파는데, 0.44달러 정도하네. 2.2k와 4.7k옴을 구매한다.  
https://s.click.aliexpress.com/e/_oldfxJu

US $0.44  36% Off | 100PCS 1/4W 1% Metal Film Resistor 0.25W Resistance 1 10 100 110 120 150 220 270 330 470 1K 2.2K 4.7K 10

US $0.44 36% Off | 100PCS 1/4W 1% Metal Film Resistor 0.25W Resistance 1 10 100 110 120 150 220 270 330 470 1K 2.2K 4.7K 10K 100K 470K 1M ohm

star.aliexpress.com


위의 부품으로 납땜질해서 만든 놈을 사진찍어 두었는데, 아직 터미널 부품을 못 구해서 한쪽은 비워두었다.




위에서 설명한 것을 모두 연결한 것이, 아래 그림과 같다. 아직 젯슨나노에 연결하지 않아서, 5가닥의 선으로 젯슨나노에 연결할지, 아니면, 전원을 합쳐서 최종 세가닥만 젯슨나노에 연결할지를 고민 중이다. 후자로 연결하게 될 것 같다.

이제 젯슨나노를 차량에 안전하게 연결하기 위한 회로는 모두 마쳤다.  젯슨나노에서 자동 셧다운 하기 위한 프로그램을 아주 간단하게 만들어야 하는데, 이것은 다음장으로 미룬다.
지금 젯슨나노에 바로 카메라를 연결하지 않고,  esp32-cam모듈을 이용해서 사진을 수신받는 방식으로 적용해볼까하고 있다.연결해보고 이상하면 esp32-cam을 버리고 젯스나노에 usb카메라를 연결해서 사용하려 한다.

내가 잊어버릴까봐 정리했다. 위의 링크를 통해서 구매해도 되고 해당 내용으로 검색해서 구매해도 된다. 위 링크로 구매하면 나한테 5원 쌓이려나.. 모르겠다..

아래내용은 삭제 예정.




US $0.62  10% Off | 100PCS 1/8W Carbon Film Resistor 5% 0.125W 0R - 1M 10 22 47 100 150 220 270 330 470 510 1K 2.2K 4.7K 5.1

US $0.62 10% Off | 100PCS 1/8W Carbon Film Resistor 5% 0.125W 0R - 1M 10 22 47 100 150 220 270 330 470 510 1K 2.2K 4.7K 5.1K 10K 47K 100K 470K ohm

star.aliexpress.com







US $3.16  21% Off | DC 12V Delay Power-off Switch Car ACC Trigger  Board 20A Timing Switch Relay Module For Driving Recorder S

US $3.16 21% Off | DC 12V Delay Power-off Switch Car ACC Trigger Board 20A Timing Switch Relay Module For Driving Recorder Stereo

star.aliexpress.com

반응형