Rostore — ROS 2 로봇 조립대

부품에서 launch 파일까지,
선 몇 개로

부품의 구매처와 ROS 2 드라이버를 한곳에서 찾고, 드라이버끼리의 토픽·서비스·파라미터를 그래프로 잇습니다. 타입이 안 맞으면 선이 붙지 않고, 맞춘 구성은 launch 파일 한 장으로 나와 그대로 남에게 건넬 수 있습니다.

Ubuntu 26.04 · 24.04 · 22.04ROS 2 Lyrical · Jazzy · HumbleApache-2.0

조립대 — 라이다 SLAMWorkbench — lidar SLAM /scan · LaserScan 부품 · SlamtecPart · Slamtec RPLIDAR C1 sllidar_ros2 / sllidar_node serial_baudrate460800 frame_idlaser 구매처 · 드라이버 저장소 →Where to buy · driver repo → 패키지 · 지도 만들기Package · Mapping slam_toolbox async_slam_toolbox_node scan_topic/scan base_framebase_footprint 패키지 · 키보드 조종Package · Keyboard teleop teleop_twist_keyboard cmd_vel · Twist stampedfalse 로봇 · TurtleBot3 BurgerRobot · TurtleBot3 Burger turtlebot3_node cmd_vel · TwistStamped enable_stamped_cmd_veltrue 검사 · 2Checks · 2 /scan LaserScan → scan_topic 에 적음LaserScan → written to scan_topic cmd_vel Twist ≠ TwistStamped teleop 의 stamped:=true 로 바꾸면 붙습니다Set stamped:=true on teleop to connect 고치기Fix 내보내기Export robot.launch.py params.yaml lidar-slam.rostore.yaml

01 — 문제

로봇 하나 세우는 시간의 대부분은
코드가 아니다

1

부품 하나에 탭 다섯 개

제조사 페이지, 판매처, 드라이버 저장소, README, 이슈 게시판. 라이다 하나를 고르는 데도 이만큼 열고, 다음 부품에서 또 엽니다.

2

맞는지는 켜 봐야 안다

/scan 과 /lidar/scan, Twist 와 TwistStamped, laser 와 base_scan. 어긋남은 대개 오류 없이 조용합니다 — 로봇이 그냥 움직이지 않을 뿐.

3

맞춘 값은 내 PC 에만

셸 기록과 기억 속에 흩어진 파라미터들. 다음 로봇에서, 옆자리 동료가 처음부터 다시 맞춥니다.

02 — 실제 화면

켜기 전에,
화면이 먼저 말한다

jazzy 의 TurtleBot3 는 TwistStamped 를 듣습니다. 키보드 조종(Twist)과 이으면 선이 끊기고, 오른쪽에 「고치기 — teleop: stamped = true」 가 뜹니다. 한 번 누르면 붙습니다.

Rostore — 조립대 · rostore studio

Rostore 조립대 실제 화면 — 왼쪽에 부품으로 놓기(RPLIDAR A1M8·C1, TurtleBot3), 가운데 그래프에서 teleop 과 robot 사이 선이 빨갛게 끊겨 있고 robot 과 slam 은 이어져 있으며, 오른쪽 판정 칸에 Twist ≠ TwistStamped 와 고치기 버튼
2026-10-13 화면. 그래프의 이름·파라미터·타입은 상류 소스에서 읽은 것이고, 여기서 내보낸 launch 파일을 ROS 2 Jazzy·Lyrical 컨테이너에서 실제로 띄워 확인했습니다.

03 — 작동 방식

고르고, 잇고, 켠다

