/** Open the camera device. * * @param newconfig configuration parameters * @return true, if successful * * if successful: * state_ is Driver::OPENED * camera_name_ set to camera_name string */ bool openCamera(Config &newconfig) { bool success = true; try { ROS_INFO("opening uvc_cam at %dx%d, %f fps", newconfig.width, newconfig.height, newconfig.frame_rate); uvc_cam::Cam::mode_t mode = uvc_cam::Cam::MODE_RGB; switch (newconfig.format_mode) { case 1: mode = uvc_cam::Cam::MODE_RGB; case 2: mode = uvc_cam::Cam::MODE_YUYV; case 3: mode = uvc_cam::Cam::MODE_MJPG; default: mode = uvc_cam::Cam::MODE_RGB; } cam_ = new uvc_cam::Cam(newconfig.device.c_str(), mode, newconfig.width, newconfig.height, newconfig.frame_rate); if (camera_name_ != camera_name_) { camera_name_ = camera_name_; if (!cinfo_.setCameraName(camera_name_)) { // GUID is 16 hex digits, which should be valid. // If not, use it for log messages anyway. ROS_WARN_STREAM("[" << camera_name_ << "] name not valid" << " for camera_info_manger"); } } // ROS_INFO_STREAM("[" << camera_name_ // << "] opened: " << newconfig.video_mode << ", " // << newconfig.frame_rate << " fps, " // << newconfig.iso_speed << " Mb/s"); state_ = Driver::OPENED; calibration_matches_ = true; // cam_->display_formats_supported(); } catch (uvc_cam::Exception& e) { ROS_FATAL_STREAM("[" << camera_name_ << "] exception opening device: " << e.what()); success = false; } return success; }
/** Open the camera device. * * @param newconfig configuration parameters * @return true, if successful * * if successful: * state_ is Driver::OPENED * camera_name_ set to GUID string */ bool openCamera(Config &newconfig) { bool success = true; try { if (dev_->open(newconfig.guid.c_str(), newconfig.video_mode.c_str(), newconfig.frame_rate, newconfig.iso_speed, newconfig.bayer_pattern.c_str(), newconfig.bayer_method.c_str()) == 0) { if (camera_name_ != dev_->device_id_) { camera_name_ = dev_->device_id_; if (!cinfo_->setCameraName(camera_name_)) { // GUID is 16 hex digits, which should be valid. // If not, use it for log messages anyway. ROS_WARN_STREAM("[" << camera_name_ << "] name not valid" << " for camera_info_manger"); } } ROS_INFO_STREAM("[" << camera_name_ << "] opened: " << newconfig.video_mode << ", " << newconfig.frame_rate << " fps, " << newconfig.iso_speed << " Mb/s"); state_ = Driver::OPENED; calibration_matches_ = true; } } catch (camera1394v2::Exception& e) { ROS_FATAL_STREAM("[" << camera_name_ << "] exception opening device: " << e.what()); success = false; } return success; }