자율주행 로봇 만들기

이번 포스팅에서는 ‘자율주행 로봇 만들기’에 대해 알아보겠습니다.

자율주행 로봇 만들기

컴퓨팅 사고력 기반의 문제 해결 프로세스

2015 개정 교육과정에서 소프트웨어 교육의 핵심은 컴퓨팅 사고력 함양입니다.

문제해결과정 컴퓨팅 사고력 기반 문제해결 문제이해 및 정의문제해결방법 설계문제해결방법 구현결과 분석 및 평가추상화 자료수집 및 분석자료 표현문제 이해 및 분석, 핵심요소 추출, 문제분해, 모델링, 알고리즘 자동화 프로그래밍 및 결과분석

일반적인 문제 해결 과정은 ① 문제를 이해하고 해결하는 문제를 정의하고 ②번처럼 해결하는지를 설계하게 됩니다.

③ 해결하는 방법대로 문제를 해결하거나 새로운 것을 만들어 ④번. 잘 해결됐는지 결과를 확인하고 더 좋은 방법이 있는지를 평가하게 됩니다.

마찬가지로, 컴퓨팅 사고력 기준 문제 해결은 크게 추상화와 자동화로 나뉘고 추상화는 문제를 이해하고 분석하고 필요한 요소는 무엇이든 불필요한 요소는 뭔가를 찾아 큰 문제를 작게 나누고 해결 방법을 모델링 하는, 결정된 해결 방법으로 알고리즘을 설계합니다.

자동화 과정에서는 설계한 알고리즘대로 프로그래밍해서 그 결과를 확인하여 에러가 없거나 더 좋은 방법은 없는지 평가하는 과정을 거치게 됩니다.

그러나 이들의 분류는 고정된 순서를 의미하는 것이 아니라 문제를 해결하는 상황에 의해서 유연하게 변할 가능성이 있습니다.

특히”자료 수집 및 분석”,”자료 표현”과정은 문제 해결의 전 과정에서 유연하게 적용할 수 있습니다.

자율주행차 만들기 프로젝트 수업

‘자율주행차 만들기’ 프로젝트 수업을 위해 2015 개정 중학교 ‘정보’와 교육과정을 살펴봅시다.

먼저 달성 기준을 분석해야 합니다.

[9정01-01] 정보기술의 발달과 소프트웨어가 개인의 생활과 사회에 끼친 영향과 가치를 분석하고, 그에 따른 직업이 특성을 이해하여 자신의 적성에 맞는 진로를 탐색한다.

[9정 03-01] 실생활 문제 상황에서 문제의 현황, 목표 상태를 이해하고 목표 상태에 도달하기 위해 수행해야 할 작업을 분석한다.

[9정 04-05] 실생활 문제 해결을 위한 소프트웨어를 협력하여 설계, 개발, 비교 분석하는 [9정 05-02] 센서를 이용한 자료 처리 및 동작 제어 프로그램을 구현한다.

문제의 이해와 분석

햄스터 로봇으로 어떤 기능을 가진 자율주행차를 만들 수 있는지 피지컬 컴퓨팅 교구에서 적용할 수 있는 자율주행차 기술을 탐색합니다.

먼저 레별 1, 2단계 자율주행 기술 중 햄스터 로봇으로 구현할 수 있는 것은 무엇인지 살펴보겠습니다.

단계 적용 기술 의미 센서 및 구동 장치 수준 1크루즈 컨트롤(CC)가 정한 속도로 주행하는 기술 차선 이탈 경보 시스템(LDWS)차선 이탈 때 경보를 내는 기술 자동 긴급 제동(AEB)전방의 차량과 사람 등의 충돌이 불가피하다고 판단되면 제동을 주는 기술 수준 2차로 유지 지원 시스템(LKAS)차선 이탈 때 바퀴를 움직이고 차선 내에 차를 되돌리는 기술 바닥 센서 주차주 카이 보조 시스템(SPAS)스스로 주차하는 위치를 탐색하고 핸들을 조작하면서 운전자는 가속 페달만 조절하면서 주차하는 기술 적응형 크루즈 컨트롤(AC)차선을 이동하고 차선 내에 이동하고 차선 안으로 이동하는

