TurtleBot3 예제에는 odom, base_link, camera_link 등 다양한 프레임 변환이 있음 => 이를 통해 만들어진 프레임들 사용해볼 것임.
디버깅과 시스템 구조 파악이 메인이 될것임.
센서 값을 토픽으로 퍼블리시, 해당 토픽을 구독해 알고리즘을 수행해 결과를 반환하는 작은 예제.
package.xml과 CMakeLists.txt(C++ 시) 혹은 setup.py(Python 시)에서 의존성 패키지 추가/관리하는 과정을 학습.
링크(link), 조인트(joint), 센서(sensor) 등 구성 요소를 어떻게 정의하는지 파악해야함.
TF 프레임을 확인하고, 모델이 올바르게 동작/표시되는지 면밀하게 검토해야함.
센서 플러그인(카메라, LIDAR 등)이나 physics 설정이 어떻게 구성되는지 학습.
로봇에 적절한 컨트롤러(ex. DiffDriveController)를 적용하는 법 중요.
직접 만든 URDF/SDF 모델을 Gazebo 안에 스폰하는 과정을 자동화(launch 파일)해봐야함.
TurtleBot3로 SLAM(지도 작성) + 내비게이션(맵 기반 경로 계획) 예제 테스트.
ros2 launch turtlebot3_bringup turtlebot3_robot.launch.py
(# 실물 로봇 시나리오)
ros2 launch turtlebot3_navigation2 navigation2.launch.py
(# 시뮬레이션 시나리오)
2D SLAM(Gmapping, Hector, Cartographer 등) 또는 3D SLAM(RTAB-Map 등)을 학습해, 로봇이 환경 지도를 스스로 작성하고 이동할 수 있도록 테스트.
Planner(Server), Controller(Server), Behavior Tree, AMCL(오도메트리+레이저로 자기 위치 추정) 등의 개념을 익히면 자율주행 구현과정에서 사용됨.
카메라(가상 또는 실제에서 가져올 수 있음 => 우리는 가상에서 가져와서 시뮬레이션 해볼 것임)에서 토픽으로 이미지를 받아오는 법을 공부.
image_transport, camera_info_manager, cv_bridge 등을 사용해 OpenCV와 결합.
더 나아가서 딥러닝 기반 객체 인식 패키지(YOLO, OpenVINO 등)와 ROS 2를 결합하여 공부.
로봇팔인데 관심없지만 혹시나 하려는 사람을 위해..
MoveIt 2는 로봇 팔 경로 계획, IK(역기구학), 충돌 검사 등을 도와주는 프레임워크
로봇 팔 관절 정의(연결 구조, 관절 범위, 관절 타입)
MoveIt 2와 함께 RViz에서 매니퓰레이터 경로를 시뮬레이션해보고, Gazebo에서 충돌 없이 동작시키는 연습.
이렇게 공부하시면 될듯합니다.
참조 https://moveit.ros.org
https://moveit.picknik.ai/main/index.html
GitHub: https://github.com/ros-planning/moveit2
실제 하드웨어 인터페이스를 사용하기 위해
모터 컨트롤을 진행하기 위해
ros2_control" 프레임워크 사용네트워크 / DDS
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)
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 + 키워드 등 검색)