← / → 이동
HYPER TURTLE PROJECT · 1조
INDOOR 3D MAPPING · ROS 2 JAZZY

거북이 달리자

C270 & C920 스테레오 카메라와 LiDAR 기반
전정대 실내 3D 지도 작성

김강산 · 이성빈 · 최호준 · 박성호
ROS 2 Jazzy · Ubuntu 24.04 · WebGL 3D Mapping
듀얼 웹캠과 LDS-01을 장착한 TurtleBot3 Burger
MISSION

TurtleBot3 및 듀얼 웹캠 기반 데이터 수집 로봇 구축
수집 데이터를 활용한 실내 공간 3D 재구성

실내(전정대) 주행 데이터 수집 및 LiDAR·Odometry·카메라 bag 데이터 후처리를 통한 3D 시각화 지도 구현을 초기 목표로 설정

01
01 // SYSTEM HYPER TURTLE
SENSOR STACK

TurtleBot3 위에 올린
이종 센서 스택

  • 모바일 베이스 — TurtleBot3 Burger + OpenCR, 휠 odometry · IMU (/odom /tf /joint_states)
  • 구조 센서 — LDS-01 2D LiDAR (/scan)
  • 이종 스테레오 — Logitech C920(primary) + C270(secondary), REP-103 optical frame
  • 소프트웨어 — ROS 2 Jazzy · Ubuntu 24.04, 시뮬레이션과 실물 토픽/프레임 이름 일치
Gazebo, RViz, 듀얼 카메라 스트림이 함께 도는 시뮬레이션 삼중 창
▲ Gazebo · RViz · 듀얼캠 동시 실행 — 시뮬레이션
SYSTEM
02 // TEAM HYPER TURTLE
ROLES · 첫 미팅 05/10

두 개 분과 구성을 통한 병렬 개발 진행

로봇팀 · ROBOT TEAM
박성호 · 김강산 · 이성빈
  • TurtleBot3 하드웨어 구축 및 ROS 2 이식
  • Gazebo 및 RViz 기반 가상 시뮬레이션 환경 구현
  • Xbox 컨트롤러 활용 무선 원격 제어 구축
  • 자동 부팅 및 원격 통신 환경 구축 (systemd, SSH)
비전팀 · VISION TEAM
최호준 · 이성빈
  • 듀얼 카메라 이미지 취득 및 스테레오 캘리브레이션
  • 3D 포인트 클라우드 매핑 및 시각화 연구
  • WebGL 기반 3D 웹 뷰어 개발
TEAM
03 // CHALLENGE HYPER TURTLE
UNEXPECTED CRISIS & ADAPTATION

센서 수급 제약에 따른
스테레오 카메라 자체 제작

  • RGB-D 대여 불가 — 초기 계획 핵심 센서였던 RGB-D 카메라 대여 불가에 따른 구성 변경
  • 저가형 스테레오 제작 — 기본 지급 C270(HD) 및 개인 C920(FHD) 웹캠을 하드웨어 프레임 개조로 결합
  • 플랫폼 업그레이드 — 연산 병목 현상을 해결하기 위해 Raspberry Pi 3에서 Pi 4로 교체
  • 통신 환경 최적화 — ROS 2 Jazzy 및 Ubuntu 24.04 직접 빌드, systemd 기반 통신 환경(IP 브로드캐스트, SSH) 자동 활성화
C270과 C920 웹캠을 프레임 개조로 결합한 마운트와 Raspberry Pi
▲ C270 / C920 프레임 개조 마운트
CHALLENGE
04 // ROBOT TEAM SIMULATION
SIMULATION DUAL-CAMERA STACK

실측 데이터 수집에 앞선 시뮬레이션 기반 사전 검증

  • Gazebo 시뮬레이터 상에 가상 카메라 구현 및 URDF/SDF 기반 카메라 링크·좌표계 정의
  • ROS-Gazebo 브릿지 노드를 활용하여 가상 이미지 및 카메라 정보 토픽 변환
  • RViz2 상에서 로봇 모델, LiDAR 측정 정보, TF 트리 및 스테레오 카메라 데이터 연동 검증
  • 실물 데이터와의 일관성 확보를 통한 시뮬레이션 기반 데이터 검증 프로토콜 구축
