SDK의 공유메모리 관련 문의



  • 안녕하세요, 성균관대학교 기계동역학연구실 한민국입니다.

    SDK의 공유메모리 활용 관련하여 문의 드립니다.

    공유메모리 관련 Docs 자료는 열람하였지만, 활용 방법에 대한 정보가 부족하여 문의 드립니다.

    제가 이해한 바에 따르면, 공유메모리 활용을 위해서는 공유메모리매니저를 통하여 공유데이터, 공유명령함수에 접근 가능한 것으로 이해하였습니다.

    또한 공유메모리매니저는 SDK에서 따로 프로그래밍하지 않아도 json 파일을 통한 SW 실행 시 indySHM라고 붙여진 이름으로 구성되는 것이 커널상에서 확인됩니다. (Binding "indySHM" success! 메시지가 출력됩니다.)

    그러나 공유메모리를 SDK 프로그래밍에서 활용하기 위하여 필요한 정보(공유메모리함수, 공유명령의 NRMKFramework::ShmemManager & indyShm 에 입력 될 생성된 ShmemManager Class, 필요하다면 입력해야할 헤더 등)를 알 수 없습니다.

    현재 사용중인 로봇 모델은 Indy RP 모델, SDK 버전은 2.2.4 입니다.

    도움을 주시면 감사하겠습니다.



  • This post is deleted!


  • @한민국

    안녕하세요, 문의 주셔서 감사합니다.

    현재 공유메모리 사용방법에 대한 내용을 포함한 SDK사용 방법에 대한 자세한 내용은 업로드 예정중입니다. 사용에 불편을 드려서 죄송합니다.

    F/T 센서 사용과 관련된 공유메모리 사용방법만 간단하게 말씀드리면 다음과 같습니다.

     [공유메모리를 다루는 매니저는 NRMKFramework 명칭공간에 공유메모리로 매핑되는 데이터 및 데이터 읽기 및 쓰기에 관한 라이브러리는 NRMKIndy 명칭공간에 작성되어 있습니다.]

    1. 라이브러리 및 데이터 구조체를 사용하기 위해서 다음을 헤더파일에 추가해 주십시오.

    (데이터 구조체에 대한 정보는 다음의 링크에서 확인하실 수 있습니다; http://docs.neuromeka.com/2.3.0/kr/IndyAPI/section2/)

    #include <NRMKFramework/IndySharedmemory/SharedData.h>

    NRMKFramework::ShmemManager * indyShm = NULL;

    NRMKIndy::SharedData::RobotControlSharedData ctrData;

    2. 생성자에서 SharedManager에 공유메모리에 해당하는 동적 메모리를 할당해 주십시오.

    indyShm = new NRMKFramework::ShmemManager(INDY_SHM, INDY_SHM_LEN); //INDY_SHM = "indyShm"

    3. 파괴자에 메모리 해제 코드 작성하여 주십시오.

    if (indyShm !=NULL) delete indyShm;

    4. 제어 관련 데이터 획득 및 F/T 센서 값 활용하기 위한 코드는 다음과 같습니다.

    NRMKIndy::SharedData::getControlData(*indyShm, ctrData);

    for (int i=0; i<JOINT_DOF; i++) FTSensor[i] = ctrData.Fext[i]; //IndyRP의 경우 JOINT_DOF=6

    감사합니다.


Log in to reply