로봇 안에 똑똑한 컴퓨터가 하나 들어 있다고 막연히 생각했어요. 실제로는 역할이 다른 컴퓨터가 둘이었고, 그 사이 통신에 함정이 있었어요.
판단과 실행을 나눈 2계층
왜 나눌까요
"무엇을 할지"는 SBC가 정하고 "정확한 타이밍으로 실행"은 MCU가 맡아요.
두 컴퓨터가 대화하는 방법은 시리얼 통신이에요. 데이터를 한 비트씩 줄 세워 보내는 오래된 방식이고, 매일 쓰는 USB도 이 시리얼의 한 종류예요. 통신 속도를 맞출 때 9600 같은 느린 보드레이트가 나오는데, 옛 장비들이 안정성 때문에 쓰던 값이 지금도 관습으로 남은 거예요.
문제는 경계에서 생겨요
경계에서 나는 사고 둘
사고가 나는 곳은 SBC도 MCU도 아니라 둘이 만나는 자리예요.
구조를 알고 나니 로봇이 덜 막막해졌어요. 판단과 실행을 나눠 맡고 그 사이를 시리얼로 잇는, 이유가 있는 설계였어요. 그리고 문제는 대개 한복판이 아니라 경계에서 생긴다는 것, 두 세계가 만나는 자리를 조심스럽게 다루는 게 로봇 다루기의 절반이라는 걸 배웠어요.
1 ms 실시간 제어와 계층 구조 이야기는 1kHz 제어 주기와 지터 — 로봇 제어가 1ms를 다투는 이유에 더 있어요.