C++ サンプルプログラム使用ガイド

現在ご覧いただいているのは最新版の内容です(V2.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

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. 生成された .sln ファイルを Visual Studio で開くか、以下のコマンドでビルドします。

    cmake --build . --config Release

サンプルプログラムの実行

  1. Mech-Vision が起動していることを確認します。起動していない場合は、SDK インターフェースを使用して Mech-Vision を起動してください。詳細については、Mech-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;

    // Open a solution
    vision::Solution solution;
    error = solution.open("D:/data/vision_sdk_example");

    // Get solution information
    vision::SolutionInfo solutionInfo;
    error = solution.getInfo(solutionInfo);

    // Get project information list
    std::vector<vision::ProjectInfo> projectInfos;
    error = solution.getAllProjectInfos(projectInfos);
    for (const auto& info : projectInfos) {
        // Process project information
    }

    // Save and close the solution
    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");

    // Get project name
    std::vector<vision::ProjectInfo> projectInfos;
    solution.getAllProjectInfos(projectInfos);
    vision::Project project(projectInfos.front().name);

    // Register running-state callback
    project.setRunningChangedCallback(
        [](const vision::ProjectRunningChangedCallbackData& cbData) {
            // Handle running-state changes
        });

    // Run the project (wait until it finishes)
    vision::ProjectResult projectResult;
    project.run(vision::ProjectRunWaitState::Finished, "request_1", projectResult);

    // Parse output data (JSON format)
    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");

    // Get the confidence threshold of a 3D Matching step
    vision::Step step("3D Matching_1", "Matching");
    std::string propsJson;
    step.getPropertiesJson(R"(["confidenceThreshold"])", propsJson);

    // Set step parameters
    step.setPropertiesJson(R"({"confidenceThreshold": 0.8})");
}

この情報は役に立ちましたか?

ご意見・ご要望がございましたら、以下よりお寄せください:

Mech-Mindは、お客様のプライバシーを重視しています

このサイトでは最高の体験を提供するために Cookie を使用しています。サイトの閲覧を続ける場合、Cookie の使用に同意したことになります。「拒否する」を選択すると、このサイトを訪れた際に追跡や記憶が行われないように単独の Cookie が使用されます。