ROS 2 에서 CMakeLists.txt 이해하기

1. CMakeLists.txt란? CMakeLists.txt는 ROS 2 패키지를 빌드할 때 사용하는 설정 파일입니다. 쉽게 말하면 다음 역할을 합니다. ROS 2 Humble에서는 보통 colcon build 명령으로 워크스페이스를 빌드합니다. 이때 C++ 패키지나 인터페이스 패키지의 CMakeLists.txt를 읽어서 빌드 규칙을 처리합니다. 2. Python 패키지는 보통 CMakeLists.txt를 사용하지 않는다 ROS 2에서 Python 패키지는 보통 ament_python 빌드 타입을 사용합니다. 예를 들어 my_first_package가 Python … Read more

ROS 2 Python 패키지의 setup.py 이해하기

ROS 2에서 Python 패키지를 만들면 거의 항상 setup.py 파일이 함께 생성됩니다. 처음 보면 단순한 설정 파일처럼 보이지만, 실제로는 Python 코드를 ROS 2 패키지로 설치하고, ros2 run 명령으로 실행 가능하게 만드는 핵심 파일입니다. 실습 환경은 다음과 같습니다. 여기서 setup.py는 Python 패키지인 my_first_package에서 사용하는 파일입니다. my_cpp_package는 C++ 패키지이므로 CMakeLists.txt를 중심으로 빌드합니다.my_first_package_msgs는 메시지, 서비스, 액션 같은 인터페이스를 정의하는 패키지입니다. … Read more

ROS 2 package.xml 이해하기 : Python 패키지와 C++ 패키지 기준

ROS 2에서 package.xml은 패키지의 신분증입니다. 노드가 실제로 어떻게 빌드되는지는 C++ 패키지에서는 CMakeLists.txt, Python 패키지에서는 setup.py가 담당합니다. 하지만 이 패키지가 어떤 이름을 가지는지, 어떤 의존성을 사용하는지, 어떤 빌드 방식을 쓰는지는 package.xml이 설명합니다. 1. package.xml이 하는 일 package.xml은 ROS 2 패키지의 메타데이터를 담는 파일입니다. 주요 역할은 다음과 같습니다.                   … Read more

C++ ROS 2 패키지 생성하기

1. 개요 이번 실습에서는 ROS 2 Humble 환경에서 C++ 패키지를 생성하고, Publisher 노드와 Subscriber 노드를 작성한 뒤 빌드하고 실행하는 과정을 진행합니다. 이번 실습에서 사용할 패키지 이름은 다음과 같습니다. 실습 목표는 다음과 같습니다. 2. 실습 환경 이 글은 다음 환경을 기준으로 합니다. ROS 2 Humble 환경을 불러옵니다. 3. C++ ROS 2 패키지 생성 src 폴더로 이동합니다. … Read more

ROS 2 개발자를 위한 C/C++ 기초강의 #2

1. C++ 자료형 1) auto auto는 컴파일러가 자료형을 자동으로 추론하게 합니다. 다만 초보 단계에서는 자료형을 명확히 쓰는 것이 좋습니다. ROS 2 코드에서는 반복자, 람다, 복잡한 타입을 다룰 때 auto를 자주 사용합니다. 2. 비교 연산자 조건문에서 자주 사용하는 비교 연산자입니다.                     연산자            … Read more

VS Code 원격 개발 환경

1. 왜 ROS 2 강의에서 VS Code 원격 개발이 중요한가? ROS 2 개발은 보통 일반적인 웹 개발보다 개발 환경이 복잡합니다.Ubuntu 버전, ROS 2 배포판, Python 패키지, C++ 빌드 도구, colcon, rosdep, DDS 설정, 시리얼 장치, 카메라, 라이다, Pixhawk, Jetson 같은 하드웨어까지 함께 다뤄야 합니다. 초보자가 가장 많이 막히는 부분은 코드 자체가 아니라 개발 환경 차이입니다. 예를 … Read more

ROS 2 Humble rqt Plugins 정리 #3

1. ROS 2 Humble rqt 기본 플러그인 전체 목록 ros-humble-rqt-common-plugins 메타패키지는 여러 rqt 플러그인 패키지를 한 번에 설치해 주는 묶음입니다. 해당 메타패키지에는 rqt_action, rqt_bag, rqt_console, rqt_graph, rqt_image_view, rqt_msg, rqt_plot, rqt_publisher, rqt_reconfigure, rqt_service_caller, rqt_shell, rqt_srv, rqt_topic 등이 포함됩니다. 대표 메뉴 구조는 다음과 같이 이해하면 됩니다.                       … Read more

로봇 개발자를 위한 Python 기초 교육 #2

1. 변수와 자료형 Python은 변수를 선언할 때 자료형을 따로 적지 않습니다. 각 변수의 자료형은 값에 따라 자동으로 정해집니다. 로봇 개발에서 자주 쓰는 기본 자료형은 다음과 같습니다.         자료형                                                  … Read more

ROS 2 디버깅과 관찰 도구: 로그, rqt_console, rqt_graph, rqt_plot 실습 정리 #2

11. rqt 도구를 왜 써야 하는가 ROS 2는 노드, 토픽, 서비스, 액션이 복잡하게 얽힙니다.CLI 명령만으로도 확인은 가능하지만, 구조를 빠르게 이해하기에는 GUI 도구가 훨씬 편합니다. 예를 들어 CLI에서는 다음처럼 확인합니다. 하지만 rqt_graph를 사용하면 노드와 토픽 관계를 그림으로 볼 수 있습니다. 이것을 한눈에 확인할 수 있습니다. 12. rqt_graph로 노드와 토픽 관계 확인 rqt_graph는 ROS 2 시스템의 노드와 토픽 … Read more

ROS 2 디버깅과 관찰 도구: 로그, rqt_console, rqt_graph, rqt_plot 실습 정리 #1

1. 이번 실습의 목적 ROS 2에서 노드를 개발하다 보면 단순히 코드가 실행되는지만 보는 것으로는 부족합니다. 노드가 어떤 토픽을 발행하는지, 어떤 노드와 연결되어 있는지, 내부 상태가 어떻게 변하는지 확인해야 합니다. 이번 글에서는 ROS 2에서 자주 사용하는 디버깅 도구인 다음 항목을 다룹니다. 실습 환경은 turtlesim, 사용자 정의 액션 서버, 그리고 rqt 도구를 기준으로 구성합니다. 2. rqt 관련 … Read more