[ROS2] ROS2 기초공부를 위한 과정

mseokq23·2025년 1월 18일

Ridiculous ROS2

목록 보기
1/3

ROS2 개념이해

1. Publisher / Subscriber / Service / Action / Parameter

  • Pub/Sub 구조를 이해하고, 간단한 토픽 예제(토크/리스너)에서 메시지를 주고받기
  • 서비스와 액션(예: 목표 위치 요청, 장시간 걸리는 작업 명령)을 통해 로봇과 상호작용하는 방식을 익히기.

2. tf2 (Transform 프레임)

  • 로봇의 각 부위(바퀴, 센서 등) 간 좌표계를 어떻게 관리하는지 이해하기.

TurtleBot3 예제에는 odom, base_link, camera_link 등 다양한 프레임 변환이 있음 => 이를 통해 만들어진 프레임들 사용해볼 것임.

3. ROS 2 Tools

  • rqt_graph, rqt_tf_tree, rqt_topic, ros2 topic echo/list/info, ros2 node list/info 등 다양한 도구 사용법을 익히기.

디버깅과 시스템 구조 파악이 메인이 될것임.

ROS 2 워크스페이스와 패키지 관리

1. colcon 빌드 시스템 이해

  • colcon build, colcon test 등을 사용해 직접 만든 패키지를 빌드/설치/실행하는 과정

2. Custom Package 작성

  • Python으로 노드를 직접제작(C++도 일부 사용예정).

센서 값을 토픽으로 퍼블리시, 해당 토픽을 구독해 알고리즘을 수행해 결과를 반환하는 작은 예제.

3. 의존성 관리

package.xml과 CMakeLists.txt(C++ 시) 혹은 setup.py(Python 시)에서 의존성 패키지 추가/관리하는 과정을 학습.

로봇 모델링(URDF/xacro)

1. URDF/xacro

  • 실제 로봇(또는 가상의 로봇)을 모델링하기 위해 URDF(혹은 xacro) 파일을 작성하는 방법 이해.

링크(link), 조인트(joint), 센서(sensor) 등 구성 요소를 어떻게 정의하는지 파악해야함.

2. RViz와 결합

  • 작성한 URDF를 RViz에서 시각화해보는 과정.

TF 프레임을 확인하고, 모델이 올바르게 동작/표시되는지 면밀하게 검토해야함.

로봇 시뮬레이션 심화

1. Gazebo 플러그인

센서 플러그인(카메라, LIDAR 등)이나 physics 설정이 어떻게 구성되는지 학습.

로봇에 적절한 컨트롤러(ex. DiffDriveController)를 적용하는 법 중요.

2. Spawn Scripts

직접 만든 URDF/SDF 모델을 Gazebo 안에 스폰하는 과정을 자동화(launch 파일)해봐야함.

자율주행 / 내비게이션(Navigation2)

1. Navigation2 기본 이해

TurtleBot3로 SLAM(지도 작성) + 내비게이션(맵 기반 경로 계획) 예제 테스트.

ros2 launch turtlebot3_bringup turtlebot3_robot.launch.py
(# 실물 로봇 시나리오)
ros2 launch turtlebot3_navigation2 navigation2.launch.py
(# 시뮬레이션 시나리오)

2. SLAM

2D SLAM(Gmapping, Hector, Cartographer 등) 또는 3D SLAM(RTAB-Map 등)을 학습해, 로봇이 환경 지도를 스스로 작성하고 이동할 수 있도록 테스트.

3. Nav2 구성 요소

Planner(Server), Controller(Server), Behavior Tree, AMCL(오도메트리+레이저로 자기 위치 추정) 등의 개념을 익히면 자율주행 구현과정에서 사용됨.

컴퓨터 비전 / AI 연동

1. ROS 2 Image Pipeline

카메라(가상 또는 실제에서 가져올 수 있음 => 우리는 가상에서 가져와서 시뮬레이션 해볼 것임)에서 토픽으로 이미지를 받아오는 법을 공부.

image_transport, camera_info_manager, cv_bridge 등을 사용해 OpenCV와 결합.

2. 객체 인식 / AI

더 나아가서 딥러닝 기반 객체 인식 패키지(YOLO, OpenVINO 등)와 ROS 2를 결합하여 공부.

Movelt 2 (Robot Manipulation)

로봇팔인데 관심없지만 혹시나 하려는 사람을 위해..

1. MoveIt 2 설치

MoveIt 2는 로봇 팔 경로 계획, IK(역기구학), 충돌 검사 등을 도와주는 프레임워크

2. URDF 확장

로봇 팔 관절 정의(연결 구조, 관절 범위, 관절 타입)

3. Planning Scene / RViz

MoveIt 2와 함께 RViz에서 매니퓰레이터 경로를 시뮬레이션해보고, Gazebo에서 충돌 없이 동작시키는 연습.

이렇게 공부하시면 될듯합니다.

참조 https://moveit.ros.org
https://moveit.picknik.ai/main/index.html
GitHub: https://github.com/ros-planning/moveit2

만약 실제 로봇제작으로 넘어가려면..

실제 하드웨어 인터페이스를 사용하기 위해

  • 모터 컨트롤러, 센서 드라이버, 시리얼통신 (UART, CAN, SPI, I2C, EtherCAT 사용가능)으로 ROS2로 데이터를 가져오는 과정을 학습해야함.

모터 컨트롤을 진행하기 위해

  • 실제 로봇에서 모터제어를 추상화하는 "ros2_control" 프레임워크 사용

네트워크 / DDS

  • 로봇이 무선으로 개발환경의 PC 와 통신하기 위해 QoS Setting, RTPS/UDP 통신/이슈 확인

참조

https://docs.ros.org/en/foxy (foxy를 한다면.)
https://docs.ros.org/en/humble (현재 LTS에서 주력버전)

https://docs.ros.org/en/foxy/Tutorials.html

https://wiki.ros.org/ROS2(ROS1의 자료가 대부분이긴 하나, ROS2의 자료도 일부있음)

http://gazebosim.org/tutorials (gazebo11 gazebo classic 문서)
https://ignitionrobotics.org (최신버전의 gazebo rename)

http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ (TurtleBot3 모델 정보, 하드웨어, 펌웨어, ROS 1/2 패키지 사용법, SLAM 및 Navigation 예제 등이 상세히 설명)
https://github.com/ROBOTIS-GIT/turtlebot3

https://navigation.ros.org/ ( Nav2 공식문서=> Nav2의 구조(Planner, Controller, BT, AMCL 등), 튜토리얼, 구성 예시)
https://github.com/SteveMacenski/slam_toolbox (2D Slam)

추천 커뮤니티- ROS Korea Users 그룹

https://cafe.naver.com/openrt

추천 추가자료 -

TF2(Transform) 튜토리얼

https://docs.ros.org/en/foxy/Tutorials/Intermediate/Tf2/Tf2-Main.html
로봇 각 부위의 좌표계를 어떻게 관리하는지 설명.
URDF/xacro 문서

https://wiki.ros.org/urdf (ROS 1 위주지만, ROS 2와 거의 동일)
https://wiki.ros.org/xacro
로봇 모델 파일 작성의 기본 개념을 익히기 좋음.

권장 학습 방법

공식 튜토리얼 + e-Manual를 기반으로 기본 개념을 빠르게 훑기
예제(패키지 생성, URDF, TurtleBot3, Navigation2)를 직접 실행하고, 소스코드를 열어보며 구조 이해
커뮤니티 Q&A 활용
필요 시 깃허브에서 비슷한 프로젝트를 검색해보고 참조(“ros2 + gazebo + 키워드 등 검색)

0개의 댓글