본문으로 건너뛰기

M09.01 · 월드·로봇 스폰·리셋·고정 스텝

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 월드/모델·server/GUI와 스폰 요청/관측·이름/초기 pose의 계약을 구분한다.
  • 합성 고정 스텝/주기·simulation time/실제 경과/RTF를 계산하고 포함 가정을 설명한다.
  • pause/reset 뒤 시간/상태·외부 큐/세대를 확인해 재현/준비·실패/미상을 판정한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M05의 ROS/시간, M07의 이산 제어와 M08의 모델을 사용한다. SDF/world/model·entity 생성과 physics step/RTF를 본문에서 보충한다. 기준은 Ubuntu 24.04/ROS 2 Jazzy/Gazebo Harmonic이며 기본 활동은 합성 로그 계산이다. 실제 설치·Gazebo/ROS/장비 실행은 요구하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

월드는 환경과 실행 조건을 담는다

월드(world)는 중력/물리·바닥/장애물·조명과 모델을 배치한 시뮬레이션 환경이다. 모델은 로봇/상자처럼 링크/관절·시각/충돌/관성 등을 묶은 대상이다. entity는 실행 중 모델/링크·센서 등을 식별하는 개체를 뜻한다. SDF는 이런 시뮬레이션 구성을 기술하는 XML 형식이다. 월드 파일과 로봇 모델 파일은 역할이 다르며 모델의 URDF를 가져와도 월드/센서·구동/시간 계약이 자동 완성되지는 않는다.

이 모듈의 기준 조합은 Ubuntu 24.04/ROS 2 Jazzy/Gazebo Harmonic이다. 공식 호환 표에서 Jazzy/Harmonic 조합을 확인한다. Gazebo Classic용 옛 plugin 이름/토픽·명령을 그대로 쓰지 말고 대상 버전의 기능/구성으로 옮긴다. 여기서는 설치하거나 최신 버전으로 임의 변경하지 않고 주어진 기록을 해석한다.

server는 월드 상태/물리·시스템을 갱신하고 GUI는 상태를 보여 주거나 조작 요청을 보낸다. GUI 창에 로봇이 보이는 것과 물리/구동·센서/ROS 연결이 준비된 것은 다른 관문이다. Harmonic SDF world 문서는 Physics, UserCommands, SceneBroadcaster 같은 system plugin의 역할을 구분한다. 필요한 시스템/서비스와 실제 상태를 확인하며 단순 그림을 물리 실행 결과로 받아들이지 않는다.

스폰은 파일/이름·pose가 있는 생성 과정이다

spawn은 모델을 실행 월드에 생성하는 작업이다. 모델 파일/자산 경로·이름, 초기 pose의 기준/단위, 대상 world와 생성 기능이 필요하다. pose는 위치/방향의 쌍이며 위치는 보통 m/회전은 명시한 규약으로 기록한다. Gazebo Transport와 ROS 서비스는 같은 이름/형식이라고 가정하지 않는다. 이 단위는 Transport 개념을 다루고 ROS 연결은 다음 단위에서 보충한다.

Gazebo Sim 8 entity creation 문서는 UserCommands system이 제공하는 /world/<world_name>/create와 EntityFactory 요청을 설명한다. 실제 요청/응답·생성된 대상의 이름/ID·pose를 연결한다. timeout이면 요청이 처리되었는지 미상일 수 있어 동일 요청을 무조건 반복해 개체를 늘리지 않는다. 모델이 보이더라도 충돌/관성·구동/센서 준비는 별도로 검사한다.

합성 월드 demo에 robot이라는 모델이 이미 하나 있고, 같은 이름으로 다시 생성 요청을 한다고 하자. 공식 기본 설명처럼 이름 변경 허용이 꺼져 있으면 동일 이름을 새 개체로 만들지 않는다. 반대로 이름 변경을 허용해 반복 생성하면 다른 이름의 개체가 추가될 수 있다. 후속 관측/명령이 실제 어느 로봇 ID에 연결되는지 확인해야 한다. 이름만 보고 이전 대상/새 대상을 혼동하지 않는다.

초기 위치가 바닥 안쪽이거나 다른 물체와 겹치면 기대와 다른 접촉/가속이 생길 수 있다. dynamic 모델과 static 바닥의 구분·gravity/관성·collision을 확인한다. 화면에서 모양이 맞아도 질량/축·충돌 형상은 다를 수 있다. 이 과제는 실제 충돌/낙하 시험을 하지 않고 필요한 관측 항목을 설계한다.

고정 스텝은 모형 시간의 증가량이다

physics step의 Δt는 물리 상태를 한 번 적분/갱신할 때 전진하는 모형 시간이다. 설정의 max_step_size와 실제 기록된 step을 구분하며, 아래 계산은 각 완료 physics step의 Δt가 일정하다고 명시적으로 가정한다. 초기 simulation time이 0이고 N번 step이 완료되면 시간은 NΔt다. 더 작은 step도 접촉/솔버·모형/주기에 따라 결과가 달라 실제 정확도/안정성이 자동 보장되지는 않는다.

모형 시간과 벽시계의 다른 축: Physics step → 실행 소요 시간 → Render/센서 주기 → 리셋/새 epoch.그림 원본 크기로 보기

그림 M09.01-1. 각 칸은 서로 다른 역할/근거다. 나란히 비교할 항목이며 위아래가 시간 순서를 뜻하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.

