Skip to content

설치 및 설정

제공되는 NURI SDK는 C++ 기반의 라이브러리 입니다.

Sdk매뉴얼

PDF 형태의 사용자 매뉴얼은 SDK 구매 시 제공되며, 매뉴얼을 제공받지 못하거나 분실한 고객은 메일(sales@neuromeka.com)을 통해 요청해주시기 바랍니다.

설치하기

  • NURI SDK 라이센스 발급자에게 별도 제공

빌드 환경

공통 (Linux/Windows)

  • CMake 3.12 버전 또는 그 이상의 버전

Windows

  • Microsoft Visual Studio 2017 버전 또는 그 이상의 버전

  • Desktop development with C++ 설치

실행하기

사용자는 NURI SDK를 통해 직접빌드하여 실행할 수 있습니다. 본 장에서는 사전 설치된 NURI SDK 프로젝트를 설정하는 방법을 안내합니다.

네트워크 환경 설정하기

NURI SDK는 로봇과 이더넷(TCP/IP)을 통해 연결됩니다. 사용자 PC와 로봇은 유선 또는 무선 연결을 사용하여 동일한 LAN에 연결됩니다. 무선 연결은 높은 네트워크 성능이 필요하지 않은 비 실시간 제어에 사용될 수 있습니다.

실시간 제어를 위해서는 로봇에 유선 연결이 권장됩니다. 로봇에는 하나의 외부 네트워크 인터페이스와 하나의 직접 연결 네트워크 인터페이스가 있습니다. 직접 연결 네트워크 인터페이스의 기본 정적 IP는 192.168.0.160 입니다.

  • 유선 연결 : 로봇과 사용자 PC 를 케이블로 연결하여 사용하는 방법. 이 방법을 사용하는 경우, 사용자 PC의 IP 주소와 로봇의 정적 IP 주소는 같은 네트워크 세그먼트에 있어야 합니다. 예) 사용자 PC의 IP 주소를 192.168.0.22로 설정.

  • 무선 연결 : 로봇의 외부 네트워크 인터페이스가 라우터 또는 스위치에 연결되고 사용자의 PC도 라우터 또는 스위치에 연결되어 둘다 동일한 LAN을 사용하는 방법.

Note

불안정한 네트워크 통신의 경우 무선 연결은 로봇의 움직임이 불안정할 수 있으므로 유선 연결을 권장합니다.

예제 함수 수정 하기

아래 경로의 sdk_example_custom.cpp 파일을 연 후 main 함수 내에 연결하고자 하는 로봇 IP 를 설정합니다.

- xCoreSDK-v0.3.4-nuri
   ├─ doc
   └─ example
        └─ sdk_example_custom.cpp    

sdk_example_custom.cpp

int main() {
NuriRobot robot;
  try {
    robot.connectToRobot("연결하고자 하는 Robot IP"); // robot connection
  } catch (const nuri::Exception &e) {
    std::cerr << e.what();
    return -1;
  }

  example_basicOperation(&robot);
  moveJMotion(robot);
}

sdk_example_custom.cpp의 코드 내 선언된 함수의 내용은 아래와 같습니다.

로봇 내의 기본 정보들을 불러오는 함수

void example_basicOperation(Robot_T<wt, dof> *robot){
  error_code ec;
  // *** Info query ***
  auto robotinfo = robot->robotInfo(ec);
  std::cout << "Nuri controller version: " << robotinfo.version << std::endl;
  std::cout << "Nuri-SDK version: " << robot->sdkVersion() << std::endl;

  // *** Get current robot's posture, joint angles and base frame ***
  auto joint_pos = robot->jointPos(ec); // joint angels [rad]
  auto joint_vel = robot->jointVel(ec); // joint velocity [rad/s]
  auto joint_torque = robot->jointTorque(ec); // joint torque [Nm]
  auto tcp_xyzabc = robot->posture(CoordinateType::endInRef, ec);
  auto flan_cart = robot->cartPosture(CoordinateType::flangeInBase, ec);
  robot->baseFrame(ec); // base frame
  std::cout << "The coordinate of robot end w.r.t. reference frame\n" << tcp_xyzabc << std::endl;
  std::cout << "The coordinate of flange w.r.t. base frame\n" << flan_cart << std::endl;

  // Get controller log
  auto logs = robot->queryControllerLog(5, {LogInfo::Level::error}, ec);
  std::cout << "Controller Logs - " << std::endl;
  for(const auto &log : logs) {
    std::cout << "ID: " << log.id << " Content: " << log.content << std::endl;
  }
}

로봇의 모션(MoveJ)구동 함수

void moveJMotion(NuriRobot& robot) {
    error_code ec;
    std::string id;

    // switch to auto mode and power-on
    robot.setOperateMode(nuri::OperateMode::automatic, ec);
    robot.setPowerState(true, ec);

    // we use default tool and wobj frame here
    Toolset defaultToolset;
    robot.setToolset(defaultToolset, ec);

    MoveAbsJCommand moveJ({ -0.3452, -0.0213, -1.74533, 0.0159, -1.570, 0 }), moveJ2({ 0, 0, 0, 0, 0, 0 });
    robot.moveAppend({ moveJ, moveJ2 }, id, ec);
    robot.moveStart(ec);
    waitForFinish(robot, id, 0);

    robot.setPowerState(false, ec);
}

프로젝트 빌드 하기

로봇 IP를 설정 했다면, 구성 관리의 'Release' 또는 'Debug' 를 선택하고 예제를 실행하여 로봇과의 연결이 정상적으로 동작하는지 확인 합니다.

Linux

예시 프로그램 sdk_example의 컴파일을 예로 들어 설명하면, 설치 디렉터리는 루트 디렉터리 아래의 'out'에 위치합니다.

xCoreSDK-nuri
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../out
cmake --build . --target sdk_example
cmake --build . --target install   

Windows

NURI SDK 를 빌드하기 위해선, CMakeLists.txt 를 시작 항목으로 설정 해야 합니다. 프로젝트를 열어, CMakeLists.txt 를 시작 항목으로 설정합니다.


CMkaeLists.txt 시작 항목으로 설정하기

SDK 의 함수에 대한 자세한 설명이 필요한 경우, 제공된 NURI SDK 매뉴얼을 참고하시기 바랍니다.

Sdk매뉴얼

PDF 형태의 사용자 매뉴얼은 SDK 구매 시 제공되며, 매뉴얼을 제공받지 못하거나 분실한 고객은 메일(sales@neuromeka.com)을 통해 요청해주시기 바랍니다.