실무 프로젝트:자율주행(1)

dongmin·2026년 6월 18일
post-thumbnail

[Robotics Bootcamp] 1-2일차: TurtleBot4 셋업부터 Depth 카메라 활용까지 🐢

드디어 시작된 로봇 부트캠프! 첫날과 둘째 날은 당장 복잡한 알고리즘을 짜기보다, 로봇 제어의 기초가 되는 탄탄한 환경을 구축하는 데 집중했다. 1일차의 '인프라 구축'부터 2일차의 '로봇 시각 구현'까지의 과정을 정리해 본다.

1. 1일차: 로봇 제어를 위한 기초 공사

첫날은 팀 프로젝트를 위한 환경 세팅의 연속이었다. 로봇이 내리는 명령을 정확히 수행하기 위해서는 PC와 로봇 사이의 통신이 무엇보다 중요하기 때문이다.

🛠️ 개발 환경 구축 (Ubuntu & ROS2)

시뮬레이션과 딥러닝 구동을 위해 NVIDIA 그래픽 드라이버를 퍼포먼스 모드로 세팅하고, ROS2 Humble 버전을 설치했다.

  • 환경 설정: Locale 설정(UTF-8)과 .bashrc 환경변수 등록 등 기초적인 세팅을 완료했다.

  • 유틸리티: 화면 녹화용 Peek, 스크린샷 편집용 Flameshot을 설치해 개발 효율을 높였다.

🤖 TurtleBot4와 네트워크 연결 (Discovery Server)

교육장에는 수많은 로봇이 있기에, 내 PC가 우리 팀 로봇만 정확히 제어할 수 있도록 Discovery Server를 구성했다.

  • 네트워크 분리: 공유기를 허브로 PC와 로봇(Raspberry Pi)을 동일 Wi-Fi 대역으로 묶어 DDS 통신을 안정화했다.

  • 고유 ID 부여: 팀별 ROS_DOMAIN_ID를 설정해 통신 채널을 완벽하게 격리했다.

💡 로봇의 상태 확인 (LED)

TurtleBot4 상단의 5개 LED(MTR, Comm, WiFi/Battery, Power)가 모두 초록색인지 확인하자. 하나라도 꺼져 있다면 모터 전원, 네트워크 연결, 배터리 상태 등 해당 항목에 문제가 있다는 신호다.

🚀 첫 주행과 커스텀 패키지

/cmd_vel 토픽을 활용한 키보드 제어부터 Action 통신을 이용한 거리/각도 기반 주행까지 성공했다. 마지막에는 turtlebot4_beep라는 커스텀 패키지를 빌드하며 ROS2 노드 구성 방식을 익혔다. 첫날은 실수로 Ctrl+C를 눌러 세팅이 꼬이는 바람에 밤 10시까지 고군분투했지만, 덕분에 환경 세팅의 중요성을 뼈저리게 배울 수 있었다.
2. 2일차: 로봇에게 눈을 달아주다 (Depth 카메라)

2일차에는 로봇이 주변 환경을 인지하게 만드는 '시각' 기술을 배웠다. 우리 팀의 첫 프로젝트 주제인 'SLAM 기반 자율주행'의 핵심인 Depth(깊이) 카메라를 다루는 날이었다.
👁️ 시차(Disparity)의 원리

로봇이 거리를 인식하는 핵심은 스테레오 카메라(OAK-D)이다. 두 개의 렌즈에 찍힌 물체의 '위치 차이(시차)'가 클수록 가까운 물체이고, 차이가 작을수록 먼 물체라는 원리를 통해 거리를 역산한다.
🛠️ 실전: Depth 데이터 추출

기본적으로 TurtleBot4는 대역폭 보호를 위해 Depth 데이터를 전송하지 않는다.

  • 드라이버 수정: 로봇 내부 SSH에 접속해 oakd_pro.yaml 파라미터를 수정하여 RGBD 모드를 활성화했다.

  • 토픽 확인: ros2 topic list를 통해 /oakd/stereo/image_raw와 같은 깊이 관련 토픽들이 발행되는 것을 확인했다.

  • 노드 구현 (rokey_pjt): * depth_checker: 카메라 영상에서 실시간으로 거리 값을 출력하는 노드.

  • depth_checker_click: 특정 픽셀을 마우스로 클릭해 해당 지점의 거리를 측정하는 노드.

💡 2일차의 성과
단순히 화면을 보는 것을 넘어, "내 앞 0.5m에 장애물이 있다"는 수치 데이터를 직접 추출했다. 로봇 자율주행의 가장 기초적이면서도 필수적인 데이터를 손에 넣은 것이다.

📝 2일차를 마치며

어제 ROS2 세팅에서 고생한 보람이 있었는지, 오늘은 빌드(colcon build) 성공 메시지가 유독 반가웠다. oakd_pro.yaml 설정 오타로 드라이버가 로드되지 않아 헤매기도 했지만, 결국 로봇 뷰어에 정확한 거리 값이 찍히는 것을 확인했을 때의 쾌감은 이루 말할 수 없었다.

이제 로봇이 세상을 수치로 인식할 수 있게 되었으니, 내일은 이 재료들을 활용해 본격적인 지도 작성(Mapping)에 도전할 예정이다. 3일차는 또 얼마나 흥미로울지 기대된다! 🚀

0개의 댓글