デバイス URI を Device::open に渡して、特定のデバイスを開こうとしています。何らかの理由で、device.open はそのような uri では機能しません。次のメッセージが表示されます
"1d27/0600@1/7" を開けませんでした: USB インターフェイスの設定に失敗しました!
openni::any_device を使用して uri を取得した場合にのみ機能します。しかし、私は仕事で複数のデバイスを使用しているため、これは私にとっての選択ではありません。この問題は、Asus xtion (vendorId 0x1D27 productId 0x0600) を ps1080 ドライバーと openni2 で使用しようとしたときに発生します。orbbec.so も使用しようとしましたが (何らかの理由で asus でも動作します)、問題は同じままです。
openni::OpenNI::initialize();
openni::Device device;
openni::Array< openni::DeviceInfo > deviceInfoList;
openni::OpenNI::enumerateDevices(&deviceInfoList);
for(int i=0;i<deviceInfoList.getSize();i++)
{
if(device.open(deviceInfoList[i].getUri()) != STATUS_OK)
std::cout<<openni::OpenNI::getExtendedError()<<std::endl;
//...
}
UPD:わかりました、問題が何であるかはわかっていると思います。私は自分の仕事でAstraとAsusセンサーを使用しています。何らかの理由でorbbecはAsusでも動作するため、Asusを接続すると、openniは同じuriを持つ2つのセンサー(AstraとPS1080)を検出します。そのため、device.open で開くことができません。uriなしでデバイスを開く方法、またはopenniが使用するドライバーを指定する方法はありますか?