# 왜 ROS2인가?

#### ROS1의 한계와 ROS2의 필요성

기존의 ROS1은 로봇 개발 및 연구에 있어 광범위하게 사용되어 왔지만, 시간이 지나면서 여러 가지 기술적 한계가 드러나기 시작하였다. ROS1의 설계는 단일 시스템 및 소규모 로봇 프로젝트를 염두에 두고 만들어졌기 때문에, 대규모 시스템 및 다양한 요구 사항에 대응하기 어렵다는 문제가 있었다. ROS2는 이러한 한계를 극복하기 위해 개발된 프레임워크로, ROS1이 해결하지 못한 문제들을 해결하기 위해 설계되었다.

#### 분산 시스템 지원

ROS2는 분산 시스템 지원을 통해 다수의 Node(노드)들이 네트워크를 통해 상호 작용할 수 있도록 한다. 이는 ROS1에서는 매우 제한적이었거나 추가적인 설정이 필요했던 부분이다. DDS(Data Distribution Service) 기반의 ROS2는 네트워크 상의 다양한 장치와 시스템이 상호 통신할 수 있는 표준화된 방법을 제공한다. 이를 통해 ROS2는 대규모 로봇 시스템이나 분산 환경에서 더욱 유연하고 확장성 있는 솔루션을 제공한다.

#### 실시간 시스템 지원

ROS2는 실시간 처리를 위한 요구 사항을 충족하기 위해 설계되었다. ROS1에서는 실시간 요구 사항을 충족하는 것이 어려웠는데, 이는 주로 ROS1의 통신 레이어가 실시간 처리에 적합하지 않았기 때문이다. ROS2는 이러한 문제를 해결하기 위해 실시간 운영체제(RTOS)와의 통합을 고려한 설계를 채택하였고, 사용자들이 실시간 처리와 관련된 설정을 세밀하게 조정할 수 있도록 다양한 옵션을 제공한다.

#### 보안 기능 강화

로봇 시스템이 더욱 상용화되고 네트워크에 연결됨에 따라 보안의 중요성이 점차 커지고 있다. ROS1에서는 보안에 대한 고려가 미흡했지만, ROS2는 보안 기능을 기본적으로 포함하고 있다. DDS의 보안 확장을 통해 메시지의 인증, 암호화, 무결성 검사 등을 수행할 수 있으며, 이러한 기능들은 네트워크 상에서의 데이터 전송을 보다 안전하게 만들어준다.

#### 크로스 플랫폼 지원

ROS2는 다양한 운영체제와 플랫폼을 지원하도록 설계되었다. ROS1에서는 주로 리눅스 기반에서 사용되었지만, ROS2는 윈도우, macOS, 그리고 다양한 RTOS에서 동작할 수 있도록 설계되었다. 이러한 크로스 플랫폼 지원은 로봇 개발자들이 특정 플랫폼에 구애받지 않고 다양한 환경에서 ROS2를 활용할 수 있도록 한다.

#### 모듈화 및 유연한 아키텍처

ROS2는 모듈화된 아키텍처를 통해 사용자가 필요한 기능만 선택적으로 사용할 수 있도록 한다. ROS1에서는 대부분의 기능이 하나의 거대한 코드베이스에 포함되어 있었기 때문에, 특정 기능만을 사용하고자 할 때도 불필요한 코드가 함께 포함되는 경우가 많았다. ROS2에서는 이러한 문제를 해결하기 위해 각 기능을 독립적인 모듈로 분리하여, 필요에 따라 조합할 수 있는 유연한 구조를 제공한다.
