transfusion_call.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "transfusion_call.h"
  2. transfusion_call::transfusion_call()
  3. {
  4. std::string engine_path ="/home/nvidia/models/transfusion.eng";
  5. std::string onnx_path = "/home/nvidia/models/transfusion.onnx";
  6. std::string trt_precision ="fp16" ;
  7. std::string densification_world_frame_id = "world";
  8. int densification_num_past_frames = 0;
  9. std::size_t cloud_capacity = 2000000;
  10. std::vector<int64_t> voxels_num;
  11. std::vector<double> point_cloud_range;
  12. std::vector<double> voxel_size;
  13. std::size_t num_proposals = 500;
  14. float circle_nms_dist_threshold = 0.5;
  15. std::vector<double> yaw_norm_thresholds;
  16. float score_threshold = 0.2;
  17. voxels_num.push_back(5000);voxels_num.push_back(30000);voxels_num.push_back(60000);
  18. point_cloud_range.push_back(-76.8);point_cloud_range.push_back(-76.8);point_cloud_range.push_back(-3.0);
  19. point_cloud_range.push_back(76.8);point_cloud_range.push_back(76.8);point_cloud_range.push_back(5.0);
  20. voxel_size.push_back(0.3);voxel_size.push_back(0.3);voxel_size.push_back(8.0);
  21. yaw_norm_thresholds.push_back(0.3);yaw_norm_thresholds.push_back(0.3);yaw_norm_thresholds.push_back(0.3);
  22. yaw_norm_thresholds.push_back(0.3);yaw_norm_thresholds.push_back(0.0);
  23. NetworkParam network_param(onnx_path, engine_path, trt_precision);
  24. DensificationParam densification_param(
  25. densification_world_frame_id, densification_num_past_frames);
  26. TransfusionConfig config(
  27. cloud_capacity, voxels_num, point_cloud_range, voxel_size, num_proposals,
  28. circle_nms_dist_threshold, yaw_norm_thresholds, score_threshold);
  29. detector_ptr_ = std::make_unique<TransfusionTRT>(network_param, densification_param, config);
  30. }
  31. bool transfusion_call::detect(
  32. const pcl::PointCloud<pcl::PointXYZI>::Ptr & pc_ptr,
  33. std::vector<Box3D> & det_boxes3d)
  34. {
  35. std::unordered_map<std::string, double> proc_timing;
  36. return detector_ptr_->detect(pc_ptr,det_boxes3d,proc_timing);
  37. }