Gazebo, RViz, 듀얼 카메라 스트림이 함께 도는 시뮬레이션
▲ Gazebo + RViz + dual camera 동시 구동
Gazebo Sim의 실내 스캔 테스트 월드
▲ Gazebo world
RViz2의 TF, LaserScan, 로봇 모델, 듀얼 카메라 패널
▲ RViz2 sensor check
ACQUISITION · SIM
04 // ROBOT TEAM REAL ROBOT
ROBOT-SIDE ROS 2 PIPELINE

실물 로봇 데이터 수집 파이프라인

  • 센서 구성 — turtlebot3_node · usb_cam · TF/camera frame 연결
  • 원격 조종 — Xbox 조이스틱 및 UDP 브릿지를 활용한 TwistStamped 제어 정보 수신 (DDS 불안정 우회)
  • 실험 자동화 — 원격 제어 스크립트를 통한 SSH 기반 로봇 조작, 실행 및 자동 데이터 수집
  • 기록 — rosbag2를 활용한 2D LiDAR 데이터, 오도메트리 정보 및 스테레오 이미지 일괄 취득
조이스틱으로 주행하며 데이터를 기록하는 실물 TurtleBot3
▲ 조이스틱 주행으로 실측 bag 기록
ACQUISITION · REAL
05 // VISION PIPELINE
VISION PIPELINE

비전 파이프라인 — 표준 처리 아키텍처

01rosbag2 데이터 로드 및 전처리
02좌우 이미지 프레임 시간 동기화
03카메라 캘리브레이션 및 스테레오 정합(Rectification)
04변위(Disparity) 맵 추정 (OpenCV SGBM / DEFOM-Stereo)
05LiDAR 데이터 연계 Depth 오차 검증 및 보정
063D 포인트 클라우드(Point Cloud) 생성 및 좌표 변환 누적
07복셀 다운샘플링 및 아웃라이어 필터링
08최종 3D 형상 포맷(PLY/PCD/NPY) 출력

실측 데이터 획득 과정에서 발생한 시스템 제약 및 예외 사항은 다음 장에 기술함

VISION · PIPELINE
06 // DIAGNOSIS POINTCLOUD FAILURE
RESULT · 결과

스테레오 매칭 데이터의 기하 왜곡 및 포인트 분산 발생

기존 알고리즘 기반 포인트 클라우드 매핑 결과, 평면 구조물의 윤곽이 왜곡되고 포인트가 분산되는 현상이 식별됨. 주행 데이터셋(bag) 간의 ICP 정합 수행 후에도 좌표계 누적 오차로 인해 공간 형상 복원에 한계 노출.

ICP 정합 전후 point cloud 비교, 구조가 흩뿌려져 있음
▲ ICP merge 전 · 후 — 구조가 흩뿌려짐 (1,595,800 pts)
FAILURE
06 // DIAGNOSIS ROOT CAUSE
오류 원인 진단

복합적 오류 발생 핵심 요인 분석

CameraInfo 파라미터 유실 듀얼 카메라 데이터셋 내 왜곡 보정 변수 및 내부 변수의 소실(Empty)로 전처리 및 왜곡 보정 수행 불가능
카메라 TF 변환 회전각 왜곡 기록된 bag 파일 내 서브 카메라(C270)의 상대 회전 오차값(Yaw 45°) 오기록으로 인한 좌표 정렬 실패
오도메트리 기준 좌표계 불일치 주행 실험 차수별 원점 좌표 불일치로 다중 데이터 병합 시 정렬 오차 발생
top-down 시점에서 본 point cloud 구조 붕괴 진단
▲ top-down 진단 — 구조 붕괴
DIAGNOSIS
06 // DIAGNOSIS STEREO RETRY
RETRY · 정석으로 재시도

오류 데이터 파라미터 보정 후 재시험 결과 및 한계 분석

Camera_info, TF, odom 이슈를 해결하고, rectification → disparity map → 3D back proj. 의 정석 방법을 시도해보았지만 여전히 결과가 좋지 않다.

  • Baseline 부족 — 두 카메라의 disparity 자체가 적다: baseline이 실측 기준 10cm조차 되지 않는다
  • 이종 카메라 결합 — HW 이슈로 서로 다른 카메라를 사용하며 화각, 색감, 노출, 렌즈, 해상도가 모두 달라 합치는 데 어려움이 있었다
  • 플랫폼 한계 — 바닥 중심의 저각도 시야, texture 부족, 빛반사 등
재시도한 stereo matching의 per-frame disparity와 sparse point cloud
▲ 재시도 stereo matching — sparse cloud (combined 9,742 pts)
RETRY
07 // PIVOT LIDAR MAPPING
방향 전환 · ANOTHER WAY

