RTI Labs 및 Connext DDS with Python용 커넥터 소개
이번 이후로 많은 일이 일어났습니다. 원래 게시 된 게시물. 이제 Python 또는 Javascript를 사용하여 DDS에 액세스할 수 있다는 사실을 알고 계셨습니까? Connext
®
용 RTI 커넥터에 대한 수요를 높여준 RTI Labs 프로그램의 베타 테스터에게 감사드립니다. DDS는 이제 Connext 제품군의 일부로 제공됩니다.
이번 주에 우리는 산업용 IoT를 위해 개발 중인 신기술에 대한 조기 액세스를 고객에게 제공하는 무료 프로그램인 RTI Labs를 발표하게 된 것을 기쁘게 생각합니다. 우리는 그것들을 실험적 프로젝트라고 부릅니다. RTI Labs를 활용하는 고객은 실험 기능에 대한 피드백을 제공함으로써 차세대 기술을 활용하고 제품 로드맵에 영향을 미칠 수 있는 기회를 갖게 됩니다. 윈-윈 상황입니다!
3개의 새로운 실험 프로젝트와 함께 프로그램을 시작합니다. 첫 번째 프로젝트는 Connext DDS용 RTI(R) 커넥터입니다. 이미 RTI Connext 5.3.0을 다운로드하고 RTI Launcher를 시작한 경우 'Lab' 탭에 몇 가지 새로운 아이콘이 표시됩니다. 이 아이콘 중 하나는 커넥터용입니다.
커넥터 아이콘을 클릭하면 커뮤니티 포털의 RTI 커넥터 페이지로 이동합니다. 커넥터는 데모 생성 및 빠른 테스트를 돕기 위해 RTI의 연구 팀에서 개발했습니다. 커넥터는 RTI Prototyper에 대한 Lua 인터페이스로 시작한 후 Python 및 JavaScript/node.js와 같은 스크립팅 언어에 대한 지원을 추가했습니다.
하지만 RTI 커넥터란 무엇입니까?
Connext DDS용 RTI 커넥터는 JavaScript, Python 및 Lua를 비롯한 다양한 스크립팅 언어에서 RTI Connext DDS의 성능과 기능에 빠르고 쉽게 액세스할 수 있는 방법입니다. XML 앱 생성 및 동적 데이터를 포함하여 Connext DDS의 여러 강력한 기능을 기반으로 합니다.
이 블로그 게시물은 RTI 커넥터의 파이썬 인터페이스에 중점을 두고 있지만 대부분의 개념은 JavaScript/node.js 및 lua/prototyper에 쉽게 적용됩니다.
사용 사례
RTI 커넥터에 대한 많은 사용 사례가 있습니다. 얼리 어답터의 사용 사례는 다음과 같습니다.
- 테스트 : 종종 복잡한 분산 시스템을 개발할 때 일부 구성 요소가 준비되지 않을 수 있습니다. 이 경우 커넥터는 나중에 완료되거나 다른 그룹에서 완료될 DDS 구성 요소의 동작을 에뮬레이트하는 데 사용됩니다. 이렇게 하면 구성 요소를 개별적으로 테스트할 수 있습니다. 이는 분산된 팀에서 작업할 때나 테스트 전에 모든 구성 요소가 빌드될 때까지 기다리지 않으려는 경우에 유용합니다.
- 프로토타입: 소프트웨어 개발에서는 모든 세부 사항을 사용할 수 있기 전에 아이디어를 검증해야 하는 경우가 많습니다. Python과 같은 스크립팅 언어와 단순화된 DDS API를 사용하여 훨씬 적은 코드를 사용하여 데모 또는 개념 증명을 매우 간단하고 빠르게 개발할 수 있습니다.
- 사용자 인터페이스: 간단한 UI 개발(버튼과 간단한 트리거를 사용하여 DDS 데이터 시각화 또는 전송)이 정말 쉬워집니다. RTI 커넥터가 python QT와 같이 python에 사용할 수 있는 UI 기술과 쌍을 이루는 경우
- 통합: Python 및 기타 스크립팅 언어는 거대한 생태계와 함께 제공됩니다. 이 블로그가 작성될 당시 PyPl에는 112,439개의 패키지가 있었습니다. 무언가를 통합하려는 경우 도움이 될 python 패키지가 있을 수 있으며 이제 Connector를 사용하여 DDS에 대해 이야기할 수 있습니다!
- 귀하의 사용 사례: 포럼에서 RTI 커넥터를 다른 방식으로 사용하고 있는지 알려주세요!
RTI 시작하기
이 블로그 게시물에서는 여러분이 파이썬에 어느 정도 익숙하다고 가정합니다. RTI 커넥터는 python 3 및 <3에서 모두 작동합니다. 모든 주요 엔터프라이즈 시스템과 Raspberry Pi와 같은 보드에서도 지원됩니다. 여기에서 사용 가능한 플랫폼 목록을 볼 수 있습니다. 다른 것에 대한 지원이 필요하면 주저하지 말고 포럼에 문의하십시오. Python에 Connext DDS용 RTI 커넥터를 설치하려면 PyPI에서 제공되는 패키지를 사용할 수 있습니다.
pip 설치 rticonnextdds_connector
다른 방법은 저장소를 복제하는 것입니다.
자식 복제 https://github.com/rticommunity/rticonnextdds-connector.git
저장소에서 시작하는 데 도움이 되는 몇 가지 예도 찾을 수 있습니다.
- simple/writer.js:작성자 생성, 인스턴스 설정 및 샘플 게시 방법을 보여줍니다.
- simple/reader.js:리더를 얻고 샘플을 얻고 콘텐츠에 액세스하는 방법을 보여줍니다.
- simple/read_and_write.py:두 필드를 반전시킨 후 받은 각 샘플에 대해 샘플을 작성하는 방법을 보여줍니다.
- mixed/:이 예제는 주기적으로 업데이트되며 시퀀스 길이에 액세스하는 방법, wait() 사용 방법 등에 대한 다양한 예제를 포함합니다.
API 개요
API가 어떻게 생겼는지 봅시다. 더 자세한 정보를 원하시면 GitHub 리포지토리에서 README를 볼 수 있습니다.
가장 먼저 할 일은 RTI 커넥터 라이브러리를 가져오는 것입니다.
rticonnextdds_connector를 rti로 가져오기
RTI 커넥터에 대한 참조가 있으면 API를 호출하여 새 커넥터를 생성할 수 있습니다.
<사전> 커넥터 =rti.Connector("MyParticipantLibrary::Zero","./ShapeExample.xml");
첫 번째 문자열은 사용하려는 구성의 이름이고 두 번째 문자열은 XML-Base App Creation 구성이 포함된 XML 파일입니다. 여기에서 해당 파일의 예를 볼 수 있습니다.
커넥터가 생성되면 getOutput API를 사용하여 모든 데이터 작성기에 액세스할 수 있습니다.
<사전> 출력 =connector.getOutput("MyPublisher::MySquareWriter")
또는 동일한 방식으로 데이터 리더에 액세스할 수 있습니다.
<사전> 입력 =connector.getInput("MySubscriber::MySquareReader");
두 API 모두 XML 파일에 정의된 엔티티 이름을 나타내는 매개변수로 하나의 문자열을 가져옵니다.
데이터 작성기에 대한 참조가 있으면(이 예에서는 출력) 연결된 인스턴스의 필드를 설정할 수 있습니다. 사전을 전달하면 그렇게 할 수 있습니다.
<사전> output.instance.setDictionary(샘플);
또는 각 필드를 개별적으로 설정하여:
output.instance.setNumber("y", 2);
데이터 판독기 측(이 예에서는 입력)에서 read 또는 take를 호출할 수 있습니다.
input.read();
또는
input.take();
그런 다음 수신된 샘플을 반복할 수 있습니다.
<사전> numOfSamples =input.samples.getLength();
범위(1, numOfSamples+1)의 j에 대해:
input.infos.isValid(j)인 경우:
x =input.samples.getNumber(j, "x");
y =input.samples.getNumber(j, "y");
....
샘플은 두 가지 방법으로 액세스할 수 있습니다. 사전으로:
샘플 =input.samples.getDictionary(j);
또는 필드별:
<사전> y =input.samples.getNumber(j, "y");
크기 =input.samples.getNumber(j, "모양 크기");
멀티스레딩 라이브러리를 사용하는 경우 커넥터에 대한 액세스를 보호해야 합니다. 여기에서 이 작업을 수행하는 방법에 대한 예를 찾을 수 있습니다.
이 모든 기능에는 경계가 따릅니다.
RTI 커넥터는 훌륭하고 많은 문제를 해결할 수 있습니다! 그러나 모든 것이 그렇듯이 모든 것에 완벽하지는 않습니다. 제한된 API 세트가 있습니다. Connext DDS Pro로 수행할 수 있는 일부 작업은 RTI 커넥터로 수행할 수 없습니다. 컴파일된 유형이 아닌 Dynamic Data에서만 작동합니다. 사용을 간단하게 하고 이식하기 위해 특정 사용 사례를 염두에 두고 몇 가지 가정을 했습니다. 특정 사용 사례를 해결하지 못할 수도 있고 해결하는 가장 효율적인 방법이 아닐 수도 있지만 아마도 다른 도구나 서비스가 있을 것입니다. 귀하의 특정 문제:저희에게 문의하세요!
얼마입니까?
이 기술의 비용이 얼마인지 궁금할 것입니다... 무료입니다!! 당신은 그것을 얻고 그것을 실험 할 수 있습니다. 우리가 요구하는 것은 피드백과 제안을 제공하는 것입니다. 이 피드백은 향후 제품 릴리스에 포함할 업데이트 및 기능의 우선 순위를 정하는 동안 고려됩니다. 따라서 귀하는 로드맵에 영향을 미칠 수 있습니다!
결론
이 블로그는 Python용 RTI 커넥터에 대한 소개입니다. 관심이 있는 경우 학습하는 가장 좋은 방법은 시도하는 것입니다. RTI 커뮤니티 포럼에 의문 사항이나 질문이 있는 경우 알려주십시오. 기꺼이 도와드리겠습니다! 마음에 드시고 개선을 위한 제안이나 아이디어가 있으면 언제든지 저희에게 연락하십시오. 다음 작업을 결정하는 동안 피드백을 기다리고 있습니다...