세 걸음 모두 같은 데이터를 봅니다 — 백과의 부품, 레지스트리의 패키지, 그리고 패키지가 선언한 토픽·서비스·파라미터.

  1. 1

    고른다

    부품 문서에 구매처와 ROS 2 드라이버, 그 모델에 맞는 값이 출처·확인 날짜와 함께 붙습니다. 「조립대에 놓기」를 누르면 그 값으로 드라이버가 놓입니다.

  2. 2

    잇는다

    조립대에 노드를 놓고 출력에서 입력으로 선을 긋습니다. 메시지 타입이 다르면 선이 붙지 않고 이유를 말합니다. 이름이 다르면 리맵을 — 이름을 쥔 파라미터(scan_topic 같은)가 있으면 그 값을 — 대신 적습니다.

  3. 3

    켜고 나눈다

    구성은 launch 파일과 params YAML, 그리고 파일 한 장짜리 구성으로 — 또는 링크 한 줄로 — 나옵니다. rostore up 은 돌릴 명령을 먼저 보여 주고 승인을 받은 뒤 켭니다. 그 파일이나 링크를 받은 사람은 같은 로봇을 그대로 세웁니다.

04 — 설치

Ubuntu 에서,
터미널 하나로

sudo 없이 ~/.local 에 깔립니다 — CLI, 조립대, 앱 메뉴. ROS 2 가 없으면 doctor 가 이 Ubuntu 에 맞는 판(26.04 → Lyrical)과 공식 설치 순서를 알려 줍니다.

  • studio — 조립대를 브라우저에서, 127.0.0.1 에만 묶어서
  • doctor — Ubuntu 와 ROS 2 판, colcon, 빌드용 Python, 시리얼 보드
  • stack — 조립대와 같은 판정을 터미널에서 · 내보내기 · 켜기
  • install / up / down — 계획 → 승인 → 실행 · 세우기는 승인이 필요 없습니다

공개 내려받기는 아직 없습니다 — 지금은 저장소에서 tool/install.sh 로 깝니다.

rostore — bash

# 깔기 — sudo 없이 ~/.local 에 (CLI · 조립대 · 앱 메뉴)
$ tool/install.sh
깔았습니다 — rostore 0.1.0
  앱 메뉴에서 「Rostore 조립대」, 또는 터미널에서: rostore studio
# 이 PC 의 ROS 2 — 없으면 맞는 판과 공식 설치 순서
$ rostore doctor
  ✓ 운영체제: Ubuntu 26.04.1 LTS — apt 로 깔리는 ROS 2 는 lyrical
  ✗ ROS 2 환경: ROS 2 가 없습니다. … lyrical 를 깝니다(공식 순서):
      $ sudo apt install ros-lyrical-ros-base ros-dev-tools
# 구성 한 장 — 조립대와 같은 판정
$ rostore stack turtlebot3-slam.rostore.yaml
  선
    ✓ robot.scan → slam./scan   /scan · LaserScan
    ✓ teleop.cmd_vel → robot.cmd_vel   /cmd_vel · TwistStamped
  판정 — 오류 0 · 경고 0 · 알아 둘 것 3
# 조립대를 브라우저로
$ rostore studio

05 — 켜기 전에

노드는 켜지는 순간
로봇을 움직일 수 있다

그래서 아래 네 가지는 설명서가 아니라 코드에 있습니다.

출처 없는 값은 빌드가 막는다

백과의 모든 수치에 출처·신뢰도·확인 날짜가 붙습니다. 하나라도 없으면 생성이 실패합니다. 시뮬레이터에서 본 값을 '실측'으로 적는 것도요.

돌릴 명령을 먼저 보여 준다

설치와 켜기는 계획 → 승인 → 실행 순서로만 돕니다. 계획을 본 뒤 레지스트리가 바뀌었다면 요청은 거절됩니다.

멈추는 길은 늘 열려 있다

세우기는 승인도 계획 비교도 요구하지 않습니다. 켤 때 무엇을 승인했든, 세우는 것은 언제나 옳습니다.

모르는 것은 모른다고

ROS 인터페이스가 확인되지 않은 로봇에는 '비호환' 대신 '판정 불가'라고 말합니다. 모르는 것은 실패가 아닙니다.

06 — 지금

확인된 것과
아직 아닌 것

