## 0.1 명령줄 매개변수 파싱 규칙 및 동적 이름 재매핑 메커니즘
ROS2 프레임워크는 소스 코드의 재컴파일(Re-compilation) 없이 로봇 시스템의 노드 토폴로지(Node Topology)와 통신 인터페이스를 동적으로 재구성할 수 있는 강력한 런타임 추상화 메커니즘을 제공한다. 이 메커니즘의 핵심은 컴포넌트 구동 시 운영체제로부터 전달되는 명령줄 매개변수(Command Line Arguments)를 해석하는 파싱 룰(Parsing Rule)과, 컴파일 타임에 결정된 식별자를 런타임에 치환하는 동적 이름 재매핑(Dynamic Name Remapping) 기술이다.
0.1.1 ROS2 전용 매개변수 파싱 규칙 (The --ros-args 토큰)
rclcpp::init(argc, argv) 또는 rclpy.init(args=sys.argv)가 호출될 때, RCL 계층 내부의 파서는 가장 먼저 --ros-args라는 특수 토큰(Token)의 존재 여부를 స్캔한다. ROS2는 애플리케이션 개발자가 정의한 고유의 일반 프로세스 인자와 프레임워크가 필요로 하는 시스템 인자를 엄격히 분리하기 위해 이 토큰을 파싱 경계(Boundary)로 사용한다.
--ros-args 이후에 등장하는 플래그들은 차례대로 RCL 내부 설정 객체로 흡수되며, 파싱이 완료된 이후 애플리케이션 공간으로 반환되는 인자 목록에서는 이 프레임워크 전용 토큰들이 완전히 소거(Strip)된다. 이러한 파싱 격리 정책은 레거시 라이브러리(예: OpenCV, GStreamer 등)가 자체적인 매개변수 파서를 동작시킬 때 발생할 수 있는 식별자 충돌(Flag Collision)을 원천적으로 차단하는 설계 패턴이다.
0.1.2 동적 이름 재매핑(Name Remapping)의 학술적 의미
로보틱스 소프트웨어 공학에서 코드 캡슐화(Encapsulation)를 달성하기 위해 가장 중요한 요소 중 하나는 노드가 퍼블리시하거나 서브스크라이브하는 주제(Topic), 서비스(Service)의 물리적 이름에 종속되지 않는 것이다. 이름 재매핑 메커니즘은 로직 코드 상에 하드 코딩(Hard-coding)된 /cmd_vel 또는 /camera/image_raw와 같은 식별자를 런타임에 명령줄 인스턴스화를 통해 다른 이름(예: /drone_1/cmd_vel)으로 동적 할당할 수 있도록 지원한다.
명령줄 체계에서 이는 -r (Remap) 플래그 또는 : 기호를 사용하여 구문적으로 표현된다. 예를 들어, --ros-args -r /old_topic:=/new_topic과 같이 주입된다. RCL 파서는 이 키-값 페어(Key-Value Pair)를 시스템의 노드 생성자(Node Constructor)로 전달하고, 노드는 RMW 통신망을 개방하기 전에 재매핑 딕셔너리를 탐색하여 매칭되는 모든 토픽 및 서비스 식별자를 런타임에 치환 연산한다.
0.1.3 네임스페이스(Namespace) 주입 및 노드명 오버라이딩
단순한 토픽 단위의 치환을 넘어, 동일한 노드 바이너리를 다수의 객체로 스폰(Spawn)해야 하는 군집 드론 시뮬레이션 환경에서는 프로세스 수준의 네임스페이스 주입 메커니즘이 필수적이다. 파서는 --ros-args -r __ns:=/uav_swarm_1과 같은 구문을 통해 노드가 속하는 글로벌 네임스페이스 구조를 런타임에 재정의할 수 있으며, -r __node:=flight_controller_b와 같은 문법을 사용하여 노드의 물리적 식별 체계를 즉각적으로 오버라이딩(Overriding)한다. 이는 ROS2 아키텍처가 지향하는 소프트웨어 컴포넌트의 다형성과 인스턴스 복제(Instance Duplication)의 기초를 제공하며, 유연한 시스템 통합 테스트(SITL, Software In The Loop)를 구현하게 하는 중추적 엔진 역할을 수행한다.