37 #include <boost/make_shared.hpp>
54 return (di1.
uri_.compare(di2.
uri_) < 0);
58 typedef std::set<OpenNI2DeviceInfo, OpenNI2DeviceInfoComparator>
DeviceSet;
61 public openni::OpenNI::DeviceDisconnectedListener,
62 public openni::OpenNI::DeviceStateChangedListener
66 openni::OpenNI::DeviceConnectedListener(),
67 openni::OpenNI::DeviceDisconnectedListener(),
68 openni::OpenNI::DeviceStateChangedListener()
70 openni::OpenNI::addDeviceConnectedListener(
this);
71 openni::OpenNI::addDeviceDisconnectedListener(
this);
72 openni::OpenNI::addDeviceStateChangedListener(
this);
75 openni::Array<openni::DeviceInfo> device_info_list;
76 openni::OpenNI::enumerateDevices(&device_info_list);
78 for (
int i = 0; i < device_info_list.getSize(); ++i)
86 openni::OpenNI::removeDeviceConnectedListener(
this);
87 openni::OpenNI::removeDeviceDisconnectedListener(
this);
88 openni::OpenNI::removeDeviceStateChangedListener(
this);
93 ROS_INFO(
"Device \"%s\" error state changed to %d\n", pInfo->getUri(), state);
97 case openni::DEVICE_STATE_OK:
100 case openni::DEVICE_STATE_ERROR:
101 case openni::DEVICE_STATE_NOT_READY:
102 case openni::DEVICE_STATE_EOF:
115 ROS_INFO(
"Device \"%s\" found.", pInfo->getUri());
127 ROS_WARN(
"Device \"%s\" disconnected\n", pInfo->getUri());
141 std::set<OpenNI2DeviceInfo, OpenNI2DeviceInfoComparator>::const_iterator it;
142 std::set<OpenNI2DeviceInfo, OpenNI2DeviceInfoComparator>::const_iterator it_end =
device_set_.end();
145 result->push_back(it->uri_);
158 DeviceSet::const_iterator it;
159 DeviceSet::const_iterator it_end =
device_set_.end();
162 result->push_back(*it);
184 openni::Status rc = openni::OpenNI::initialize();
185 if (rc != openni::STATUS_OK)
198 singelton_ = boost::make_shared<OpenNI2DeviceManager>();
220 openni::Device openni_device;
224 if (Uri.length() > 0 && openni_device.open(Uri.c_str()) == openni::STATUS_OK)
226 int serial_len = 100;
227 char serial[serial_len];
229 openni::Status rc = openni_device.getProperty(openni::DEVICE_PROPERTY_SERIAL_NUMBER, serial, &serial_len);
230 if (rc == openni::STATUS_OK)
237 openni_device.close();
248 return boost::make_shared<OpenNI2Device>(
"");
252 return boost::make_shared<OpenNI2Device>(device_URI);
260 std::vector<OpenNI2DeviceInfo>::const_iterator it;
261 std::vector<OpenNI2DeviceInfo>::const_iterator it_end = device_info->end();
263 for (it = device_info->begin(); it != it_end; ++it)
265 stream <<
"Uri: " << it->uri_ <<
" (Vendor: " << it->vendor_ <<
266 ", Name: " << it->name_ <<
267 ", Vendor ID: " << it->vendor_id_ <<
268 ", Product ID: " << it->product_id_ <<