static std::vector<ImageRequest> from( const std::vector<msr::airlib::VehicleCameraBase::ImageRequest>& request ) { std::vector<ImageRequest> request_adaptor; for (const auto& item : request) request_adaptor.push_back(ImageRequest(item)); return request_adaptor; }
int generate(int num_samples) { msr::airlib::MultirotorRpcLibClient client; client.confirmConnection(); msr::airlib::ClockBase* clock = msr::airlib::ClockFactory::get(); RandomPointPoseGenerator pose_generator(static_cast<int>(clock->nowNanos())); std::fstream file_list(FileSystem::combine(storage_dir_, "files_list.txt"), std::ios::out | std::ios::in | std::ios_base::app); int sample = getImageCount(file_list); common_utils::ProsumerQueue<ImagesResult> results; std::thread result_process_thread(processImages, & results); try { while(sample < num_samples) { //const auto& collision_info = client.getCollisionInfo(); //if (collision_info.has_collided) { // pose_generator.next(); // client.simSetPose(pose_generator.position, pose_generator.orientation); // std::cout << "Collison at " << VectorMath::toString(collision_info.position) // << "Moving to next pose: " << VectorMath::toString(pose_generator.position) // << std::endl; // continue; //} ++sample; auto start_nanos = clock->nowNanos(); std::vector<ImageRequest> request = { ImageRequest(0, ImageType::Scene), ImageRequest(1, ImageType::Scene), ImageRequest(1, ImageType::DisparityNormalized, true) }; const std::vector<ImageResponse>& response = client.simGetImages(request); if (response.size() != 3) { std::cout << "Images were not recieved!" << std::endl; start_nanos = clock->nowNanos(); continue; } ImagesResult result; result.file_list = &file_list; result.response = response; result.sample = sample; result.render_time = clock->elapsedSince(start_nanos);; result.storage_dir_ = storage_dir_; result.position = pose_generator.position; result.orientation = pose_generator.orientation; results.push(result); pose_generator.next(); client.simSetPose(Pose(pose_generator.position, pose_generator.orientation), true); } } catch (rpc::timeout &t) { // will display a message like // rpc::timeout: Timeout of 50ms while calling RPC function 'sleep' std::cout << t.what() << std::endl; } results.setIsDone(true); result_process_thread.join(); return 0; }
void GDALWMSMiniDriver_AGS::TiledImageRequest(CPLString *url, const GDALWMSImageRequestInfo &iri, CPL_UNUSED const GDALWMSTiledImageRequestInfo &tiri) { ImageRequest(url, iri); }