Openhaptics Toolkitバグ?
Posted by Hiroaki.S | Posted in 備忘録 | Posted on 02-09-2009
0
開発環境整えるだけで二日目.ほんと嫌い.
とりあえず通った.
原因はOpenhaptics Toolkit内で使用される
hdud.libとhlud.libのバグ(?).
どうやら最初にインストールされるライブラリファイルは信用できないらしい.
なので,
C:\Program Files\SensAble\3DTouch\utilities\src
内のHDU,HLUディレクトリ内のプログラムをビルドしてライブラリを作成しなおす.
キター.
これで意味不明なリンクエラーが出ません.
LINK2019 hogehogeと出るのは解決.
これはどう考えても俺のせいじゃないだろ.
ようやく研究が進められる.
以下はPHANToM Omniの動作確認用プログラムです.
動作確認といっても位置だけだから何とも言えないけど,
とりあえずPHANToMが認識されているかは確認できるはず.
ちゃんとPHANToMクラスを作ったものを作成しなければ.
//
// PHANToM Training.cpp
//
// ファントムの動作確認用
// スタイラス位置を無限に取得し続けるだけ.
//
#include <windows.h>
#include <iostream>
using namespace std;
// Openhaptics
#include <HD/hd.h>
#include <HDU/hduVector.h>
#include <HDU/hduError.h>
#include <HD/hdScheduler.h>
#pragma comment(lib, "hd.lib")
#pragma comment(lib, "hl.lib")
#pragma comment(lib, "hdud.lib")
#pragma comment(lib, "hlud.lib")
// Global変数
HDdouble position[3] = {0.0, 0.0, 0.0};
int main()
{
HDErrorInfo error;
// 初期化及びエラー処理
HHD hHD = hdInitDevice(HD_DEFAULT_DEVICE);
if (HD_DEVICE_ERROR(error = hdGetError()))
{
hduPrintError(stderr, &error, "Failed to initialize haptic device");
fprintf(stderr, "\nPress any key to quit.\n");
getchar();
exit(-1);
}
// スケジューラーのスタート
hdStartScheduler();
while (1){
// フレームスタート
hdBeginFrame (hdGetCurrentDevice());
// スタイラスの現在位置を取得,表示
hdGetDoublev (HD_CURRENT_POSITION, position);
cout << position[0] << "," << position[1] << "," << position[2] << endl;
// フレーム終了
hdEndFrame(hdGetCurrentDevice());
}
return 0;
}
