お客様: 画像計測機器メーカー様

ご依頼内容

  • C/C++で提供しているカメラ制御ライブラリを、MATLABからも使えるようにしたい、というご相談。
  • 自社製品を使うお客様が、MATLABの環境からも扱えるようにしたい。
  • 既存のC++サンプルとの対応が分かる形にして、利用者がAPIの使い方をたどれるようにしたい。
  • GUIが付いたサンプルプログラムと、英文の説明書も、あわせて用意したい。

課題

  • 技術的には、C/C++のネイティブライブラリを、MATLABから安定して呼び出し、撮影の手順どおりに動かすのが困難なこと。
  • 既存のC++サンプルと、対応が分かるAPIを設計すること。
  • 実機と、実機がない環境の双方で、一連のカメラ操作を検証すること。

ソリューション

  • MATLABからネイティブのDLLを直接呼ばず、C#で中間のラッパを作り、MATLABの.NET連携(他の言語の部品を読み込む仕組み)で読み込む方式にした。
  • 関数単位ではなく、撮影手順の機能単位で、MATLABのメソッドを構成した。
  • 接続、ライブ表示、録画、再生、保存、パラメータ設定を、状態を保持するhandleクラスにまとめ、接続や撮影の状態を、クラス側で管理した。
  • 実機と、実機がないときに使う検証用の環境を、設定ファイルで切り替えられるようにした。
  • パラメータの対応表を、ライブラリのヘッダファイルから生成する仕組みにして、ヘッダが変わっても、利用者側で作り直せるようにした。
  • GUIが付いたサンプルプログラムと、英文の説明書を用意した。
  • 実機での確認で出た仕様の調整を、反映した。
MATLABからC#の中間ラッパを介してカメラ制御ライブラリを呼ぶ層構成図
MATLABから機器の制御ライブラリを呼ぶ構成。ネイティブのDLLを直接呼ばず、C#の中間ラッパを挟み、MATLABの.NET連携で読み込む。実機と、実機がないときの検証用の環境は、設定ファイルで切り替える。構成を説明するために作成した図。
接続から保存までの操作の流れと、サンプルプログラムの画面構成の模式図
サンプルプログラムがカバーする操作と、画面の構成。接続、パラメータ設定、ライブ表示、録画、再生、保存の各操作が、クラスのメソッドに対応する。画面は構成を説明するために描いた模式図で、実際の画面ではない。
案件の課題・アプローチ・結果と納品物のまとめ図
案件の全体像。課題、アプローチ、結果と納品物をまとめたもの。動作確認は、正常系と異常系をあわせて20項目強。

結果

  • 正常系と異常系をあわせて、20項目強の動作確認に合格した。異常値の入力や、操作順の誤りも、試験に含めた。
  • 接続からライブ表示、録画、再生、複数の形式での保存までを、ひとつのサンプルで追える。
  • MATLABのソースは約2千行の規模で、ラッパクラスとGUIのサンプルを、そのまま実例として読める。
  • お客様の製品を使うMATLABユーザーが、APIの使い方を、動くコードからたどれる。

ひとこと

  • C/C++で書かれたライブラリを、MATLABのような別の言語から使う方法は、直接呼ぶ、中間のラッパを挟む、など、いくつかあります。ライブラリの作りや、扱うデータの大きさによって適する方法が変わり、選び方で後の保守のしやすさまで変わるため、見極めが難しい場合があります。
  • 型の受け渡しや、DLLの配置のような、言語をまたぐところは、実機で動かして初めて分かることも多いので、経験のある人が担当するのが良いと思います。
  • また、今回の事例では、GUIが付いたサンプルプログラムとして納めているため、プログラムに不慣れな方でも、まず動かしてみて、そこからAPIの使い方をたどれます。
  • 「自社のライブラリを、お客様のMATLABの環境からも使えるようにしたい。ただ、社内にMATLABに詳しい人がおらず、サンプルや説明書まで揃えるとなると、手が回らない。」というご相談は、計測機器のメーカー様からよくいただきます。弊社では、ラッパの設計から、サンプルプログラム、英文の説明書、動作確認のレポートまで、まとめてお引き受けしています。

お問い合わせ

開発事例にご興味ありましたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
早急に回答致します。

今すぐお問い合わせ