햄스터 로봇 센서 중 앞 장애물을 인식할 수 있는 근접 센서로 앞차와의 거리를 인식해 속도를 조절하는 적응형 크루즈 컨트롤(ACC) 기술과 바닥 색상을 인식할 수 있는 바닥 센서로 차선 유지 보조 시스템(LKAS)을 시뮬레이션할 수 있습니다.

이때 시뮬레이션을 위해 그림과 같이 흰색 위에 검은색으로 차선 대신 사용하도록 하겠습니다.

 

https://m.oh-car.co.kr/data/goods/23/08/35/1000031566/1000031566_add2_055.JPG자율 주행 차선문제 분해햄스터 로봇을 이용하고 자동 운전 자동차 기술을 시뮬레이션하기 위해서 작은 문제로 나누는 과정이에요.문제 이해와 분석 단계에서 적응형 크루즈 컨트롤(ACC)차선 유지 지원 시스템(LKAS)의 실장을 결정했다.

그럼 2개의 기능이 무엇이고 어떻게 햄스터 로봇에 적용할지를 생각하고 보겠습니다.

① 적응형 크루즈 컨트롤(ACC)목표 속도 이하에서 앞차와의 거리에 따라서 차의 속도를 제어하는 기술이며, 앞차가 그쳤다가 다시 출발하자 운전자 개입 없이도 다시 출발하게 됩니다.

적응형 크루즈 컨트롤 기술은 자동 긴급 제동 기술로 모터의 속도를 제어합니다.

