나만의 Gazebo World와 로봇으로 TurtleBot3 SLAM·Nav2 실행하기

1. 프로젝트 소개 이번 실습에서는 학생이 직접 Gazebo World를 설계하고, 자신이 만든 차동구동 모바일 로봇 모델을 해당 World에 배치합니다. 로봇에는 다음 기능을 적용합니다. Gazebo에서 계산된 LiDAR 데이터를 ROS 2의 /scan 토픽으로 사용하려면 Gazebo 센서와 ROS 2 메시지를 연결하는 플러그인이 필요합니다. 로봇 모델은 robot_state_publisher를 통해 TF를 발행하고, spawn_entity.py를 통해 Gazebo World에 생성합니다. 프로젝트의 최종 실행 구조는 … Read more

PM2와 tmux를 이용한 TurtleBot3 ROS 2 자동 실행 환경 구축 #1

Ubuntu 22.04 Server와 ROS 2 Humble을 사용하는 TurtleBot3 Burger는 일반적인 데스크톱 PC와 운영 방식이 다릅니다. 로봇에 모니터와 키보드를 연결하지 않고 원격 PC에서 SSH로 접속해 사용한다면 다음 기능이 필요합니다. tmux는 SSH 연결과 관계없이 터미널 세션을 유지하는 데 적합합니다. PM2는 프로세스 상태 확인, 자동 재시작, 로그 관리, 시스템 부팅 시 자동 실행을 담당합니다. 이 글에서는 다음 구조로 … Read more

Ubuntu 22.04 Server TurtleBot3 Burger를 tmux로 한 번에 실행하기 #3

21) stop 명령 처리 사용자가 다음과 같이 실행하면 이 부분이 실행됩니다. 먼저 session이 실행 중인지 확인합니다. session이 존재하면 다음 명령으로 전체 session을 종료합니다. TurtleBot3 session을 종료하면 그 안에서 실행 중이던 다음 프로그램도 함께 종료됩니다. 종료 후 다음 메시지를 출력합니다. 출력 예시는 다음과 같습니다. session이 존재하지 않는 경우에는 오류로 종료하지 않고 안내 메시지만 출력합니다. 22) restart … Read more

ROS 2 Humble TurtleBot3 Burger에서 실제 충전스테이션 파킹 알고리즘 방식의 ArUco 도킹 구현 #1

1. 실습 목표 이번 실습에서는 Ubuntu 22.04 Server가 설치된 TurtleBot3 Burger에서 ROS 2 Humble, Pi Camera 2, OpenCV ArUco를 사용하여 충전스테이션 파킹 알고리즘과 유사한 자동 도킹 노드를 구현합니다. 실제 충전스테이션 도킹은 보통 다음 순서로 동작합니다. 이번 글에서는 이 흐름을 ROS 2 노드로 구현합니다. 핵심은 단순한 “마커 추종”이 아니라 “상태머신 기반 충전스테이션 파킹 알고리즘”입니다. 2. 전체 … Read more

Gazebo World 제작 -장애물 World / Corridor World / Warehouse World 만들기 #2

10. Corridor World 제작 1) Corridor World의 목적 Corridor World는 좁은 복도에서 모바일로봇이 안정적으로 주행하는지 확인하기 위한 환경입니다. 2) Corridor 설계 소형 모바일로봇 실습에서는 다음 정도의 폭을 사용할 수 있습니다. 이번 예제의 벽 중심 간 거리는 2m이고 벽 두께는 0.2m입니다. 따라서 실제 내부 통로 폭은 약 1.8m입니다. 3) corridor_world.sdf worlds/corridor_world.sdf 파일을 만듭니다. 4) 소스설명 Corridor … Read more

Gazebo 각종 플러그인 적용하기

1. Gazebo Plugin이란? Gazebo 자체는 물리 시뮬레이터입니다. 그런데 ROS 2와 데이터를 주고받으려면 중간 연결 계층이 필요합니다. 이 역할을 하는 것이 Gazebo ROS Plugin입니다. 예를 들어 Gazebo 안에서 LiDAR가 빛을 쏘고 거리값을 계산하더라도, ROS 2에서 /scan 토픽으로 받으려면 Gazebo 센서 데이터를 ROS 2 메시지로 변환해 주는 플러그인이 필요합니다. Gazebo ROS 플러그인은 URDF 또는 SDF 내부에 XML 형태로 … Read more

Model Spawn, Gazebo와 RViz 연동

1. Model Spawn이란? Model Spawn은 Gazebo 시뮬레이션 월드 안에 로봇 모델을 동적으로 생성하는 작업입니다. 쉽게 말하면 다음과 같습니다. ROS 2에서 Gazebo Classic을 사용할 때는 보통 gazebo_ros spawn_entity.py를 사용하고, 최신 Gazebo Sim 계열에서는 ros_gz_sim create 또는 ros_gz_spawn_model.launch.py를 사용합니다. 2. 실습 목표 이번 실습의 최종 목표는 다음과 같습니다. 완성하면 다음 명령 하나로 Gazebo에 모바일 로봇을 띄울 수 … Read more

모바일 로봇 시뮬레이션에서 Friction과 Inertia 설정하기

1. 강의 목표 이번 글에서는 ROS 2 모바일 로봇 시뮬레이션에서 반드시 이해해야 하는 두 가지 물리 설정을 다룹니다. 2. 왜 Friction과 Inertia가 중요한가? ROS 2에서 로봇 모델을 만들 때 단순히 모양만 보이게 하는 것은 어렵지 않습니다. visual 태그만 있어도 RViz에서는 로봇이 그럴듯하게 보입니다. 하지만 Gazebo 같은 물리 시뮬레이터에서는 이야기가 다릅니다. Gazebo에서 로봇이 정상적으로 움직이려면 각 … Read more

HSV 색 공간이란?

HSV 색 공간은 색을 Hue(색상), Saturation(채도), Value(명도) 3가지 값으로 표현하는 색 모델입니다. RGB처럼 빨강·초록·파랑의 빛 세기로 색을 표현하는 방식이 아니라, 사람이 색을 인식하는 방식에 더 가깝게 색을 나눕니다. 특히 OpenCV, 로봇 비전, 드론 카메라 영상 처리에서 특정 색상 물체 검출에 많이 사용됩니다. 1. HSV의 구성 HSV는 다음 3개 성분으로 구성됩니다. 성분 의미 설명 H Hue … Read more

YOLO를 이용한 TurtleBot3 Burger 사람 추적

1. 실습 목표 이번 실습의 목표는 Pi Camera 2 영상 → ROS 2 이미지 토픽 → YOLO 객체 인식 → TurtleBot3 Burger 이동 제어까지 한 번에 연결하는 것입니다. 실습 결과는 다음과 같습니다. 사람이 카메라 앞에 서면 TurtleBot3 Burger가 YOLO로 person을 인식합니다.인식된 사람의 위치가 화면 중앙에서 벗어나면 로봇이 천천히 회전합니다.사람이 멀리 있으면 앞으로 조금 이동합니다.rqt에서는 YOLO … Read more