C++ 예제 사용 가이드

현재 최신 버전 (2.2.0)에 대한 매뉴얼을 보고 계십니다. 다른 버전에 액세스하려면 페이지 오른쪽 상단 모서리에 있는 '버전 전환' 버튼을 클릭하세요.

■ 현재 사용하고 있는 제품의 버전이 확실하지 않은 경우에는 언제든지 당사 기술 지원팀에 문의하시기 바랍니다.

이 절에서는 Windows 시스템에서 Mech-Vision SDK의 C++ 예제를 구성하고 실행하는 방법을 설명합니다.

사용 전 준비

  • SDK 환경 구성을 완료해야 합니다.

  • CMake 3.20 이상.

  • Visual Studio 2017 이상(MSVC 컴파일러 포함).

  • Mech-Vision가 설치되어 있고 정상적으로 실행 가능해야 합니다.

예제 소개

C++ 예제는 development/cpp/examples/ 디렉터리에 있으며, 다음 예제를 포함합니다.

예제 디렉터리 설명

solution_basic

솔루션 열기/닫기/저장/이름 변경을 수행하고, 솔루션 정보 및 프로젝트 정보 목록을 가져옵니다.

project_basic

프로젝트 상태 변경 및 캡처 완료 콜백을 등록하고, 프로젝트를 실행한 뒤 출력 데이터(픽 포인트 포즈)를 가져옵니다.

project_data_storage

프로젝트 데이터 저장소를 조작하고 저장 데이터를 읽고 씁니다.

project_param_recipe

파라미터 레시피 목록을 가져오고 현재 파라미터 레시피를 전환합니다.

solution_comm_config

솔루션의 통신 구성(TCP/IP, Modbus 등)을 가져오고 수정합니다.

solution_device_status

솔루션 내 카메라의 연결 상태, 온도, 전송 속도 등 장치 상태 정보를 가져옵니다.

solution_global_variable

솔루션 내 전역 변수(정수형, 부동소수점형, 문자열, 큐 등)를 읽고 씁니다.

step_basic

스텝 정보를 가져오고, 스텝 출력 포트를 고정한 후 프로젝트 실행 뒤 스텝 출력 데이터(예: 포인트 포즈)를 가져옵니다.

step_props

JSON 형식으로 스텝 파라미터를 읽고 설정합니다(다중 계층 파라미터 접근 방식 포함).

production_interface

생산 인터페이스 조작.

production_interface_com

생산 인터페이스 통신 조작.

예제 구성 및 빌드

solution_basic 예제를 기준으로 일반적인 구성 및 빌드 절차를 설명합니다.

  1. 예제 디렉터리의 CMakeLists.txt 를 열고 VISION_SDK_DIR 을 실제 SDK 경로로 수정합니다.

    set(VISION_SDK_DIR path/to/development/cpp)
  2. 예제 디렉터리에서 빌드 디렉터리를 만들고 CMake를 실행합니다.

    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Release ..
  3. Visual Studio로 생성된 .sln 파일을 열거나, 다음 명령으로 빌드합니다.

    cmake --build . --config Release

예제 실행

  1. Mech-Vision가 시작되어 있는지 확인하거나, SDK 인터페이스를 통해 Vision 서비스를 시작합니다(Vision 서비스 시작 참조).

  2. 예제 코드의 솔루션 경로를 수정하여 "D:/data/vision_sdk_example" 을 실제 솔루션 경로로 바꿉니다.

    error = solution.open("D:/path/to/your/solution");
  3. 빌드된 실행 파일을 실행합니다.

코드 예제

솔루션 열기 및 프로젝트 정보 가져오기(solution_basic)

#include "vision_sdk/vision_sdk.h"
using namespace mmind;

int main()
{
    vision::initialize();

    vision::ErrorStatus error;

    // 솔루션 열기
    vision::Solution solution;
    error = solution.open("D:/data/vision_sdk_example");

    // 솔루션 정보 가져오기
    vision::SolutionInfo solutionInfo;
    error = solution.getInfo(solutionInfo);

    // 프로젝트 정보 목록 가져오기
    std::vector<vision::ProjectInfo> projectInfos;
    error = solution.getAllProjectInfos(projectInfos);
    for (const auto& info : projectInfos) {
        // 프로젝트 정보 처리
    }

    // 솔루션 저장 및 닫기
    error = solution.save();
    error = solution.close();

    vision::uninitialize();
    return 0;
}

프로젝트 실행 및 출력 데이터 가져오기(project_basic)

#include "vision_sdk/vision_sdk.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
using namespace mmind;

void example()
{
    vision::Solution solution;
    solution.open("D:/data/vision_sdk_example");

    // 프로젝트 이름 가져오기
    std::vector<vision::ProjectInfo> projectInfos;
    solution.getAllProjectInfos(projectInfos);
    vision::Project project(projectInfos.front().name);

    // 실행 상태 변경 콜백 등록
    project.setRunningChangedCallback(
        [](const vision::ProjectRunningChangedCallbackData& cbData) {
            // 실행 상태 변경 이벤트 처리
        });

    // 프로젝트 실행(프로젝트 실행 완료까지 대기)
    vision::ProjectResult projectResult;
    project.run(vision::ProjectRunWaitState::Finished, "request_1", projectResult);

    // 출력 데이터 파싱(JSON 형식)
    const auto joOutput =
        QJsonDocument::fromJson(projectResult.outputJson.c_str()).object();
    const auto jaPickPoints =
        joOutput["workobject_data"].toObject()["pick_points"].toArray();
}

스텝 파라미터 읽기 및 설정(step_props)

#include "vision_sdk/vision_sdk.h"
#include <QJsonDocument>
#include <QJsonArray>
using namespace mmind;

void example()
{
    vision::Solution solution;
    solution.open("D:/data/vision_sdk_example");

    // 3D 매칭 스텝의 신뢰도 임계값 파라미터 가져오기
    vision::Step step("3D Matching_1", "Matching");
    std::string propsJson;
    step.getPropertiesJson(R"(["confidenceThreshold"])", propsJson);

    // 스텝 파라미터 설정
    step.setPropertiesJson(R"({"confidenceThreshold": 0.8})");
}

이 페이지가 도움이 되었습니까?

다음 방법을 통해 피드백을 보내주실 수 있습니다:

저희는 귀하의 개인정보를 소중히 다룹니다.

당사 웹사이트는 최상의 사용자 경험을 제공하기 위해 쿠키를 사용하고 있습니다. "모두 수락"을 클릭하시면 쿠키 사용에 동의하시는 것이며, "모두 거부"를 클릭하시면 이 웹사이트 방문 시 귀하의 정보가 추적되거나 기억되지 않도록 단일 쿠키만 사용됩니다.