② 차로 유지 지원 시스템(LKAS자동차가 옆 차로에 침투하지 못하도록 핸들을 조절하고 현재 차선을 유지하는 기술로, 햄스터 로봇으로 바닥 센서에 의해서 옆 차선을 인지하면 로봇의 방향을 조절하게 됩니다.

차선 유지 지원 시스템은 앞 차와의 간격의 여유가 있어 주행 중에 사용되는 기술로, 적응형 크루 주 제어 기술에서 차가 주행 중에만 사용됩니다.

코어 요소 추출햄스트 로봇으로 자율 주행 차량을 시뮬레이션하기 위해 분해했다 두 가지 작은 문제를 실제 소프트웨어에서 실현하기 위해 필요한 요소를 추출하는 단계입니다.

구현기술 핵심요소 설명 적응형 크루즈컨트롤(ACC) 거리근접센서의 값속도근접센서의 거리에 따라 모터의 속도를 가감(기본속도:50) 차선유지지원시스템(LKAS) 바닥명암 왼쪽과 오른쪽 바닥센서의 값속도 좌상센서나 오른쪽 바닥센서가 차선경계를 만나면 반대방향으로 로봇을 움직이게 속도를 제어 LED 주행 중일 때는 녹색, 바닥이 차선에 닿으면 청색을 붙인다.

적응형 크루즈 콘트롤의 경우 근접 센서의 값, 즉 거리에 따라 햄스터 로봇의 속도를 조절하기 위해 모터의 속도가 필요합니다.

차선유지지원시스템은 바닥 명암에 따라 햄스터 로봇이 차선을 넘지 않도록 좌저 센서가 차선을 인식하면 로봇 차체를 반대편으로 구부리고, 우저 센서가 차선을 인식하면 차체를 왼쪽으로 꺾어 차선을 유지하도록 합니다.

이때 바닥이 차선에 닿으면 파란색을 켜도록 하고 나머지 주행 중에는 초록색을 켜도록 합니다.

알고리즘 설계적응형 크루즈 컨트롤, 차선 유지 보조 시스템을 햄스터 로봇에 적용하려면 햄스터 로봇 근접 센서, 바닥 센서 값을 인식해 모터와 LED에 명령을 내려야 합니다.

그러기 위해서는 먼저 센서 값을 측정해보고 각 상황에 따라 모터와 LED 값을 낮추는 알고리즘이 필요합니다.

근접센서의 경우 위 <표>와 같이 장애물과의 거리가 10㎝ 이상이면 근접센서의 값이 30 이하이고, 5~10㎝ 범위이면 60부터 30까지의 분포를 나타냅니다.

또한 5㎝ 이하일 때는 70~60㎝까지로 오히려 로봇과 밀착하거나 0.5㎝ 이하의 거리에서는 인식하지 못하는 경우도 발생합니다.

따라서 5센티미터 이하일 때는 차를 세우고 LED로 긴급사태를 알리기 위해 빨간색으로 설정합니다.

장애물과의 거리 근접 센서 값 10cm 이상 30 미만 5cm ~ 10cm 60 ~ 300.5cm ~ 5cm 70 ~ 600.5cm 미만 50~ 0 (인식할 수 없음)장애물과의 거리 근접 센서 값 10cm 이상 30 미만 5cm ~ 10cm 60 ~ 300.5cm ~ 5cm 70 ~ 600.5cm 미만 50~ 0 (인식할 수 없음)바닥 센서는 흰색일 때는 80 이상, 검은색일 때는 20 이하의 값이 입력되지만 중간일 때는 20~80까지 변화가 큰 편입니다.

따라서 흑, 즉 20 미만이 인식되면 차를 반대편으로 이동시킵니다.

예를 들어. 왼쪽 바닥이 검은색이라면 오른쪽 바퀴의 모터를 0으로 하면 차체가 왼쪽으로 움직이면서 차선을 유지할 수 있습니다.

바닥 명암 바닥 센서의 값 흰색 80 이상 흰색과 검은색 중간 20~ 80 검정 20 미만센서를 모두 테스트해보니 자동긴급제동, 적응형 크루즈컨트롤, 차선유지보조시스템을 거리와 바닥명암값에 따라 분류해보고 이를 모터와 LED값과 연동해 자율주행차 알고리즘을 만들어봅니다.

센서를 모두 테스트해보니 자동긴급제동, 적응형 크루즈컨트롤, 차선유지보조시스템을 거리와 바닥명암값에 따라 분류해보고 이를 모터와 LED값과 연동해 자율주행차 알고리즘을 만들어봅니다.

적응형 크루즈 컨트롤 장애물과의 거리 근접 센서 값 모터 속도 10cm 이상 30 미만 505cm~10cm 60~30 250.5cm~5cm 70~6000.5cm 미만 50~00먼저 차량 속도를 담당하는 적응형 크루즈 컨트롤은 거리에 따라 속도를 바꿉니다.

① 10cm 이상일 때(즉, 왼쪽 근접 센서가 30 미만이고 오른쪽 근접 센서도 30미민이면)②속도를 50으로 정합니다.

③ 앞차와의 거리가 5㎝ 미만이면(즉, 왼쪽 근접센서가 60 초과이거나 오른쪽 근접센서도 60 초과이면)④속도를 0으로 멈추도록 합니다.

⑤거리가 5~10센티미터라면(①,③이외의 상황이라면)⑥속도를 25로 정합니다.

적응형 크루즈 컨트롤 알고리즘 ① 좌측 근접 센서 <30 그리고 우측 근접 센서 <30이라면 ② 속도 ← 50 ③ 좌측 근접 센서> 60 또는 우측 근접 센서> 60이라면 ④ 속도 ← 0 ⑤ ① 이 외라면 ⑥ 속도← 25적응형 크루즈 컨트롤 알고리즘 ① 좌측 근접 센서 <30 그리고 우측 근접 센서 <30이라면 ② 속도 ← 50 ③ 좌측 근접 센서> 60 또는 우측 근접 센서> 60이라면 ④ 속도 ← 0 ⑤ ① 이 외라면 ⑥ 속도← 25적응형 크루즈 컨트롤 알고리즘 ① 좌측 근접 센서 <30 그리고 우측 근접 센서 <30이라면 ② 속도 ← 50 ③ 좌측 근접 센서> 60 또는 우측 근접 센서> 60이라면 ④ 속도 ← 0 ⑤ ① 이 외라면 ⑥ 속도← 25차선 유지 보조 시스템 바닥 센서 값 모터 값(왼쪽, 오른쪽) LED 값 왼쪽 검정 20 미만 속도, 0 왼쪽 파랑 오른쪽 검정 20 미만 0, 속도 우청양 흰색 기타속도 녹색관계없음 0,0 관계없음그리고 차량 속도는 흑색 차선을 넘지 않도록 유지하는 차선 유지 지원 시스템은 적응형 크루즈 컨트롤에서 지정된 속도로 차의 움직임을 제어하게 됩니다.

① 왼쪽 바닥 센서가 20미만으로 검은 색을 인지하면 ②(왼쪽과 오른쪽의 모터)를 각각(속도, 0)으로 제어하면서 차가 오른쪽으로 휘게 하면서 ③ 왼쪽 LED를 청색으로 구현합니다.

④ 오른쪽 바닥 센서가 20이상의 경우 ⑤(왼쪽과 오른쪽 모터)를 각각 0, 속도)으로 제어하면서 차가 왼쪽으로 휘게 하면서 ⑥ 오른쪽 LED를 청색으로 구현합니다.

