본문으로 이동

시뮬레이터

Blockly 기반 무료 3D 로봇 팔 시뮬레이터

브라우저 디지털 트윈에서 로봇 프로그래밍을 배우세요. 왼쪽에서 Blockly 프로그램을 만들고 가운데에서 5관절 로봇 팔을 시뮬레이션하며 오른쪽에서 충돌 검사와 점수를 확인합니다.

로봇 팔

직렬로 연결된 다섯 관절

서보 모드는 학습자가 각도를 계산해 한 번에 한 관절을 절대 각도로 구동합니다. 인증된 Cutter Grid 연습은 예외로, 고정 세계 좌표 이동을 실행 전에 결정론적 역기구학으로 컴파일합니다.

관절 체인 순서, 회전축, 각도 범위, 초기 각도 및 속도
JointAxisRangeInitialSpeed
베이스 요baseYawX30° … 150°90°60°/s
어깨 롤(시뮬레이션 전용)shoulderRoll-45° … 45°0°45°/s
어깨shoulderY30° … 150°90°45°/s
팔꿈치elbowZ17.5° … 162.5°90°60°/s
손목wristB0° … 180°90°75°/s

X, Y, Z, B축과 대기 중인 커터축 E는 모두 펌웨어 Home 값인 90°에서 시작합니다. Shoulder Roll은 시뮬레이션에만 존재하며 0°에서 시작합니다. 기하 오프셋은 이 하드웨어 상태를 하나의 안전한 렌더링 자세에 대응시키며 숨겨진 두 번째 시작 자세는 없습니다.

블록

세 가지 서보 블록과 인증된 Cutter Grid 이동

서보 모드는 각도, 대기, 반복 블록을 사용합니다. Cutter Grid는 6개 고정 세계 방향과 정수 거리를 추가합니다. Blockly는 검증된 Program IR을 출력하고 플래너가 재실행 전에 결정론적 관절 궤적을 고정합니다.

set <joint> to <angle>°

관절 하나를 절대 각도로 움직입니다. 사용 가능한 관절은 과제가 정하며 범위를 벗어난 각도는 실행 전에 거부됩니다.

wait <ms>

현재 자세를 유지하며 0~5000밀리초를 입력할 수 있습니다.

repeat <n> times

안의 블록을 1~20회 실행합니다. 반복문은 n개가 아닌 블록 하나로 계산되어 효율 점수를 크게 높입니다.

머리 안전거리

충돌 대신 위험한 동작 거부

머리는 복셀이 아니며 자를 수 없습니다. 명령을 확정하기 전에 도구 경로를 머리 형상과 연속 검사합니다. 기하 제약이므로 빠른 움직임도 허용 오차를 뚫고 지나갈 수 없습니다.

접촉이 감지되면 실행은 마지막 안전 자세에서 멈춥니다. 원인이 된 블록을 강조하고 시뮬레이션은 복구 가능한 오류 상태로 전환됩니다. 렌더러가 보정을 숨기지 않으므로 팔이 멈추면 인터페이스에 원인 블록이 표시됩니다.

로그 내용

12:04:31 실행 시작 · 과제 neat-short-haircut

12:04:31 shoulderRoll → 15°

12:04:32 shoulder → 72°

12:04:33 elbow → 10° 거부 · 머리 여유 공간 부족 · 마지막 안전 자세 유지

12:04:33 상태 → 오류(복구 가능) · 블록 3

채점

점수 구성

세 하위 점수를 각각 0~100으로 제한한 뒤 고정 가중치로 합산합니다. 화면에는 소수점 한 자리까지 표시하지만 내부 계산은 전체 정밀도를 유지합니다.

완성도

×0.60

|Target ∩ Result| / |Target ∪ Result| × 100

목표 머리 모양과의 복셀 IoU입니다. 너무 많이 자르거나 덜 자를 때의 감점은 같습니다.

효율

×0.25

min(100, ReferenceProgramCost / ProgramCost × 100)

