로봇 손 피아노 시뮬레이션
로봇 손이 손가락을 하나씩 굽혀 진짜 피아노처럼 경첩·스프링이 달린 건반을 누릅니다. 곡을 고르면 어느 손가락으로 칠지 스스로 정하고, 건반이 6 mm 넘게 내려가야 소리가 납니다. 건반을 직접 누르거나 코드로 멜로디를 만들어 보세요.
끌면 시점이 돌고, 휠로 확대합니다. 흰 건반 간격 23.5 mm, 2옥타브(C4 ~ C6)입니다.
안에서 일어나는 일
- 물리: MuJoCo 물리 엔진이 브라우저에서 1초에 500번 계산합니다. 손가락이 건반에 닿고 미는 힘, 건반의 경첩·스프링(누르는 힘 약 0.5 N)을 모두 계산합니다.
- 손가락 고르기: 다음 음을 칠 때 손 위치를 가장 조금 옮기는 손가락을 고릅니다. 엄지는 흰 건반만 칩니다.
- 얼마나 굽힐까: 손가락마다 "모터를 이만큼 돌리면 손끝이 여기로 간다"는 표를 미리 재 두고, 건반 윗면보다 12 mm 아래를 목표로 굽힙니다.
- 순서: 앞 손가락을 떼자마자 다음 건반 위로 옮기고, 음 시작 0.05초 전에 누르고, 음이 끝나기 0.2초 전에 뗍니다.
- 소리: 건반이 6 mm 넘게 내려가면 그 음을 냅니다. 옆 건반을 함께 누르면 틀린 소리도 그대로 납니다.
이 시뮬레이션을 쓰는 차시
| 차시 | 시뮬레이터 활동 |
|---|---|
| 1 | 연주: 곡과 빠르기를 바꿔 보며 로봇 손이 어떻게 건반을 누르는지 관찰, 너무 빠르면 왜 틀리는지 |
| 2 | 직접 치기: 음 이름·계이름과 건반 위치, 반음(검은 건반) |
| 3 | 코드: 배열과 반복문으로 동요 연주, 박자와 쉼표 |
| 4 | 손가락 정하기: 손가락 번호를 바꿔 보고 이동 거리·실수 비교 (최적화 문제) |
| 5 | 내 멜로디 만들기: 5음 음계와 무작위로 즉흥 연주, 규칙(조건문) 더하기 |
| 6 | 심화: 강화학습으로 피아노 치기(RoboPianist)를 소개하고 실물 손으로 한 음씩 눌러 보기 |
차시 활동은 엔스크린 제안입니다. 실물 수업 전 연습과 장비가 모자랄 때 대신 쓰는 용도입니다.
Aero Hand Open 모델(모양·관절·힘줄·스프링)은 MuJoCo Menagerie tetheria_aero_hand_open이며 Apache-2.0입니다. 화면용 메시는 원본을 가볍게 줄였습니다. 시뮬레이터 안의 손 위치(레일)·손가락 계획·피아노 모델·소리는 엔스크린이 작성했고, 피아노 치기 과제는 Google DeepMind의 RoboPianist(Apache-2.0)를 참고했습니다.
uHandPi는 개념 모델입니다. HiWonder가 시뮬레이션 모델을 공개하지 않아 엔스크린이 기본 도형으로 만든 것으로, 실제 크기·움직임과 다를 수 있습니다. 제조사 CAD를 받으면 바꿉니다.
곡은 저작권이 끝난 민요·클래식 선율(반짝반짝 작은별, 나비야(독일 민요), 환희의 송가, 엘리제를 위하여)을 엔스크린이 입력했습니다. MuJoCo(Apache-2.0)와 three.js(MIT)를 우리 서버에서 불러옵니다. TetherIA·Aero Hand와 HiWonder·uHand는 각 회사의 상표이며, 이 시뮬레이터는 두 회사와 관계가 없습니다.