라인메탈, 무기체계 연동 'Battlesuite' 프로토콜 문서 공개… 소스와 라이브러리는 비공개
- 독일 방산업체 라인메탈이 Battlesuite 연동 무기체계 프로토콜 문서를 GitHub Pages에 공개함. onboardapi 9.10.0 버전이고 DDS 기반임.
- 저장소에는 소스가 없고 문서만 있음. 데이터 모델은 ddkit 프레임워크 기반 .rmodel 형식이고 문서용일 뿐 실제 통신 계층 인터페이스와 다르며, 제공 라이브러리 없이는 통신 자체가 불가능함.
- 해커뉴스에서는 '미사일용 ROS2'라는 평과 TMS(MIL-STD-3071)와 유사하다는 지적이 나옴. DDS가 군사 영역에서 CORBA를 대체했고 그 뿌리가 1998년까지 거슬러 올라간다는 댓글이 붙음.
- 동적 메모리 할당이 없는 임베디드 시스템에는 DDS가 너무 무겁다는 문제가 제기됐고, PX4가 DDS에서 착안한 in-memory pub/sub을 내부 데이터 버스로 쓴다는 답변이 달림.
Hacker News opinions
처음엔 흥미진진했는데 DDS 기반이라는 걸 보고 좀 식었음.
DDS가 왜? 이런 용도엔 딱 맞는 조합 같은데.
밀테크를 잘 몰라서 그런가, 다른 프로토콜이 수십 년 전부터 제공하던 메시징 프리미티브를 대부분 다시 만드는 것처럼 보임.
밀리터리 회사는 다 자기만의 걸 만듦. '오픈 시스템'도 사실 열려 있지 않고. 적국이 시스템을 쉽게 이해하면 곤란하니 은폐성 자체가 매력임.
DDS는 군사 분야에서 CORBA를 대체했고, 정적 타입 IDL이 그때랑 비슷해서 1998년 CORBA 시절로 돌아간 기분임. 하드 리얼타임에 safety-critical까지 되는 다른 프로토콜이 뭐가 있냐?
TMS(MIL-STD-3071)랑 비슷해 보이는데 TMS도 DDS를 씀. 동적 메모리 할당 없이 임베디드에서 실시간을 보장하는 프로토콜이 있었으면 좋겠음. DDS는 임베디드에 올리기엔 너무 무거움.
메모리 풀을 쓰는 DDS 구현이면 대부분 커버될 것 같음. PX4는 DDS에서 착안한 in-memory pub/sub을 내부 데이터 버스로 씀.
미사일용 ROS2 같음.
근데 아무것도 오픈소스 안 했음. github.com/rheinmetall 봐도 문서만 있더라. 뭐 하려는 건지 모르겠음.
IDL 파일은 있는데 그들 라이브러리 없이는 못 씀. .rmodel은 문서용이고 실제 통신 계층 인터페이스랑 다르다고 명시돼 있음. 통신은 제공 라이브러리로만 가능함.
C++ 예제 열자마자 std::endl이 보임. std::endl은 즉시 flush를 강제해서 성능이 나빠지는데, 무기가 자폭해서 비정상 종료될 때 버퍼 flush를 피하려는 의도인가?
그건 좀 사소한 트집인 듯. 2000년대 튜토리얼이 다 std::endl을 썼으니 그렇게 배운 거임. 디버그 출력 성능을 신경 쓸 리가 없고.
한동안은 std::endl을 써야 진짜 C++ 프로그래머로 인정받았음. C++이 이긴 다음에야 <span> </span>이 다시 허용됨.