고정밀 LiDAR 데이터를 기하학적 기준으로 설정

  • 방향 전환 — 신뢰할 수 있는 LDS-01 LiDAR 데이터를 구조적 뼈대로 쓰기로 선회
  • Filtering — LiDAR 에러값(최장거리 바운더리) 필터링
  • 3D Wall Extrusion — 추출한 floorplan을 2.2m 높이의 3D mesh로 수직 압출(extrude)하여 입체감 확보
  • 실용적 접근 — 거창하게 써놨지만 2D LiDAR 데이터를 억지로 3D로 늘린 방식; 그러나 실환경에서 효과적인 시각화 달성
LiDAR floorplan과 빨간 주행 궤적
▲ LiDAR floorplan + 주행 궤적 (2,259 cells)
floor와 압출된 벽, 로봇 궤적이 있는 3D 장면
▲ floor + extruded walls + trajectory
PIVOT · LIDAR
08 // VISUALIZATION PANORAMIC TEXTURING
파노라마 스티칭

3D 입체 기하 구조물과 실측 영상 정보의 융합

  • C920 Photo Map — 획득한 keyframe 이미지들을 로봇 궤적 노드에 배치하여 2.5D 방식의 지도 매핑 시도
  • Image Stitching 도입 — 연속된 C920 프레임들을 이미지 스티칭으로 정교하게 이어 붙여 파노라마 이미지를 획득함
  • 결과 — 꽤나 완성도 높은 파노라마 스티칭 이미지가 도출됨
LiDAR floorplan 위에 timestamp로 정렬한 C920 실사진 맵
▲ floorplan 위 C920 실사진 photo map
여러 노드의 파노라마를 한 뷰어로 보는 multi-node stitched tour
▲ Multi-node stitched tour WebGL viewer
PANORAMA
09 // FINAL OUTCOME EDGE-TEXTURED 3D MAP
LIDAR-DEPTH IMAGE MAPPING

LiDAR 구조 및 주행 포즈 추정 연계 WebGL 3D
융합 지도

  • 안정적인 LiDAR-depth 활용 — 라이다 센서에서 추출한 depth를 이용한 안정적인 구조 기준 확보
  • 이미지 매핑 — 수십 장의 파노라마 이미지를 생성한 뒤 feature extract를 진행하여 depth 결과에 매핑
  • 한계 — 2D LiDAR와 3D 스테레오 카메라 매핑 시 Z축 불일치로 결과 품질 저하; no texture 환경으로 인해 추출 feature 수가 적어 매핑에 어려움 발생
Edge-textured 3D map WebGL 뷰어 데스크톱 화면
▲ Edge-textured 3D map — desktop viewer
Edge-textured 3D map 모바일 뷰어 화면
▲ mobile
FINAL
10 // RETROSPECTIVE EVALUATION
성찰 · 달성과 한계

달성 성과 및 향후 연구 한계 분석

ACHIEVED · 달성
  • 이종 스테레오 카메라 및 LiDAR 센서 연계 실측 데이터 취득 환경 구축
  • 시뮬레이션 환경 구축 및 실물 센서 간 입출력 규격 일치
  • LiDAR 기반 2D 도면 및 입체 벽면 매핑, WebGL 뷰어 시각화
LIMITS & LESSONS · 한계
  • 센서 하드웨어 한계 — 초저가 이종 스테레오 구성에 따른 기선 거리 확보 및 캘리브레이션 정밀도 확보의 제약
  • 데이터 무결성 문제 — 초기 캘리브레이션 정보 소실 및 오도메트리 원점 오차를 후처리 보정 알고리즘으로 극복
  • 동작 플랫폼 제약 — 전원 전압 제약으로 인한 최단 작동 시간, 모터 주행 속도 병목, 마운트 진동 노이즈 유입
RETROSPECTIVE
CONCLUSION

제한된 스테레오 카메라 구성에 따른 Dense Stereo 복원 한계를 규명하고,
높은 신뢰성의 LiDAR 기반 기하 구조와 파노라마 텍스처 매핑을 결합한
실용적 WebGL 3D 맵핑 구현 방식으로 목표를 전환하여 달성함

02
HYPER TURTLE PROJECT · 1조

Q & A

질문 및 답변 시간 — 발표를 경청해주셔서 감사합니다.

김강산 · 이성빈 · 최호준 · 박성호  //  ROS 2 Jazzy · Ubuntu 24.04
?