rename device
This commit is contained in:
		
							parent
							
								
									ae199327fe
								
							
						
					
					
						commit
						e1a1c3c3d0
					
				| @ -73,17 +73,18 @@ struct RsPoseData { | |||||||
|   EIGEN_MAKE_ALIGNED_OPERATOR_NEW |   EIGEN_MAKE_ALIGNED_OPERATOR_NEW | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class Device { | class RsT265Device { | ||||||
|  public: |  public: | ||||||
|   using Ptr = std::shared_ptr<Device>; |   using Ptr = std::shared_ptr<RsT265Device>; | ||||||
| 
 | 
 | ||||||
|   static constexpr int IMU_RATE = 200; |   static constexpr int IMU_RATE = 200; | ||||||
|   static constexpr int NUM_CAMS = 2; |   static constexpr int NUM_CAMS = 2; | ||||||
| 
 | 
 | ||||||
|   Device(bool manual_exposure, int skip_frames, int webp_quality, |   RsT265Device(bool manual_exposure, int skip_frames, int webp_quality, | ||||||
|          double exposure_value = 10.0); |                double exposure_value = 10.0); | ||||||
|   ~Device(); |   ~RsT265Device(); | ||||||
|   void start(); |   void start(); | ||||||
|  |   void stop(); | ||||||
| 
 | 
 | ||||||
|   bool setExposure(double exposure);  // in milliseconds
 |   bool setExposure(double exposure);  // in milliseconds
 | ||||||
|   void setSkipFrames(int skip); |   void setSkipFrames(int skip); | ||||||
| @ -102,15 +103,16 @@ class Device { | |||||||
|   int skip_frames; |   int skip_frames; | ||||||
|   int webp_quality; |   int webp_quality; | ||||||
| 
 | 
 | ||||||
|   rs2::config config; |  | ||||||
|   rs2::pipeline pipe; |  | ||||||
|   rs2::context context; |  | ||||||
|   rs2::pipeline_profile profile; |  | ||||||
| 
 |  | ||||||
|   Eigen::deque<RsIMUData> gyro_data_queue; |   Eigen::deque<RsIMUData> gyro_data_queue; | ||||||
|   std::shared_ptr<RsIMUData> prev_accel_data; |   std::shared_ptr<RsIMUData> prev_accel_data; | ||||||
| 
 | 
 | ||||||
|   std::shared_ptr<basalt::Calibration<double>> calib; |   std::shared_ptr<basalt::Calibration<double>> calib; | ||||||
|  | 
 | ||||||
|  |   rs2::context context; | ||||||
|  |   rs2::config config; | ||||||
|  |   rs2::pipeline pipe; | ||||||
|  | 
 | ||||||
|  |   rs2::pipeline_profile profile; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| }  // namespace basalt
 | }  // namespace basalt
 | ||||||
|  | |||||||
| @ -39,8 +39,8 @@ std::string get_date(); | |||||||
| 
 | 
 | ||||||
| namespace basalt { | namespace basalt { | ||||||
| 
 | 
 | ||||||
| Device::Device(bool manual_exposure, int skip_frames, int webp_quality, | RsT265Device::RsT265Device(bool manual_exposure, int skip_frames, | ||||||
|                double exposure_value) |                            int webp_quality, double exposure_value) | ||||||
|     : manual_exposure(manual_exposure), |     : manual_exposure(manual_exposure), | ||||||
|       skip_frames(skip_frames), |       skip_frames(skip_frames), | ||||||
|       webp_quality(webp_quality) { |       webp_quality(webp_quality) { | ||||||
| @ -82,9 +82,9 @@ Device::Device(bool manual_exposure, int skip_frames, int webp_quality, | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Device::~Device() = default; | RsT265Device::~RsT265Device(){}; | ||||||
| 
 | 
 | ||||||
| void Device::start() { | void RsT265Device::start() { | ||||||
|   auto callback = [&](const rs2::frame& frame) { |   auto callback = [&](const rs2::frame& frame) { | ||||||
|     exportCalibration(); |     exportCalibration(); | ||||||
| 
 | 
 | ||||||
| @ -206,7 +206,12 @@ void Device::start() { | |||||||
|   profile = pipe.start(config, callback); |   profile = pipe.start(config, callback); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool Device::setExposure(double exposure) { | void RsT265Device::stop() { | ||||||
|  |   if (image_data_queue) image_data_queue->push(nullptr); | ||||||
|  |   if (imu_data_queue) imu_data_queue->push(nullptr); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool RsT265Device::setExposure(double exposure) { | ||||||
|   if (!manual_exposure) return false; |   if (!manual_exposure) return false; | ||||||
| 
 | 
 | ||||||
|   auto device = context.query_devices()[0]; |   auto device = context.query_devices()[0]; | ||||||
| @ -215,11 +220,11 @@ bool Device::setExposure(double exposure) { | |||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Device::setSkipFrames(int skip) { skip_frames = skip; } | void RsT265Device::setSkipFrames(int skip) { skip_frames = skip; } | ||||||
| 
 | 
 | ||||||
| void Device::setWebpQuality(int quality) { webp_quality = quality; } | void RsT265Device::setWebpQuality(int quality) { webp_quality = quality; } | ||||||
| 
 | 
 | ||||||
| std::shared_ptr<basalt::Calibration<double>> Device::exportCalibration() { | std::shared_ptr<basalt::Calibration<double>> RsT265Device::exportCalibration() { | ||||||
|   using Scalar = double; |   using Scalar = double; | ||||||
| 
 | 
 | ||||||
|   if (calib.get()) return calib; |   if (calib.get()) return calib; | ||||||
|  | |||||||
| @ -64,7 +64,7 @@ namespace fs = std::experimental::filesystem; | |||||||
| 
 | 
 | ||||||
| constexpr int UI_WIDTH = 200; | constexpr int UI_WIDTH = 200; | ||||||
| 
 | 
 | ||||||
| basalt::Device::Ptr t265_device; | basalt::RsT265Device::Ptr t265_device; | ||||||
| 
 | 
 | ||||||
| std::shared_ptr<pangolin::DataLog> imu_log; | std::shared_ptr<pangolin::DataLog> imu_log; | ||||||
| 
 | 
 | ||||||
| @ -81,7 +81,7 @@ std::atomic<bool> recording; | |||||||
| 
 | 
 | ||||||
| std::string dataset_dir; | std::string dataset_dir; | ||||||
| 
 | 
 | ||||||
| static constexpr int NUM_CAMS = basalt::Device::NUM_CAMS; | static constexpr int NUM_CAMS = basalt::RsT265Device::NUM_CAMS; | ||||||
| static constexpr int NUM_WORKERS = 8; | static constexpr int NUM_WORKERS = 8; | ||||||
| 
 | 
 | ||||||
| std::ofstream cam_data[NUM_CAMS], exposure_data[NUM_CAMS], imu0_data, pose_data; | std::ofstream cam_data[NUM_CAMS], exposure_data[NUM_CAMS], imu0_data, pose_data; | ||||||
| @ -192,7 +192,7 @@ void pose_save_worker() { | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void save_calibration(const basalt::Device::Ptr &device) { | void save_calibration(const basalt::RsT265Device::Ptr &device) { | ||||||
|   auto calib = device->exportCalibration(); |   auto calib = device->exportCalibration(); | ||||||
| 
 | 
 | ||||||
|   if (calib) { |   if (calib) { | ||||||
| @ -317,8 +317,8 @@ int main(int argc, char *argv[]) { | |||||||
|   pose_data_queue.set_capacity(10000); |   pose_data_queue.set_capacity(10000); | ||||||
| 
 | 
 | ||||||
|   // realsense
 |   // realsense
 | ||||||
|   t265_device.reset( |   t265_device.reset(new basalt::RsT265Device(manual_exposure, skip_frames, | ||||||
|       new basalt::Device(manual_exposure, skip_frames, webp_quality, exposure)); |                                              webp_quality, exposure)); | ||||||
| 
 | 
 | ||||||
|   t265_device->image_data_queue = &image_data_queue; |   t265_device->image_data_queue = &image_data_queue; | ||||||
|   t265_device->imu_data_queue = &imu_data_queue; |   t265_device->imu_data_queue = &imu_data_queue; | ||||||
| @ -352,7 +352,7 @@ int main(int argc, char *argv[]) { | |||||||
|                                           pangolin::Attach::Pix(UI_WIDTH)); |                                           pangolin::Attach::Pix(UI_WIDTH)); | ||||||
| 
 | 
 | ||||||
|     std::vector<std::shared_ptr<pangolin::ImageView>> img_view; |     std::vector<std::shared_ptr<pangolin::ImageView>> img_view; | ||||||
|     while (img_view.size() < basalt::Device::NUM_CAMS) { |     while (img_view.size() < basalt::RsT265Device::NUM_CAMS) { | ||||||
|       int idx = img_view.size(); |       int idx = img_view.size(); | ||||||
|       std::shared_ptr<pangolin::ImageView> iv(new pangolin::ImageView); |       std::shared_ptr<pangolin::ImageView> iv(new pangolin::ImageView); | ||||||
| 
 | 
 | ||||||
| @ -414,7 +414,8 @@ int main(int argc, char *argv[]) { | |||||||
|         fmt.scalable_internal_format = GL_LUMINANCE16; |         fmt.scalable_internal_format = GL_LUMINANCE16; | ||||||
| 
 | 
 | ||||||
|         if (t265_device->last_img_data.get()) |         if (t265_device->last_img_data.get()) | ||||||
|           for (size_t cam_id = 0; cam_id < basalt::Device::NUM_CAMS; cam_id++) { |           for (size_t cam_id = 0; cam_id < basalt::RsT265Device::NUM_CAMS; | ||||||
|  |                cam_id++) { | ||||||
|             if (t265_device->last_img_data->img_data[cam_id].img.get()) |             if (t265_device->last_img_data->img_data[cam_id].img.get()) | ||||||
|               img_view[cam_id]->SetImage( |               img_view[cam_id]->SetImage( | ||||||
|                   t265_device->last_img_data->img_data[cam_id].img->ptr, |                   t265_device->last_img_data->img_data[cam_id].img->ptr, | ||||||
|  | |||||||
| @ -74,7 +74,7 @@ void draw_plots(); | |||||||
| // Pangolin variables
 | // Pangolin variables
 | ||||||
| constexpr int UI_WIDTH = 200; | constexpr int UI_WIDTH = 200; | ||||||
| 
 | 
 | ||||||
| basalt::Device::Ptr t265_device; | basalt::RsT265Device::Ptr t265_device; | ||||||
| 
 | 
 | ||||||
| using Button = pangolin::Var<std::function<void(void)>>; | using Button = pangolin::Var<std::function<void(void)>>; | ||||||
| 
 | 
 | ||||||
| @ -106,7 +106,6 @@ std::string marg_data_path; | |||||||
| 
 | 
 | ||||||
| std::mutex m; | std::mutex m; | ||||||
| bool step_by_step = false; | bool step_by_step = false; | ||||||
| std::atomic<bool> terminate; |  | ||||||
| int64_t curr_t_ns = -1; | int64_t curr_t_ns = -1; | ||||||
| 
 | 
 | ||||||
| // VIO variables
 | // VIO variables
 | ||||||
| @ -117,7 +116,6 @@ basalt::OpticalFlowBase::Ptr opt_flow_ptr; | |||||||
| basalt::VioEstimatorBase::Ptr vio; | basalt::VioEstimatorBase::Ptr vio; | ||||||
| 
 | 
 | ||||||
| int main(int argc, char** argv) { | int main(int argc, char** argv) { | ||||||
|   terminate = false; |  | ||||||
|   bool show_gui = true; |   bool show_gui = true; | ||||||
|   bool print_queue = false; |   bool print_queue = false; | ||||||
|   std::string cam_calib_path; |   std::string cam_calib_path; | ||||||
| @ -156,7 +154,7 @@ int main(int argc, char** argv) { | |||||||
| 
 | 
 | ||||||
|   // realsense
 |   // realsense
 | ||||||
|   t265_device.reset( |   t265_device.reset( | ||||||
|       new basalt::Device(false, 1, 90, 10.0));  // TODO: add options?
 |       new basalt::RsT265Device(false, 1, 90, 10.0));  // TODO: add options?
 | ||||||
| 
 | 
 | ||||||
|   // startup device and load calibration
 |   // startup device and load calibration
 | ||||||
|   t265_device->start(); |   t265_device->start(); | ||||||
| @ -193,6 +191,8 @@ int main(int argc, char** argv) { | |||||||
|     t3.reset(new std::thread([&]() { |     t3.reset(new std::thread([&]() { | ||||||
|       while (true) { |       while (true) { | ||||||
|         out_vis_queue.pop(curr_vis_data); |         out_vis_queue.pop(curr_vis_data); | ||||||
|  | 
 | ||||||
|  |         if (!curr_vis_data.get()) break; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       std::cout << "Finished t3" << std::endl; |       std::cout << "Finished t3" << std::endl; | ||||||
| @ -326,7 +326,8 @@ int main(int argc, char** argv) { | |||||||
|             curr_vis_data->opt_flow_res->input_images.get()) { |             curr_vis_data->opt_flow_res->input_images.get()) { | ||||||
|           auto& img_data = curr_vis_data->opt_flow_res->input_images->img_data; |           auto& img_data = curr_vis_data->opt_flow_res->input_images->img_data; | ||||||
| 
 | 
 | ||||||
|           for (size_t cam_id = 0; cam_id < basalt::Device::NUM_CAMS; cam_id++) { |           for (size_t cam_id = 0; cam_id < basalt::RsT265Device::NUM_CAMS; | ||||||
|  |                cam_id++) { | ||||||
|             if (img_data[cam_id].img.get()) |             if (img_data[cam_id].img.get()) | ||||||
|               img_view[cam_id]->SetImage( |               img_view[cam_id]->SetImage( | ||||||
|                   img_data[cam_id].img->ptr, img_data[cam_id].img->w, |                   img_data[cam_id].img->ptr, img_data[cam_id].img->w, | ||||||
| @ -346,7 +347,8 @@ int main(int argc, char** argv) { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   terminate = true; |   t265_device->stop(); | ||||||
|  | 
 | ||||||
|   if (t3.get()) t3->join(); |   if (t3.get()) t3->join(); | ||||||
|   t4.join(); |   t4.join(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user