안녕하세요 에디입니다~! 이번에는 특별한 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의 값이 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카 #코딩키트 #코딩학습 #성인코딩 #코딩로봇 #코딩교구 #인공지능 #인공지능코딩
사용후기가 궁금하신 코딩 교구가 있으시면 댓글로 알려주세요! 확인 후 요청하신 교구에 대해 자세히 올려드리겠습니다.