안녕하세요 에디입니다~! 이번에는 특별한 PROJECT를 해볼까 합니다자율주행 PROJECT입니다!
다들 에디가 작년에 소개했던 인공지능 RC카 아르티노라이트를 기억하시나요?아르티노라이트에 대해 모르시는 분은 아래 포스팅을 참고하시기 바랍니다.https://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.kr RC카가 직진 – 우회전 – 후진 – 주차 순으로 움직이도록 해 봅니다.
그리고 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초 기다린다 – 소리 “솔”
이렇게 기본적인 함수를 만들었습니다.그럼 기본 함수를 조합하여 회전, 주차 함수를 만듭니다.
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이므로 1 회 후퇴로는 벽에 부딪치기 쉬워지고 2 번이나 후퇴하는 것입니다.
먼저 오른쪽으로 후방을 한 뒤 다시 앞으로 직진하고 두 번째로 오른쪽으로 후방을 하고 주차 공간에 들어갑니다.
센서 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 코딩교육전문쇼핑몰, 에듀이노, 아두이노, 보드, 쉴드, 모듈, 키트, 로봇d, 교구, 전자 부품 등의 판매, r[메이커]
제조사(왼쪽)/알티노라이트(중)/2휠RC카(오른쪽) 왼쪽부터 차례로 제조사/알티노라이트/2휠 RC카 입니다.제가 생각한 3대의 RC카의 장단점을 비교해 보겠습니다.
메이커즈는 20만원 대의 RC카로, 이 3 개의 RC카 중 유일하게 인공 지능이 가능한 점입니다.하지만 코딩을 할 수 있는 활동은 적은 것이 단점입니다.
아르티노는 20만원대 RC카로, 가장 큰 장점은 이미 차가 완성되어 있기 때문에 활동하기 쉽고 엔트리에서 파이썬의 두 언어를 사용할 수 있다는 것입니다.하지만 단점은 교재 활동에 대한 답을 주지 못했다는 점입니다. 그래서 교재를 하다가 막히면 무조건 스스로 해결해야 된다는 단점이 있습니다.
2휠 RC카는 3만원대의 RC카로, RC카의 제작으로부터 코딩까지, 정말로 스스로 모든 것을 할 수 있다는 점과 센서의 추가가 자유로운 것이 메리트입니다」단점은, 스스로 만드는 것이기 때문에, 3대의 RC카 중에서는 가장 완성도가 떨어진다고 하는 점입니다.
이렇게 RC카는 각각 장단점을 가지고 있습니다.그러므로 자신이 생각했을 때에 하고 싶은 활동이 무엇인지 판단해서, 거기에 맞는 RC카를 선택해 주세요!
#RC카킷트 #인공지능RC카 #자율주행RC카 #코딩키트 #코딩학습 #성인코딩 #코딩로봇 #코딩교구 #인공지능 #인공지능코딩
사용 후 감상이 궁금한 코딩 교구가 있으면 댓글로 알려주세요! 확인 후 요청하신 교구에 대해 상세하게 포스팅 해드리겠습니다.