안녕하세요 에디입니다~! 이번에는 특별한 PROJECT를 해볼까 합니다.자율주행 PROJECT입니다!
다들 에디가 작년에 소개한 인공지능 RC카 아르티노라이트 기억하시나요?아르티노라이트에 대해 모르시는 분은 아래 포스팅을 참고해 주세요.http://blog.naver.com/eduino/222585985780 안녕하세요! 에디입니다. 최근 테슬라, 벤츠, 현대, BMW 등 유명 자동차 업체들의 ‘자율주행 기술"blog.naver.com’ 그때 소개한 알티노 라이트를 자율주행차로 만들어 볼 생각입니다.
#RC카킷 #인공지능RC카 #자율주행RC카 #코딩키트 #코딩학습 #성인코딩 #코딩로봇 #코딩교구 #인공지능 #인공지능코딩
제일 먼저 할 일은 자율주행차가 어떻게 움직이는지 생각해 봐야 해요!
먼저 RC카가 주행하는 트럭은 다음과 같습니다.
사용한 트랙: https://eduino.kr/product/detail.html?product_no=799&cate_no=97&display_group=1 코딩교육 전문 쇼핑몰 에듀이노, 아두이노, 보드, 쉴드, 모듈, 키트, 로봇, 드론, 교구, 전자부품 등의 판매 eduino.krRC 차량이 직진-우회전-후진-주차 순으로 움직이도록 해 봅니다.
그리고 RC카가 자율주행을 할 때 진행방향에 자동차의 진행방향과 깜빡이를 켜도록 해주는 거죠.
또한 장애물을 감지하여 멈추도록 후방 주차 후 정지 시 ‘쏠’ 소리가 3초간 울리도록 추가 동작을 넣습니다.
기본적인 방법을 생각했기 때문에 코딩을 시작해 보겠습니다.
이번 코딩에서는 ENTRY를 사용해 보겠습니다! https://playentry.org/ 소프트웨어를 통해 미래를 꿈꾸며 함께 성장하겠습니다.playentry.org
깨끗하고 쉬운 수정을 위해 함수와 변수를 활용합니다.
함수는 총 7개(LEFT, RIGHT, GO, BACK, BREAK, 회전, 주차), 변수(SPPED)는 1개를 사용해 보겠습니다.
먼저 SPEED라는 변수를 선언하겠습니다.
SPPED 변수는 자동차의 속도를 의미합니다.에디는 변수의 값을 300으로 지정하는데, 여러분이 원하는 값으로 변경할 수 있습니다. (값이 클수록 RC카의 속도가 빨라집니다.300보다 작은 값을 하면 차의 무게 때문에 앞으로 나가지 못할 수도 있습니다.)
이제 기본적인 함수부터 만들어 볼까요?1.LEFT
LEFT 함수는 왼쪽으로 회전하면서 전진하고 왼쪽 지시등과 LED로 왼쪽 화살표를 보여줍니다.
- 라이트 좌측 방향 지시등 2) 아르티노 라이트 엔트리본 1의 p54를 참고하여 LED를 켭니다.3) 왼쪽으로 가기 때문에 스티어링(=바퀴의 회전방향)을 왼쪽으로 바꾸고 구동(=바퀴의 속도)에 SPPED를 넣습니다.
2. RIGHT
RIGHT 함수는 오른쪽으로 회전하면서 전진하고 오른쪽 지시등과 LED로 오른쪽 화살표를 보여줍니다.
- 라이트 우측 방향 지시등 2) 아르티노 라이트 엔트리본 1의 p54를 참고하여 LED를 켭니다.3) 오른쪽으로 가기 때문에 스티어링(=바퀴 회전 방향)을 오른쪽으로 바꾸고 구동(=바퀴 속도)에 SPPED를 넣습니다.
3) GO
GO함수는 모든 지시등을 끄고 회전하지 않고 앞으로 나아가는 함수입니다.
- 라이트의 전방향 오프 2) 아르티노 라이트 엔트리본 1의 p54를 참고하여 LED를 켭니다.3) 앞으로 나아가므로 스티어링(=바퀴의 회전방향)을 중앙으로 바꾸고 구동(=바퀴의 속도)에 SPPED를 넣습니다.
4. BACK
BACK는 뒤로 가는 함수입니다.
- 스티어링 중앙에 맞춘다 2) 바퀴가 반대로 굴러가야 하므로 구동에 양수 아닌 음수를 넣는다(값을 마음대로 변경하셔도 됩니다)
5. BREAK
BREAK는 모든 활동을 멈추고 ‘쏠’ 소리가 3초간 나도록 합니다.
- 모두 정지 2) 소리「쏠」ON-3초 기다린다.- 소리 ‘쏠’ OFF
이렇게 기본적인 함수를 만들었습니다.그러면 기본적인 함수를 조합해서 회전, 주차 함수를 만들어 보겠습니다.
6. 회전 주행을 하다 보면 자동차가 회전하여 한쪽으로 치우쳐 나아갈 수 있습니다.이 경우 만약 RC카와 벽이 부딪히면 RC카가 벽에 막혀 앞으로 나가지 않게 됩니다.그래서 차가 양쪽으로 너무 치우치지 않도록 운전하도록 해야 한다구요!
그러기 위해서는 RC카의 적외선 1, 3번 센서를 사용해야 합니다.
6-1) 센서 거리 측정 1, 3번 센서와 가까울 때 센서 값이 어느 정도 나오는지 측정해 보아야 합니다.
RC 자동차가 벽에 부딪쳤을 때의 1, 3 번 센서 값을 측정해 줍니다.
측정한 센서보다 작은 숫자를 사용하여 1, 3번 센서 값이 그 값보다 크면(=벽과 가까이 있으면) 후진하여 반대쪽으로 회전시켜 한쪽 벽에 치우치지 않도록 합니다.
부딪혔을 때 측정치가 93이 나왔는데 그건 참고 측정치였고 실제로 RC카를 다루다 보니 저 같은 경우는 35정도가 적당히 인식되었어요!여러분도 할 때 측정치는 참고치로 하고 여러 번 실험을 해보고 자연스럽게 RC카가 움직이는 값으로 책정하면 됩니다.
7. 후방주차 후방주차를 하려면 적외선 센서 6번을 사용해야 합니다. 6-1)번과 동일한 방법으로 센서 6의 거리를 측정합니다.
자율주행 RC카를 만들기 위해서는 많은 시도를 해야 합니다.후방 주차를 하려고 몇 번 해보니 자동차 바퀴의 회전 각도가 최대 20이므로 한 번의 후진으로는 벽에 부딪히기 쉬워지고 두 번에 걸쳐 후진하게 됩니다.
먼저 오른쪽으로 후방을 하고 다시 앞으로 직진하고 두번째로 오른쪽으로 후방을 하고 주차공간으로 들어갑니다.
센서 6 값보다 작아질 때까지(=벽에 가까워질 때까지) 후진을 하다가 측정값보다 커지면 모든 코드가 멈추고 정지합니다.
이제 모든 함수를 작성했으니 함수를 합쳐서 자율주행하는 차를 만들어 보겠습니다.
#RC카킷 #인공지능RC카 #자율주행RC카 #코딩키트 #코딩학습 #성인코딩 #코딩로봇 #코딩교구 #인공지능 #인공지능코딩
8. 자율주행자는 조도 센서를 이용하여 어두워지면 주차(7)를 시작하려고 합니다. (엔트리 1p90)
그리고 2번 센서와 벽이 얼마나 가까우면 앞이 막혔다고 인식시키는지를 측정해야 합니다.
저의 자율주행 알고리즘은 다음과 같습니다.
- 센서 2의 값이 150보다 작으면 (=끝이 막히지 않으면) 직진한다.- 벽에 치우치지 않도록 하다.(=함수회전)
- 2. 센서 2의 값이 150보다 크면(=앞이 막히면) 1초간 후진을 한다.- 벽에 치우치지 않도록 하다.(=함수회전)
- 3-1) 센서 4의 값이 5보다 크면 (=오른쪽 벽이 막혀 있으면) 좌회전한다.- 벽에 치우치지 않도록 하다.(=함수회전)
- 3-2) 아니면 우회전한다.- 벽에 치우치지 않도록 하다.(=함수회전)
자동차가 스스로 벽을 인식하고 회전하죠.복잡한 코드 없이도 엔트리를 이용해 손쉽게 자율주행차를 만들 수 있었어요!
실제 에디는 자율주행을 만들면서 많은 시행착오를 겪었습니다.1) 내 생각대로 RC카는 움직이지 않아!확실히 제 생각대로 코딩을 짜면 RC카가 제 생각과 똑같이 움직이는데 100% 똑같이 움직이는 게 아니라 많은 수정을 해야 했습니다.
2) 반응속도 느려!확실히 측정치는 범위 내이지만 반응이 늦게 후진해야 하는데 후진이 안 돼서 벽에 부딪히는 경우가 많았습니다.
3. 같은 코드지만 다른 결과! 영상에서는 자율주행에 성공했지만 같은 코드였지만 실패한 영상도 많았습니다.
그 밖에도 많은 문제가 있어서 만드는데 시간이 많이 걸렸습니다.여러분도 자신의 환경에 맞게 코드를 쌓다 보면 많은 오류가 발생할 것입니다.그럴 때는 센서 값을 확인하면서 점점 수정하는 것을 추천합니다!
+ 파이톤 미리보기! 파이톤에서도 아르티노 라이트를 제어할 수 있습니다!
파이톤은 간결하고 생산성이 높은 프로그래밍 언어입니다.프로그래밍 언어 중 간결하고 간단한 사용으로 많은 사용자가 이용하는 언어입니다.
우리는 아주 간단한 예시를 두 가지 해 보겠습니다.
- 스스로 시간과 속도를 계산하여 아르티노라이트가 벽에 부딪히지 않도록 최대한 가까이 멈추는 벽과의 거리는 스스로 측정해야 합니다.거리=시간*속도 공식을 이용합니다. RC카의 속도는 스스로 결정합니다.
2. 아르티노 라이트 터널 진입 시 라이트를 켠다!이번 활동은 아르티노라이트 조도 센서를 이용합니다.조도 센서는 빛의 양을 감지합니다.빛이 어두워지면(=터널 진입시) 라이트를 켭니다.
- 참고로 파이썬을 실행할 때 실행시키는 파이썬 파일이 아르티노 라이트 파이썬 라이브러리 파일에 포함되어 있어야 합니다!*
- + RC카에 관심있는 분들을 위해 다른 종류의 RC카를 소개합니다! https://eduino.kr/product/detail.html?product_no=190&cate_no=97&display_group=1 코딩교육 전문쇼핑몰 에듀이노, 아두이노, 보드, 쉴드, 모듈, 키트, 로봇, 드론, 교구, 전자부품 등 판매 eduino.kr [2휠 RC카] https://eduino.kr/product/detail.html?product_no=2113&cate_no=181&display_group=1 코딩교육 전문쇼핑몰 에듀이노, 아두이노, 보드, 쉴드, 모듈, 키트, 로봇, 교구, 전자부품 등어떤 판매 eduino.kr [메이커스]
제조사(왼쪽)/알티노라이트(중)/2휠 RC카(오른쪽) 왼쪽부터 순서대로 제조사/알티노라이트/2휠 RC카 입니다.제가 생각한 3가지 RC카의 장단점을 비교해 드리겠습니다.
메이커스는 20만원대 RC카로 이 3개 RC카 중 유일하게 인공지능 활동을 할 수 있다는 점입니다.하지만 코딩을 할 수 있는 활동은 적다는 것이 단점입니다.
알티노는 20만원대 RC카에서 가장 큰 장점은 이미 자동차가 완성됐기 때문에 활동하기 편하고 엔트리부터 파이톤까지 두 언어를 사용할 수 있다는 것입니다.하지만 단점은 교재활동에 대한 답을 주지 못했다는 것입니다. 그래서 교재를 하다가 막히면 무조건 스스로 해결해야 한다는 단점이 있어요.
2휠 RC카는 3만원대 RC카로 RC카 제작부터 코딩까지 정말 스스로 모든 것을 할 수 있다는 점과 센서 추가가 자유롭다는 게 장점입니다.단점은 스스로 만드는 것이기 때문에 3개의 RC카 중에서는 가장 완성도가 낮다는 점입니다.
이처럼 각각의 RC카는 장단점을 가지고 있습니다.그러므로 자신이 생각하기에 하고 싶은 활동이 무엇인지 판단하고 그에 맞는 RC카를 선택하십시오!
#RC카킷 #인공지능RC카 #자율주행RC카 #코딩키트 #코딩학습 #성인코딩 #코딩로봇 #코딩교구 #인공지능 #인공지능코딩
리뷰가 궁금하신 코딩 교구가 있으시면 댓글로 알려주세요!확인 후 요청하신 교구에 대해 자세히 포스팅합니다.