로봇 메이커
로봇 메이커란?
"로봇 메이커"란 CoPlay 플랫폼을 통해 자신이 만든 로봇을 전 세계 사람들과 공유하는 창작자를 의미합니다. 간단한 레이싱 로봇부터 정교한 휴머노이드 로봇까지, 다양한 종류의 로봇을 제작하고 공유할 수 있습니다. CoPlay를 통해 전 세계 사용자들과 자신의 로봇 창작물을 나누고, 아이디어를 교환하며, 로봇 커뮤니티에 참여해보세요. 당신의 창의력을 발휘하여 독특하고 혁신적인 로봇을 만들고, 글로벌 무대에서 선보일 수 있는 기회입니다!
통신 방법
CoPlay가 지원하는 통신으로는 BLE와 WebSocket이 있습니다.
Micro:Bit, Arduino(hm-10) 보드들은 BLE로 데이터를 주고받고, Raspberry Pi 같이 Wifi를 지원하는 보드의 경우에는 WebSocket으로 데이터를 주고받습니다.
(단, Raspberry Pi의 경우 세팅정보 전송을 위해 BLE를 지원해야 합니다. 자세한 내용은 Raspberry Pi 제작가이드 문서를 참고해주세요)
키맵
로봇이 플레이어에게 할당되면 플레이어의 입력에따라 키맵에서 전송 데이터에 해당하는 데이터를 통신 규격의 프로토콜에 따라 전송합니다.
키 입력 | 전송 데이터 | 설명 |
---|---|---|
⬆️ | N | 앞으로 이동 |
⬇️ | S | 뒤로 이동 |
⬅️ | CCW | 반시계 방향 회전 |
➡️ | CW | 시계 방향 회전 |
⬆️ + ⬅️ | NCCW | 앞으로 이동하며 반시계 방향 회전 |
⬆️ + ➡️ | NCW | 앞으로 이동하며 시계 방향 회전 |
⬇️ + ⬅️ | SCW | 뒤로 이동하며 시계 방향 회전 |
⬇️ + ➡️ | SCCW | 뒤로 이동하며 반시계 방향 회전 |
⬅️ + Shift | W | 왼쪽으로 이동(수평) |
➡️ + Shift | E | 오른쪽으로 이동(수평) |
⬆️ + ⬅️ + Shift | NW | 대각선: 북서 이동 |
⬆️ + ➡️ + Shift | NE | 대각선: 북동 이동 |
⬇️ + ⬅️ + Shift | SW | 대각선: 남서 이동 |
⬇️ + ➡️ + Shift | SE | 대각선: 남동 이동 |
Z | Z | 추가 동작을 위한 임시 키 1 |
X | X | 추가 동작을 위한 임시 키 2 |
C | C | 추가 동작을 위한 임시 키 3 |
V | V | 추가 동작을 위한 임시 키 4 |
STOP | 중지 |
프로토콜
BLE
사용자의 입력에 따라 위의 키맵에서 "전송 데이터" 문자가 '$'문자로 감싸져서 Uint8Array(Binary array)로 인코딩하여 전송합니다.
예시
사용자가 키보드 방향키 위 키를 누른 경우 전송 데이터 문자: $N$
[0x24, 0x4E, 0x24]
사용자가 키보드 방향키 위 키와 방향키 왼쪽을 같이 누른 경우 전송 데이터 문자: $NCCW$
[0x24, 0x4E, 0x43, 0x43, 0x57, 0x24]
WebSocket
사용자의 입력에 따라 위의 키맵에서 "전송데이터" 문자가 다음과 같은 Json 형식으로 만들어져 Binary array로 인코딩하여 전송합니다.
{
type: 'control',
direction: '(컨트롤 데이터)', //이곳에 전송 데이터가 들어갑니다.
//이후의 값들은 별도의 설정에서 전송되는 데이터입니다. 무시하셔도 됩니다.
servo: '',
mode: '',
speed: 0
}
예시
- 사용자가 키보드 방향키 위 키를 누른 경우 전송 데이터JavaScript
{ type: 'control', direction: 'N', //이후의 값들은 별도의 설정에서 전송되는 데이터입니다. 무시하셔도 됩니다. servo: '', mode: '', speed: 0 }
- 사용자가 키보드 방향키 위 키와 방향키 왼쪽을 같이 누른 경우 전송 데이터JavaScript
{ type: 'control', direction: 'NCCW', //이후의 값들은 별도의 설정에서 전송되는 데이터입니다. 무시하셔도 됩니다. servo: '', mode: '', speed: 0 }
FAQ
Raspberry Pi의 경우 BLE만 사용해서 조종할 수 없나요?
Micro:Bit과 같은 UUID를 공유하기 때문에, Micro:Bit으로 보드를 선택하고 연동하면 가능합니다.
3종의 보드 이외의 로봇을 연동하려면 어떻게 해야하나요?
다른 종류의 보드를 사용한 로봇을 연동하고 싶다면 해당 주소로 (admin@teamgrit.kr) 연락주시기 바랍니다.
반드시 위의 프로토콜을 지켜야 하나요?
현재는 연동의 편의성을 위해 위와 같이 프로토콜을 제한해둔 상태입니다. 추가적인 의견 주시면 추후 프로토콜 확장시 참고하겠습니다.
모바일에서는 테스트할 수 없나요?
모바일 버전에서는 해당 기능이 곧 제공될 예정입니다.