프로그램 비용은 원본 블록 수에 실행 명령당 0.25를 더한 값입니다. 같은 동작을 하나씩 쓰는 것보다 반복문이 더 저렴합니다.

시간

×0.15

min(100, ReferenceTimeMs / EstimatedDurationMs × 100)

시간은 관절 이동량과 속도로 추정하며 브라우저에서 재지 않습니다. 노트북이 느려도 감점되지 않습니다.

최종 점수

0.60 × Completion + 0.25 × Efficiency + 0.15 × Time

제공된 가중치의 합이 1이 아니면 시뮬레이터는 몰래 정규화하지 않고 명확한 오류를 표시합니다.

보정 기준: Neat Short Haircut

Reference blocks5
Reference program cost6.25
Reference time5645 ms

시작 프로그램은 완료 점수로 최소 80점을 받지만 일부러 개선할 여지를 남겨 둡니다. 같은 점수를 받는 것이 최고점은 아닙니다.

제어

프로그램 실행

실행
도전 과제의 초기 상태에서 실행합니다.
일시정지 / 계속
자세를 유지한 채 시간을 멈추고 다시 시작합니다.
한 단계 실행
대기 또는 일시정지 상태에서 원자 명령 하나만 완료합니다.
중지
점수를 기록하지 않고 실행을 끝냅니다. 패널에는 임시 완성도만 표시됩니다.
초기화
시뮬레이션을 초기 상태로 되돌리고 프로그램은 유지합니다.
테스트
같은 엔진으로 화면 없이 평가해 몇 밀리초 안에 동일한 결과를 냅니다.

현재 상태

아직 구현하지 않은 기능

수업 중에 발견하는 것보다 지금 제한 사항을 분명히 밝히는 편이 낫습니다.

  • 계정 및 작업 공간 저장
  • 인증된 Cutter Grid 플래너 이외의 범용 런타임 역기구학
  • 가위 구동 또는 물리 엔진
  • 사실적인 머리카락(시뮬레이터는 복셀 사용)
  • 로봇 자체 충돌
  • 전용 모바일 버전
  • 앱 내 MQTT 전송(명세 완료, 미연결)
  • 로그인 및 검증된 플레이어 신원

질문

자주 묻는 질문

로봇을 구입해야 하나요?
필요하지 않습니다. 제품은 브라우저에서 실행되는 시뮬레이터입니다. 실물 로봇과 공개 펌웨어도 있지만 수업에는 필요하지 않습니다.
어떤 기기에서 실행되나요?
데스크톱 Chrome 또는 Edge에서 1280×720 이상으로 사용하세요. 3D 작업 공간에는 키보드와 포인팅 장치가 필요하며 전용 모바일 버전은 없습니다.
학생이 점수를 조작할 수 있나요?
대전에서는 서버가 프로그램을 재생하고 서버 점수를 공식 결과로 사용합니다. 브라우저 보고값은 신뢰하지 않으며 실행 시간도 실측하지 않고 관절 이동량으로 계산하므로 기기 성능이 점수에 영향을 주지 않습니다.
로봇이 머리에 부딪힐 수 있나요?
없습니다. 머리 안전거리는 허용 오차가 있는 물리 시뮬레이션이 아니라 연속 스윕 기하 검사로 보장합니다. 접촉하면 마지막 안전 자세에서 멈추고 복구 가능한 오류 상태가 됩니다.
계정이 필요한가요?
개인 연습에는 계정이 필요하지 않습니다. 계정과 작업 공간 저장은 아직 구현되지 않았으며 아래에 남은 기능을 표시합니다.
완성된 프로젝트인가요?
공개 웹 클라이언트와 Rust API가 배포되었습니다. 서보 루프, Cutter Grid 연습·수업, 솔로와 대전 모드는 플레이 가능하며 Chrome·Edge 인수를 통과했습니다. 계정, 저장 작업공간, 앱 MQTT, 전용 모바일 지원은 미구현입니다.