MENU

휴머노이드·피지컬 AI

ROS 2는 언제부터 가르쳐야 하나요?

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

「ROS 2는 언제 가르칠까?」 — 「ROS 2를 언제 가르치지?」. 휴머노이드 교육 썸네일(질문과 도식).

커리큘럼 짜실 때 이 순서 고민되시죠.

"ROS 2를 언제 가르치지?"

로봇 하면 ROS니까 맨 앞에 두시는 경우가 많은데요. 강화학습 실습이라면 꽤 뒤로 미뤄도 됩니다.

실제 배포 코드를 열어보고 알았습니다.

학습 단계에서도 ROS 2를 쓰나요?

Booster가 공개한 코드를 두 개 열어봤어요.

mujoco_controller.py — 시뮬레이터에서 정책을 돌리는 코드입니다. 여기엔 ROS 2도 SDK도 불러오는 줄이 아예 없었습니다.

booster_robot_controller.py — 실제 로봇에 올리는 코드고요. 여기에만 rclpy와 SDK가 들어 있었습니다.

이유가 있습니다. 통신 계층을 끼우면 학습이 느려지거든요.

학습은 시뮬레이터 안에서 로봇 수천 대를 동시에 돌립니다. 그 사이에 메시지를 주고받는 층을 넣으면 병목이 됩니다. 그래서 시뮬레이터 함수를 직접 부르는 방식으로 갑니다.

로봇 개발 네 단계. 학습과 교차 검증에는 ROS 2와 SDK를 불러오는 줄이 없고, 실제 로봇 직전 리허설부터 SDK가 그다음 ROS 2가 등장한다.
로봇 개발 네 단계. 학습과 교차 검증에는 ROS 2와 SDK를 불러오는 줄이 없고, 실제 로봇 직전 리허설부터 SDK가 그다음 ROS 2가 등장한다.

ROS 2와 SDK는 언제부터 나오나요?

로봇 개발 단계별로 ROS 2와 SDK가 언제 등장하는지. 학습 단계에는 없고 실제 로봇 직전 단계부터 쓰인다.
로봇 개발 단계별로 ROS 2와 SDK가 언제 등장하는지. 학습 단계에는 없고 실제 로봇 직전 단계부터 쓰인다.

SDK는 실제 로봇에 보낼 코드를 처음 쓰는 순간부터 등장합니다.

Booster 파이프라인으로 보면 Webots 단계예요. 여기가 사실상 실제 로봇 직전 리허설이거든요. 여기서 돌아간 코드가 그대로 진짜 로봇으로 갑니다.

ROS 2는 그다음입니다. 카메라, 주행, 인식 같은 프로그램을 여러 개 붙여서 하나의 시스템으로 만들 때부터 필요해요.

커리큘럼에는 어떻게 배치하나요?

이렇게 배치하면 학생이 덜 헤맵니다.

  • 앞부분 — 설계도 파일, 시뮬레이터, 강화학습 (ROS 2 없이)
  • 중간 — 학습한 결과를 SDK로 실제 로봇에 올리기
  • 뒷부분 — ROS 2로 여러 프로그램 연결하기

ROS 2를 맨 앞에 놓으면, 정작 강화학습에서는 안 쓰는 걸 몇 주 배우고 시작하게 됩니다.

배포 코드에서 확인한 대로 단계별로 놓으면 이렇습니다.

단계하는 일ROS 2SDK
학습 (Isaac Gym·MuJoCo)시뮬레이터에서 정책 학습없음없음
교차 검증 (MuJoCo)다른 물리 엔진에서 다시 확인없음없음
실제 로봇 직전 리허설 (Webots)실제 로봇에 보낼 코드 작성없음등장
배포 (실제 로봇)카메라·주행·인식 프로그램 연결등장사용

SDK는 무엇을 해주나요?

로봇에 명령을 보내려면 원래 이런 일을 해야 합니다.

  1. 명령을 정해진 데이터 형식에 맞춰 채우고
  2. CRC(Cyclic Redundancy Check, 순환 중복 검사)라는 검증 숫자를 계산해 붙이고
  3. 통신 선로로 내보내기

SDK가 이걸 대신 합니다. 학생은 함수 하나만 부르면 돼요.

편지에 비유하면 이렇습니다. 봉투에 넣고 주소 쓰고 우표 붙여서 우체국 가는 대신, 택배 기사를 부르는 쪽이죠. 도착하는 건 같은데 첫날 할 수 있느냐가 갈립니다.

메시지 정의는 몇 개인가요?

ROS 2를 쓰기 시작하면 메시지 정의라는 걸 만나게 됩니다. 로봇과 주고받는 데이터의 형식이에요.

저희가 Booster 쪽을 세어봤습니다. 8개입니다.

Booster는 통신 절차를 SDK 함수 뒤로 감춰뒀습니다. 학생이 처음부터 메시지 형식을 하나하나 익히지 않아도 바로 시작할 수 있는 구조죠.

커리큘럼으로 옮기면, 앞 단계에서는 SDK 함수로 결과를 먼저 내고, ROS 2 단계에 들어가서 메시지 정의를 하나씩 열어보는 순서가 자연스럽습니다.

메시지 정의는 공개된 저장소에서 바로 세어볼 수 있으니, 커리큘럼을 확정하기 전에 연구 주제에 필요한 신호가 어디서 나오는지 한 번 확인해보시길 권합니다.

자주 받는 질문

ROS 2를 아예 안 가르쳐도 되나요?

그건 아닙니다. 여러 프로그램을 붙이는 단계에서 반드시 필요합니다. 순서를 뒤로 미루자는 얘기입니다.

학습 단계에서 ROS 2를 쓰면 안 되나요?

못 쓸 건 없지만 느려집니다. 학습 시간이 그만큼 늘어납니다.

SDK는 어떤 언어로 쓰나요?

저희가 확인한 Booster SDK는 파이썬 인터페이스를 제공합니다.

어떤 코드를 확인하신 건가요?

Booster가 공개한 배포 코드 두 개입니다. mujoco_controller.py와 booster_robot_controller.py를 직접 열어 import 목록을 확인했습니다.

이 글에서 확인한 것 · 확인하지 못한 것

  • 확인한 것 — Booster가 공개한 배포 코드 두 개(mujoco_controller.py, booster_robot_controller.py)의 import 목록을 직접 열어 확인했고, 메시지 정의 8개를 세어 보았습니다.
  • 확인하지 못한 것 — 다른 제조사의 구조는 다를 수 있어 확인하지 않았습니다.

다음 단계

이 글 다음에 이어서 읽으면 좋은 글입니다.


여기 내용은 공개된 배포 코드를 저희가 직접 열어 확인한 것입니다. 다른 제조사는 구조가 다를 수 있습니다.

  • #피지컬 AI
  • #ROS 2
  • #SDK
  • #강화학습
  • #로봇 실습
  • #커리큘럼