safety_excutor.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //
  2. // Created by zx on 2021/12/16.
  3. //
  4. #include "safety_excutor.h"
  5. safety_excutor::safety_excutor()
  6. {
  7. mp_lidars=nullptr;
  8. }
  9. safety_excutor::~safety_excutor()
  10. {
  11. if(mp_lidars!= nullptr)
  12. {
  13. delete[] mp_lidars;
  14. mp_lidars= nullptr;
  15. }
  16. }
  17. bool safety_excutor::init(const shutter::shutter_param& parameter)
  18. {
  19. if(parameter.lidars_size()==0)
  20. return false;
  21. mp_lidars=new livox::LivoxMid70[parameter.lidars_size()];
  22. for(int i=0;i<parameter.lidars_size();++i)
  23. {
  24. shutter::lidar_parameter ld_p=parameter.lidars(i);
  25. mp_lidars[i].AddBroadcastCode(parameter.lidars(i).sncode());
  26. mp_lidars[i].SetFPS(parameter.lidars(i).fps());
  27. mp_lidars[i].SetTransformParam(Eigen::Vector3f(ld_p.r(),ld_p.p(),ld_p.y()),
  28. Eigen::Vector3f(ld_p.tx(),ld_p.ty(),ld_p.tz()));
  29. }
  30. m_parameter=parameter;
  31. return true;
  32. }
  33. safety_excutor* safety_excutor::CreateExcutor(const shutter::shutter_param& parameter)
  34. {
  35. safety_excutor* excutor=new safety_excutor();
  36. if(excutor->init(parameter)==false)
  37. return nullptr;
  38. return excutor;
  39. }
  40. #include <pcl/visualization/pcl_visualizer.h>
  41. extern pcl::visualization::PCLVisualizer viewer;
  42. bool safety_excutor::verify()
  43. {
  44. pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
  45. for(int i=0;i<m_parameter.lidars_size();++i)
  46. {
  47. pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_t=mp_lidars[i].GetCloud();
  48. (*cloud)+=(*cloud_t);
  49. }
  50. printf(" shutter recieve points %d\n",cloud->size());
  51. viewer.removeAllPointClouds();
  52. pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color2(cloud, 0,255,0); // green
  53. viewer.addPointCloud(cloud, single_color2, "cloud");
  54. viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
  55. viewer.spinOnce();
  56. }