EV3 로봇 시뮬레이터
블록이나 파이썬으로 EV3 주행 로봇을 프로그램하고 ▶ 실행을 누르세요. 물리 엔진이 바퀴·센서를 실제처럼 계산합니다. 코드는 LEGO Education 공식 EV3 MicroPython과 같아서 "main.py 내려받기"로 실물 EV3에서도 그대로 돌릴 수 있습니다.
시뮬레이터 확장 기능 실물 EV3에는 카메라가 없어서, 실제로 하려면 HuskyLens 같은 AI 카메라를 따로 달아야 합니다.
① 라벨마다 "사진 10장 모으기"를 누르면 로봇이 사진 스튜디오(표지판 길 경기장 옆)로 가서 표지판을 여러 거리·각도로 찍습니다. ② 모은 사진과 가장 비슷한 사진 5장의 투표(k-최근접 이웃)로 새 사진을 판단합니다. ③ 파이썬 camera.classify() 또는 "AI 카메라" 블록으로 씁니다.
from ai_camera import AICamera · camera = AICamera() · label, confidence = camera.classify() → 'left'·'right'·'stop'·'none', 확신도 0~100 · camera.label() · camera.confidence()
EV3 주행 로봇 — LEGO Education Robot Educator집게 로봇 — Robot Educator + 미디엄 모터 우리
LEGO Education EV3 교육용 세트(45544) 공식 조립 설명서(Robot Educator + 초음파·컬러(아래)·자이로 부착)대로 부품을 하나씩 핀 구멍에 맞춰 조립했습니다. 같은 부품으로 실물을 똑같이 만들 수 있습니다.
주행 로봇 앞쪽 프레임에 미디엄 모터를 핀 2개로 달고, 모터 축에 'ㄷ'자 우리(13·9구멍 빔 + 빨간 가로대)를 걸었습니다(교육용 Medium Motor 부착 설명서 방식). 우리를 내리면 상자가 터치 센서와 가로대 사이에 갇혀 함께 움직입니다. 터치 센서는 교육용 설명서처럼 앞 가운데 아래(초음파 센서 자리)에 달아서, 이 로봇에는 초음파 센서가 없습니다.
| 포트 A | 미디엄 모터 → 집게 우리 gripper (모터 축 = 우리 축, + 방향 = 내림·닫힘) · 열기(60° 올림) gripper.run_target(300, -60) · 닫기 gripper.run_until_stalled(300, then=Stop.HOLD) |
|---|---|
| 포트 S1 | 터치 센서 (앞 가운데 아래, 버튼 높이 2 cm · 바퀴 축보다 56 mm 앞) → touch.pressed() |
| 포트 B · C | 라지 모터 (왼쪽·오른쪽 바퀴) → left_motor, right_motor, robot (DriveBase) |
| 포트 S2 | 자이로 센서 → gyro (오른쪽으로 돌면 +) |
| 포트 S3 | 컬러 센서 (아래를 봄) → color_sensor · 오른쪽 범퍼 끝 (가운데에서 72 mm 오른쪽, 바퀴 축보다 43 mm 앞) |
| 포트 S4 | 초음파 센서 (앞을 봄) → ultrasonic · 앞쪽 아래 가운데 |
| AI 카메라 | 브릭 위 카메라 모듈 (시뮬레이터 확장 · 모양은 개념도) → camera = AICamera() |
| 바퀴 | 지름 56 mm · 바퀴 사이 148 mm · 뒤쪽 볼 캐스터 |
| 무게 | 약 0.6 kg (브릭 280 g, 라지 모터 76 g × 2 …) |
모양은 LDraw 부품 라이브러리로 조립했고, 물리는 MuJoCo로 계산합니다. 모터는 EV3 라지 모터 특성(최고 약 1,000 °/s, 정지 토크 0.4 N·m)을 따릅니다.
쓸 수 있는 명령 (Pybricks 2.x와 같음)
robot.straight(mm) · robot.turn(도) · robot.drive(mm/s, 도/s) · robot.stop() · robot.distance() · robot.settings(…)
left_motor.run_angle(속도, 각도) · run_time · run_target · run · stop / brake / hold · angle()
color_sensor.color() · reflection() · rgb() · ultrasonic.distance() · gyro.angle()
wait(ms) · StopWatch() · ev3.screen.print() · ev3.speaker.beep() · ev3.speaker.say()
로봇 모양은 LDraw.org 부품 라이브러리(CC BY 2.0)로 조립했습니다. 블록 편집기 Blockly(Apache-2.0), 브라우저 파이썬 Skulpt(MIT), 물리 엔진 MuJoCo(Apache-2.0), three.js(MIT)를 우리 서버에서 불러옵니다. 파이썬 명령 이름은 Pybricks(EV3 MicroPython)와 같게 맞췄으며, 시뮬레이터 코드는 엔스크린이 작성했습니다. LEGO·MINDSTORMS는 LEGO Group의 상표이며, 이 시뮬레이터는 LEGO Group과 관계가 없습니다.