⑦ 그 이외는 ⑧ 직진하도록 하고 주행 중이라, 녹색 LED를 켭니다.

차선유지지원시스템 알고리즘 ①좌측바닥센서 <20 뒷면 ②좌측모터←속도,우측모터←0③좌측LED←파랑④우측바닥센서 <20 뒷면 ⑤좌측모터←0,우측모터←속도 ⑥우측LED←파랑⑦①과 ④이외라면 ⑧좌모터←속도,오른쪽모터←속도 ¥양쪽LED←녹색프로그래밍설계한 알고리즘을 블록형 프로그래밍 언어인 엔트리를 이용하여 프로그램을 구현해 봅니다.

적응형 크루즈 컨트롤 프로그램 소스앞차와의 거리가 10센티미터 이상일 때는 속도를 50으로 설정하고, 5센티미터 미만일 때는 속도를 0으로 설정하고, 그 외에는 (즉, 5~10센티미터일 때) 속도를 25로 설정합니다.

차선유지지원시스템프로그램소스차선을 유지하기 위해 좌우 바닥 센서로 차선을 감지합니다.

이때 왼쪽 센서가 검은색을 인식하면 햄스터 로봇을 오른쪽 방향으로 이동시키고 왼쪽 LED는 파란색을 붙이고 오른쪽 바닥 센서가 검은색을 인식하면 로봇을 왼쪽 다리 방향으로 이동하며 오른쪽 LED를 파란색으로 변경시킵니다.

그 외(직진, 둘 다 검정이나 본 연수에서는 직진할 때만 고려한다.

)에는 직진하고 녹색 LED를 켭니다.

테스트 및 검증작성한 프로그램 실행해보겠습니다.

실제로 여러 상황을 테스트하면서 오류가 있는지, 더 개선할 부분이 있는지 살펴봐야 합니다.

그리고 좀 더 정밀한 시뮬레이션을 하려면 앞차와의 거리에 따라 속도를 세분화하기 위해 수식을 적용하거나 센서 데이터를 수집하면서 향후를 예상하는 머신러닝 등도 적용할 수 있습니다.

지금까지 ‘자율주행 로봇 만들기’에 대해 알아보았는데요.감사합니다!
※ 이 글은 「인공지능 시대, 모든 교사를 위한 SW교육」(한국교육학술정보원, 2020년 10월 27일) 강의 자료를 바탕으로 작성한 것입니다.