합성 Δt=0.001 s(1 ms)에서 완료 step 100개면 simulation time은 0.100 s다. 이 물리 주기에 대응하는 빈도는 1000 Hz지만 카메라/제어·GUI도 모두 1000 Hz라는 뜻은 아니다. 카메라의 모형 갱신 간격 0.050 s는 이 일정 step의 50개, 제어 간격 0.020 s는 20개에 해당한다. 실제 센서 발행/전송·처리와 위상/스케줄은 별도다.

같은 100 step을 Δt=0.002 s로 진행하면 모형 시간은 0.200 s다. 같은 0.100 s를 비교하려면 각각 100/50 step을 완료해야 한다. step 수만 맞춘 두 실험을 같은 지속 시간의 결과라고 쓰면 안 된다. 설정 변경 후 제어/센서 갱신과 관측/로그·접촉 오차를 함께 재검증한다.

모형 시간과 실제 경과·주기를 분리한다

RTF(real-time factor)는 해당 측정 구간의 simulation time 증가를 실제 경과 시간 증가로 나눈 비율로 계산한다. 합성 100 ms 모형 구간에 실제 250 ms가 걸렸으면 RTF=0.4다. 같은 실제 250 ms 동안 모형이 200 ms 전진했다면 0.8이다. 설정 real_time_factor 목표가 1이라고 실제 측정도 반드시 1인 것은 아니다. 연산/렌더링·센서·스케줄/부하에 따라 달라진다.

RTF가 0.4면 모형의 제어 간격 20 ms는 일정한 비율이라는 추가 가정에서 실제 약 50 ms에 대응한다. 실제 간격이 항상 같다는 보장은 없어 평균 비율과 jitter를 나눈다. 느리게 실행되는 모형에서도 모형 시간으로 제어/센서를 정합하면 알고리즘의 기준 간격을 유지할 수 있지만, 실제 장비 timeout/네트워크·벽시계와 섞으면 다른 동작이 된다.

pause는 물리/모형 시간을 멈추는 제어다. Sim 8 pause 문서의 요청과 paused 상태를 확인한다. GUI/프로세스·외부 ROS 노드의 실제 경과가 모두 정지하는 것은 아니다. 화면이 그대로거나 같은 센서 표본이 남아 있는 것과 새로운 관측을 얻는 것은 다르다. 실제 경과 watchdog과 simulation stamp의 목적을 구별한다.

리셋 후 외부 상태와 실험 세대도 맞춘다

Sim 8 reset 문서는 world control의 reset과 system reset 인터페이스를 설명한다. reset은 설정/구현에 따라 해당 모형 상태/시간을 초기화하는 동작이며 외부 정책·ROS 버퍼/파일·사용자 코드 상태까지 모두 과거로 되돌리는 기능은 아니다. 요청 응답과 실제 time/pose·속도/개체·센서 준비의 후속 관측을 연결한다. 실행 중 추가한 모델이 원하는 초기 스냅샷에 포함되는지도 직접 확인한다.

합성 실행 e1의 sim time이 1.200 s였다가 전체 reset 뒤 새 실행 e2에서 0으로 관측되었다고 하자. 이전 관측 stamp 1.190 s를 새 시각 0과 빼면 −1.190 s다. 이를 아주 신선한 관측으로 인정하면 안 된다. e1의 대기 명령/action chunk·필터/추적 상태를 e2에 섞지 않고 epoch/시퀀스와 초기화·새 관측 전제를 확인한다. 명시적인 reset의 0과 아직 첫 clock을 못 받은 미초기화 0도 출처/상태로 구분한다.

재현 기록에는 world/model·자산/physics backend/솔버/Δt·센서/제어 주기, 초기 pose/속도·버전/seed와 외부 상태·clock/epoch를 둔다. seed와 고정 step만으로 모든 backend/장치·비동기 처리의 완전한 동일성을 보장하지 않는다. 기존 2.3 물리 시간/접촉과 6.2 정량 진단을 연결하되 Isaac/PhysX의 API/기본값을 Gazebo에 그대로 적용하지 않는다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

입력은 demo의 기존 robot 한 개/같은 이름 생성·이름 변경 허용 꺼짐, 고정 step 1/2 ms의 100 step·실제 250 ms, 카메라 50 ms/제어 20 ms, e1→e2 reset 로그와 남은 e1 관측/명령이다. 모두 합성 자료다.

  1. 월드/모델·server/GUI와 생성 요청/실제 개체·초기 pose/준비의 계약을 표로 구분한다.
  2. 모형 시간/동일 시간의 step 수·주기별 step 수와 RTF를 계산하고 실제 시간 가정을 표시한다.
  3. pause/reset 후 time/개체·외부 큐/epoch·새 관측과 재현/미상 판정 절차를 설계한다.

관찰은 생성/구성, 시간 계산, 초기화/증거의 세 열이다. 막히면 ms를 s로 바꾸고 실제 경과와 모형 시간을 다른 칸에 적는다. 실제 설치/실행은 필요하지 않다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

GUI에 robot이 보이고 동일 이름의 생성 요청도 보냈다. 로봇 두 개/센서와 ROS 준비가 보장되는가? 필요한 구성/ID·초기 상태 확인을 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

고정 Δt=0.002 s의 완료 physics step 150개가 실제 0.6 s 걸렸다. 모형 시간/RTF와 모형 제어 20 ms의 step 수를 구하라. GUI 빈도도 같은가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

reset 뒤 sim time은 0인데 이전 실행의 관측/명령·EMA 상태가 남아 있다. 그대로 재개할 수 있는가? 초기화/관측·재현과 미상 범위를 적어라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.