확인된 것

  • 패키지가 실제로 설치됩니다. 빈 ros:jazzy 컨테이너에서 명령 하나로 받아 빌드하고 ros2 가 찾는 것까지.
  • 백과가 자기 거짓말을 막습니다. 출처 없는 수치, 없는 부품 참조, 시뮬을 실측이라 적는 것 — 빌드가 실패합니다.
  • 조립대가 내보낸 launch 파일이 실제로 돕니다. ROS 2 Jazzy·Lyrical 컨테이너에서 slam_toolbox 가 configure → activate 를 거쳐 active 까지, 값은 선언된 타입 그대로.
  • Ubuntu 26.04 + Lyrical 에서 드라이버 설치가 끝까지 됩니다. 상류가 아직 못 고친 sllidar_ros2 의 빌드를, 열려 있는 수정의 커밋을 고정해 받고 그 이유를 계획에 적습니다.
  • TF 를 켜기 전에 봅니다. 라이다가 찍는 프레임이 로봇의 TF 나무에 없으면 고칠 값이나 더할 고정 변환을 내고, 부모가 둘인 프레임도 짚습니다.
  • 레지스트리의 선언을 실제 노드와 대조합니다. apt 노드 9개와 cmd_vel_safety_gate 를 ROS 2 Jazzy·Lyrical 컨테이너에서 띄워 토픽·서비스·파라미터·TF 를 견줬습니다.
  • 구성이 링크 한 줄로 갑니다. 그래프 전체가 주소의 # 뒤에 실려 아무것도 올리지 않습니다 — 받은 구성이 launch 파일 속 코드가 되지 못하게 막았습니다.
  • Ubuntu 26.04 에서 로봇 없이 지도. 공유 구성 「책상 위 RPLIDAR C1」이 Lyrical 컨테이너에서 서고, 시험 스캔으로 지도를 그렸습니다.
  • 파라미터가 타입을 지킵니다. double 은 double 로, 없는 이름은 거절하고, 값이 기본값인지 지금 떠 있는 노드의 값인지 보여 줍니다.
  • 커밋 전에 시험과 교차 검사가 돕니다. 문서의 숫자와 저장소 사이의 약속이 어긋나면 들어가지 못합니다.

아직 아닌 것

  • 부품마다 구매처와 드라이버. 아직 문서 7편·드라이버 3종입니다 — 판매처는 페이지를 열어 상품을 확인한 것만 적습니다.
  • Ubuntu 26.04 의 TurtleBot3. 상류가 아직 Lyrical 에서 빌드되지 않습니다(없어진 .h 헤더, Boost 1.90). 조립대가 이유를 말하고 Jazzy 컨테이너 길을 알려 줍니다.
  • Nav2 와 카메라. 내비게이션과 카메라 드라이버는 아직 조립대에 없습니다.
  • 실기에서 한 번. 순서·준비 확인·실패 처리는 가짜 프로세스로 검증했고, 두 팔을 꽂고 켜 보는 것이 남았습니다.
  • 남이 써 본 적이 없습니다. 첫 사용자는 만드는 사람 자신입니다.

07 — 순서

하나를 끝까지,
그다음에 다음

지금은 Rostore 하나입니다. 나머지 둘은 흐리게 그렸습니다 — 없어진 것이 아니라 순서가 뒤입니다.

  1. 지금

    Rostore 로봇 백과 · 레지스트리 · 조립대

    만드는 사람이 매일 쓰고 만족할 때까지 다듬은 뒤 세상에 보입니다.

    • 백과 · 레지스트리 · 설치
    • 타입 있는 파라미터 · 프로필
    • 그래프 조립대
    • 켜기 전 TF 판정
    • Ubuntu 26.04
    • 구매처 · 드라이버
    • 구성 나누기 — 파일·링크는 됨, 서버는 아직
  2. 그다음

    Robotold 로봇에 장착하는 핸드폰

    라이브와 트리거로 실물 위에서 판단합니다. 명령은 로봇 쪽 안전 계층을 지나야 로봇에 닿습니다.

MPIA 공유 코어가 밑에서 받칩니다 — 계정 하나로 모든 앱에, NAS 테스트 서버에서 돕니다. 안전 판정은 서버에 두지 않습니다.

문의하기

로그인