predict_with_network.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //202009016新增需求
  2. //将深度学习的算法转到一个高配的服务器上运行.
  3. //每个测量程序节点, 通过socket通信, 将8192个点云上传, 返回8192个点的类型.
  4. #ifndef NNXX_TESTS_PREDICT_FROM_SERVER_H
  5. #define NNXX_TESTS_PREDICT_FROM_SERVER_H
  6. #include "../error_code/error_code.h"
  7. #include "../message/measure_message.pb.h"
  8. #include "../message/message_base.pb.h"
  9. #include <map>
  10. #include <mutex>
  11. //从服务器进行点云预测算法的功能模块
  12. class Predict_with_network
  13. {
  14. public:
  15. //预测算法固定大小 8192
  16. #define PREDICT_CLOUD_SIZE 8192
  17. public:
  18. Predict_with_network();
  19. Predict_with_network(const Predict_with_network& other)= default;
  20. Predict_with_network& operator =(const Predict_with_network& other)= default;
  21. ~Predict_with_network();
  22. public://API functions
  23. //预测, 发送点云, 在服务器上进行点云算法
  24. //data_in:输入数据,大小为 输入点数*3
  25. //data_out:输出数据,大小为 输入点数*类别数
  26. Error_manager predict_for_send(int data_id, float* data_in);
  27. //预测, 接受预测结果, 算法时间较长, 请在外部循环接受. (方便中途放弃)
  28. //data_in:输入数据,大小为 输入点数*3
  29. //data_out:输出数据,大小为 输入点数*类别数
  30. //return:返回成功表示数据已经获取到了, 返回 NODATA 表示没有收到数据
  31. Error_manager predict_for_receive(int data_id, int* data_out);
  32. //签收预测的答复消息, 给通信模块调用, 将收到的预测答复消息, 存入 m_locate_sift_response_msg_map
  33. Error_manager execute_for_predict(std::string& message_string);
  34. public://get or set member variable
  35. protected://member functions
  36. protected://member variable
  37. //通信的消息, 索引编号为数据编号, (可以近似于雷达的编号, 比如楚天的就是0~3)
  38. std::mutex m_message_lock; //消息加锁
  39. std::map<int, message::Locate_sift_request_msg*> m_locate_sift_request_msg_map; //发送消息, 内存由本类管理
  40. std::map<int, message::Locate_sift_response_msg*> m_locate_sift_response_msg_map; //接受消息, 内存由本类管理
  41. private:
  42. };
  43. #endif //NNXX_TESTS_PREDICT_FROM_SERVER_H