https://link.coupang.com/a/cSfXLF
[테일봇] 기본 패키지 - 코딩완구/로봇 | 쿠팡
쿠팡에서 [테일봇] 기본 패키지 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 코딩완구/로봇 제품도 바로 쿠팡에서 확인할 수 있습니다.
www.coupang.com

AI 활용
오늘은 VinciBot(빈치봇)을 파이썬으로 라인 트레이서(Line Tracer) 로 만드는 과정을 깔끔하게 정리해볼게요.
강의에서 다룬 흐름을 그대로 따라가면서, 실습 팁과 예시 코드까지 담았습니다.

오늘의 목표
- VinciBot 하단 라인 팔로잉 센서 5개 이해하기
- 1, 2, 4, 5번: 그레이스케일 센서
- 3번(가운데): 컬러 센서
- 센서가 감지하는 값: 반사광(Reflected Light)
- 1번과 5번 센서만으로도 라인 트레이서 구현하기
- 무한반복 + 조건문으로 4가지 상황 처리하기
- 모터를 PWM 제어로 부드럽게 조향하기

라인 트레이싱의 핵심 4가지 상황
라인(검은색)과 바탕(흰색)의 반사광 차이를 이용합니다.
일반적으로 검은색은 값이 낮고, 흰색은 값이 높아요. (절대값은 환경마다 다름)

- On the line
- 두 센서(1, 5)가 모두 라인 위 → 직진
- Off the line
- 두 센서 모두 라인에서 벗어남(흰색) → 후진(혹은 탐색 동작)
- 왼쪽으로 치우침
- 1번(왼쪽) 쪽이 더 흰색에 가까움 → 오른쪽으로 조향
- 오른쪽으로 치우침
- 5번(오른쪽) 쪽이 더 흰색에 가까움 → 왼쪽으로 조향

팁: 강의에서는 예시로 “라인일 때 < 40, 바탕일 때 > 80”처럼 기준을 뒀지만,
바닥 재질/조명/테이프 색에 따라 수치가 바뀝니다.
반드시 먼저 값을 찍어보고 기준(threshold)을 잡으세요.
캘리브레이션(기준값 잡기) 절차
- 로봇을 흰색 바탕 위에 두고 1번, 5번 센서의 반사광 값을 출력해 기록.
- 검은 라인 위에 두고 다시 기록.
- 두 값 사이의 중간값을 기준(threshold) 으로 삼으면 시작이 편해요.
- 예: 흰색=85, 검정=25라면 임계값을 55~65 사이로 잡고 테스트.


제어 로직 설계 포인트
- 전역 변수: 함수 밖에서 센서값 변수를 선언하면, 이벤트 함수에서 global로 가져다 쓸 수 있어요.
- 무한 반복: 센서값은 계속 변하므로 while True: 안에서 지속 체크.
- 조건문 4개: 상황별 if-elif-elif-elif로 분기.
- PWM 제어: 거리/시간이 아닌 속도 자체를 계속 인가해서 라인 추종.
예시 코드
# -*- coding: UTF-8 -*-
# generated by Matatalab
left_light = 0
right_light = 0
@event.button_triangle_pressed
def on_event_triangle1():
global left_light, right_light
while True:
if (((sensor.get_reflection_light(5)) < 65) and (sensor.get_reflection_light(1)) < 65)):
motion.motor_pwm('L', -40)
motion.motor_pwm('R', 40)
else:
if (((sensor.get_reflection_light(5)) > 65) and ((sensor.get_reflection_light(1)) > 65)):
motion.motor_pwm('L', 40)
motion.motor_pwm('R', -40)
else:
if ((sensor.get_reflection_light(1)) < (sensor.get_reflection_light(5))):
motion.motor_pwm('L', -25)
motion.motor_pwm('R', 5)
else:
if ((sensor.get_reflection_light(1)) > (sensor.get_reflection_light(5))):
motion.motor_pwm('L', -5)
motion.motor_pwm('R', 25)
왜 왼쪽이 마이너스고 오른쪽이 플러스일까?
VinciBot의 구동 모터 방향이 서로 반대라, 같은 ‘앞으로’ 회전을 만들려면 부호가 반대여야 합니다.
그래서 왼쪽 -40 / 오른쪽 40처럼 쓰면 직진이 되는 거죠.
자주 겪는 문제 & 해결 팁
- 라인에서 자주 튀어나가요
- → 속도가 너무 빠릅니다. PWM 절대값(예: 40)을 낮추고 다시 시도하세요.
- → 임계값 재조정. 주변 조명 바뀌면 값도 변해요.
- 라인 위인데도 ‘오프라인’으로 인식해요
- → 센서 간격/라인 두께 이슈일 수 있어요. 라인을 더 두껍게 만들거나 센서 높이를 점검.
- 커브에서 덜덜거려요
- → 조향 차이를 조금 더 크게/미세하게 조정해보세요.
- 예: 왼 -28 / 오 8 처럼 비율 바꿔가며 테스트.
오늘의 정리
- 1·5번 그레이스케일 센서만으로도 라인 트레이서를 만들 수 있다.
- 핵심은 반사광 기준값 잡기(캘리브레이션) 와 4가지 경우 분기.
- PWM 제어로 속도를 계속 인가하면서 상황에 따라 속도 차로 방향을 만든다.
- 환경이 바뀌면 임계값, 속도, 비율을 재조정하자.
#VinciBot #빈치봇 #Python #파이썬 #라인트레이서 #라인팔로워 #라인센서 #반사광 #그레이스케일 #컬러센서 #PWM #모터제어 #로봇코딩 #교육용로봇 #STEM #블록코딩 #데코레이터 #전역변수 #조건문 #무한반복 #LineTracer #LineFollower
'파이썬' 카테고리의 다른 글
ai파일 pdf변환 후 하나로 합치기(파이썬 활용) (0) | 2025.09.11 |
---|---|
pdf 아웃라인 파이썬으로 무료 체크하는 방법 (0) | 2025.09.10 |
파이썬 문법 쉽게 이해하기: 클로저(Closure)와 데코레이터(Decorator) (3) | 2025.08.26 |
[파이썬 문법] return(반환)과 print(출력)의 차이점 (2) | 2025.06.24 |
파이썬 클래스와 객체, 진짜 쉽게 이해하기! (0) | 2025.04.29 |