ROS 2는 언제부터 가르쳐야 하나요?
강화학습 실습에서는 의외로 안 씁니다. 실제 배포 코드를 열어보니 언제부터 등장하는지 명확하더라고요.

커리큘럼 짜실 때 이 순서 고민되시죠.
"ROS 2를 언제 가르치지?"
로봇 하면 ROS니까 맨 앞에 두시는 경우가 많은데요. 강화학습 실습이라면 꽤 뒤로 미뤄도 됩니다.
실제 배포 코드를 열어보고 알았습니다.
학습할 때는 안 씁니다
Booster가 공개한 코드를 두 개 열어봤어요.
mujoco_controller.py — 시뮬레이터에서 정책을 돌리는 코드입니다. 여기엔 ROS 2도 SDK도 불러오는 줄이 아예 없었습니다.
booster_robot_controller.py — 실제 로봇에 올리는 코드고요. 여기에만 rclpy와 SDK가 들어 있었습니다.
이유가 있습니다. 통신 계층을 끼우면 학습이 느려지거든요.
학습은 시뮬레이터 안에서 로봇 수천 대를 동시에 돌립니다. 그 사이에 메시지를 주고받는 층을 넣으면 병목이 됩니다. 그래서 시뮬레이터 함수를 직접 부르는 방식으로 갑니다.
그럼 언제부터 나오냐면

SDK는 실제 로봇에 보낼 코드를 처음 쓰는 순간부터 등장합니다.
Booster 파이프라인으로 보면 Webots 단계예요. 여기가 사실상 실기 리허설이거든요. 여기서 돌아간 코드가 그대로 진짜 로봇으로 갑니다.
ROS 2는 그다음입니다. 카메라, 주행, 인식 같은 프로그램을 여러 개 붙여서 하나의 시스템으로 만들 때부터 필요해요.
커리큘럼으로 옮기면
이렇게 배치하면 학생이 덜 헤맵니다.
- 앞부분 — 설계도 파일, 시뮬레이터, 강화학습 (ROS 2 없이)
- 중간 — 학습한 결과를 SDK로 실제 로봇에 올리기
- 뒷부분 — ROS 2로 여러 프로그램 연결하기
ROS 2를 맨 앞에 놓으면, 정작 강화학습에서는 안 쓰는 걸 몇 주 배우고 시작하게 됩니다.
SDK는 뭘 해주나요
로봇에 명령을 보내려면 원래 이런 일을 해야 합니다.
- 명령을 정해진 데이터 형식에 맞춰 채우고
- CRC(Cyclic Redundancy Check, 순환 중복 검사)라는 검증 숫자를 계산해 붙이고
- 통신 선로로 내보내기
SDK가 이걸 대신 합니다. 학생은 함수 하나만 부르면 돼요.
편지에 비유하면 이렇습니다. 봉투에 넣고 주소 쓰고 우표 붙여서 우체국 가는 대신, 택배 기사를 부르는 쪽이죠. 도착하는 건 같은데 첫날 할 수 있느냐가 갈립니다.
메시지 개수도 회사마다 다릅니다
ROS 2를 쓰기 시작하면 메시지 정의라는 걸 만나게 됩니다. 로봇과 주고받는 데이터의 형식이에요.
저희가 양쪽을 세어봤습니다.
- Booster — 8개
- Unitree — 43개
숫자만 보면 Unitree가 훨씬 많죠. 저수준 신호를 넓게 열어둔 쪽입니다. 로봇 내부를 직접 파고드는 연구라면 이쪽이 유리합니다.
Booster는 대신 통신 절차를 함수 뒤로 감춰뒀습니다. 시작이 빠른 쪽이고요.
어느 쪽이 낫다기보다 연구 주제에 따라 답이 갈립니다. 커리큘럼이 저수준 제어까지 가면 노출 범위가 넓은 쪽이, 한 학기 안에 결과를 내야 하면 감싸둔 쪽이 맞습니다.
자주 받는 질문
ROS 2를 아예 안 가르쳐도 되나요?
그건 아닙니다. 여러 프로그램을 붙이는 단계에서 반드시 필요합니다. 순서를 뒤로 미루자는 얘기입니다.
학습 단계에서 ROS 2를 쓰면 안 되나요?
못 쓸 건 없지만 느려집니다. 학습 시간이 그만큼 늘어납니다.
SDK는 어떤 언어로 쓰나요?
저희가 확인한 Booster SDK는 파이썬 인터페이스를 제공합니다.
어떤 코드를 확인하신 건가요?
Booster가 공개한 배포 코드 두 개입니다. mujoco_controller.py와 booster_robot_controller.py를 직접 열어 import 목록을 확인했습니다.
여기 내용은 공개된 배포 코드를 저희가 직접 열어 확인한 것입니다. 다른 제조사는 구조가 다를 수 있습니다.