우분투22.04 또는 2025년 6월부터 공식 기본은 더 이상 ROS1을 업그레이드 지원하지 않으며, 새로운 프로젝트 개발이 ROS2를 직접 사용하는 것이 권장되지만 기존 자원과 장기적인 이익 간의 절충을 위해 마이그레이션해야 하는 경우 아키텍처, 실시간, 보안 및 에코 확장성에서 ROS1보다 훨씬 우수한 ROS2 시스템 사용을 권장합니다. 자세한 우분투 버전 지원 관계는 링크를 참조하세요. [ROS와 우분투의 다른 버전 관계] 를 통해 두 프레임워크를 비교하여 분석합니다:
| ROS 2 버전 | 우분투 버전 | LTS 여부 | 출시 시간 |
| 재즈 | 24.04 (노블) | 예(LTS) | 2024 |
| Kilted | 24.04(고귀한) | 아니요 | 2025-05 |
역사 및 개발
- ROS1: 스탠포드 대학교와 윌로우 개러지가 연구 및 프로토타입 제작에 중점을 두고 개발했습니다.
- ROS2: 2014년에 시작되어 실시간 기능, 크로스 플랫폼 지원 및 보안을 개선하기 위해 DDS 미들웨어를 사용하는 산업용 로봇을 대상으로 합니다.
결론: ROS1은 연구 및 프로토타입 제작에 더 적합하며, ROS2는 산업 및 상업적 배포에 이상적입니다.
2. 시스템 아키텍처
| 차원 | ROS1 | ROS2 |
| 핵심 아키텍처 | 중앙 집중식 아키텍처를 채택하여 마스터 노드(노드 관리자)에 의존하여 노드 등록 및 통신을 수행합니다. | 분산 아키텍처, 노드 간 직접 통신, 마스터가 필요 없는 동적 검색 메커니즘을 지원합니다. |
| 커뮤니케이션 모델 | 지연, 패킷 손실, 암호화 불가 등의 문제가 있는 TCP/UDP 프로토콜 기반의 맞춤형 통신 시스템입니다. | 실시간, 암호화 및 플랫폼 간 상호 작용을 지원하는 DDS 기반의 표준화된 통신 프로토콜입니다. |
| 신뢰성 | P2P 통신을 위해 TCP에 의존하며 패킷 손실이 발생하기 쉽습니다. | QoS 정책(예: 안정적)에 의해 안정적인 전송이 보장됩니다. |
| 편집 시스템 | 로즈빌드(초기) 및 캣킨 컴파일 시스템을 사용합니다. | 보다 유연한 종속성 관리 및 다국어 빌드를 지원하기 위해 어먼트 컴파일 시스템을 도입했습니다. |
3. 사용자 경험
| 차원 | ROS1 | ROS2 |
| 학습 곡선 | 시작하기에 적합한 풍부한 커뮤니티 리소스와 성숙한 문서가 준비되어 있습니다. | 새로운 기능은 학습 비용(예: DDS 구성, 실시간 디버깅)을 증가시키지만 장기적으로는 유지 관리가 더 쉽습니다. |
| 마이그레이션 비용 | ROS 1 프로젝트는 ROS 2로 마이그레이션하기 위해 통신 로직, 노드 관리 및 컴파일 시스템을 리팩터링해야 합니다. | 마이그레이션 도구(예: ros1_bridge)를 사용하여 ROS 1과 ROS 2 노드 간에 상호 운용할 수 있습니다. |
| 디버깅 및 툴체인 | 로즈런치나 rviz와 같은 도구에 의존하는 디버깅 프로세스는 좀 더 전통적인 방식입니다. | 새로운 런치 프레임워크(파이썬 구성 지원), 내장 로깅 시스템 및 향상된 테스트 도구. |
| 커뮤니티 및 생태학 | 에코시스템의 규모는 크지만 아키텍처의 한계로 인해 일부 기능을 확장하기 어려운 경우도 있습니다. | 새로운 기능을 더 쉽게 통합할 수 있으며(예: Gazebo 및 웹 기술과의 긴밀한 통합), 에코시스템이 계속 확장되고 있습니다. |
4. 주요 기술 비교
| 차원 | ROS1 | ROS2 |
| 노드 통신 | 피어 투 피어 통신은 마스터 등록을 통해 설정됩니다. | 노드는 DDS를 통해 자동으로 서로를 발견하고 직접 통신합니다. |
| 메시징 | 사용자 지정 메시지 유형(.msg)을 사용하며, 로스켑/로스파이 구현에 의존합니다. | 호환성 향상을 위해 IDL(인터페이스 정의 언어)을 기반으로 다국어 메시지를 생성하세요. |
| 내결함성 | 마스터 장애로 인해 전체 시스템이 다운될 수 있습니다. | 단일 장애 지점을 피하기 위한 분산 아키텍처로 노드가 동적으로 가입/탈퇴할 수 있습니다. |
5. 구문 차이점
| 차원 | ROS1 | ROS2 |
| 노드 생성 구문 | 노드를 관리하려면 ros::NodeHandle을 사용하고, 중앙 집중식 관리자를 시작하려면 roscore에 의존합니다. | rclcpp::Node 또는 rclpy::Node를 사용하면 로스코어 없이 직접 노드를 생성할 수 있으며 분산 아키텍처를 지원합니다. |
| 커뮤니케이션 메커니즘 | 통신을 위해 사용자 지정 TCP/UDP 프로토콜을 기반으로 하며, 노드 등록 및 검색을 수동으로 관리해야 합니다. | DDS(데이터 배포 서비스) 표준을 기반으로 노드가 자동으로 서로를 발견하고 통신합니다. |
| 메시지 정의 | .msg 파일을 사용하여 메시지 유형을 정의하고, 로스켑/로스피 구현에 의존합니다. | IDL(인터페이스 정의 언어)을 사용하여 다국어 메시지를 생성하면 호환성을 높일 수 있습니다. |
| 파일 실행 | XML을 사용하여 동적으로 구성하기 어려운 단일 함수인 .launch 파일을 작성합니다. | Python을 사용하여 .launch.py 파일을 작성하고 동적 로직(조건부 판단, 매개변수 전달 등)을 지원합니다. |
6. 실제 사용의 차이점
| 차원 | ROS1 | ROS2 |
| 다국어 지원 | 주로 C++와 Python을 지원하며, 다른 언어에 대한 조정이 필요합니다. | 추가 언어(예: Rust, Java)에 대한 확장 지원 및 IDL(인터페이스 정의 언어)을 통한 언어 간 호환성을 제공합니다. |
| 편집 시스템 | 작업 공간 구조를 엄격하게 준수해야 하는 캣킨 컴파일 시스템에 의존합니다. | 보다 유연한 종속성 관리 및 다국어 빌드를 위해 ament 빌드 시스템을 사용하세요. |
| 실시간 지원 | 실시간 성능이 좋지 않아 산업용 실시간 제어의 요구 사항을 충족하기 어렵습니다. | 실시간 시스템에 대한 지원을 개선합니다(예: ROS 2의 rclcpp는 실시간 스레드 스케줄링을 제공합니다). |
| 보안 | 기본 암호화 및 인증 메커니즘이 부족합니다. | 인증, 데이터 암호화 및 액세스 제어를 제공하기 위해 DDS 보안 확장 기능(DDS-Security)을 지원합니다. |
| 크로스 플랫폼 지원 | 주로 Linux 시스템에서 실행되며 Windows/macOS 지원은 제한적입니다. | Linux, Windows, macOS, RTOS 등 다양한 플랫폼을 지원하며, Tier 1(공식 정부에서 적극 지원)과 Tier 2(커뮤니티에서 지원)로 플랫폼을 명확히 구분하여 시스템 간 호환성을 강화합니다. |
| 디버깅 도구 | 로깅 시스템은 로즈런치 및 rviz와 같은 기존 도구에 의존하여 비교적 기본적인 수준입니다. | 내장 로깅 시스템(예: RCLCPP_INFO), Python 스크립트 지원 및 더 나은 테스트 도구를 제공합니다. |
| 내결함성 | 로스코어 오류가 발생하면 전체 시스템이 다운될 수 있습니다. | 단일 장애 지점을 피하기 위한 분산 아키텍처로 노드가 동적으로 가입/탈퇴할 수 있습니다. |
7. 일반적인 애플리케이션 시나리오
- ROS 1: 교육, 연구 프로젝트(예: 모바일 로봇 내비게이션, SLAM), 높은 수준의 실시간 및 보안이 필요하지 않은 시나리오. 프로젝트가 성숙하고 실시간, 보안 또는 크로스 플랫폼 기능이 필요하지 않으며 많은 수의 ROS 1 생태 리소스에 의존하는 경우 ROS 1을 계속 사용하세요.
- ROS 2: 산업 자동화, 자율 주행, 드론 및 높은 수준의 실시간, 보안 및 크로스 플랫폼 지원이 필요한 기타 시나리오와 대규모 프로젝트의 장기 유지 관리(예:, 배달 로봇, 산업용 로봇의료 로봇). 산업 등급의 안정성, 실시간 제어, 보안 암호화 또는 크로스 플랫폼 배포가 필요한 프로젝트는 ROS 2를 선호합니다.
8. 하드웨어 및 플랫폼 호환성
- ROS1: 주로 Linux(우분투)를 지원합니다.
- ROS2: 기본적으로 Linux, Windows, macOS 및 임베디드 플랫폼을 지원합니다.
9. 에코시스템 및 커뮤니티 지원
- ROS1: 많은 수의 패키지와 활발한 커뮤니티.
- ROS2: 빠르게 성장하는 에코시스템이지만 패키지 수는 여전히 따라잡지 못하고 있습니다.
결론: ROS1은 성숙한 생태계를 가지고 있는 반면, ROS2는 빠르게 따라잡고 있습니다.
10. 마이그레이션 및 업그레이드 비용
- API가 호환되지 않아 코드를 다시 작성해야 합니다.
- 드라이버는 적응이 필요할 수 있으며, ros1_bridge는 점진적인 마이그레이션에 도움을 줄 수 있습니다.
결론: 마이그레이션 비용은 상당하지만 단계적 업그레이드를 통해 위험을 줄일 수 있습니다.
11. 보안 및 산업 표준
- ROS1: 기본 보안 메커니즘이 없습니다.
- ROS2: DDS 보안 표준을 준수하며 OPC UA 및 TSN을 통합할 수 있습니다.
결론: ROS2는 보안이 중요한 산업용 애플리케이션에 더 적합합니다.
향후 트렌드 및 로드맵
- ROS1노에틱은 2025년까지 유지되는 최종 릴리스입니다.
- ROS2는 활발한 기능 업데이트를 통해 장기 지원(LTS) 전략을 따릅니다.
결론: 추세는 분명히 ROS2를 선호합니다.
결론 및 권장 사항
For 연구자 또는 초보자ROS1은 여전히 성숙하고 안정적인 선택입니다. 산업 사용자 또는 상업 팀, 분산 시스템, 실시간 성능 및 보안에 있어 ROS2의 장점은 장기적인 가치를 제공합니다.
실행 가능한 조언: 프로젝트 계획 초기에 ROS 버전을 평가하고 에코시스템 성숙도와 팀 역량에 따라 결정을 내리세요.
