lidarsJsonConfig.cpp 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. /**
  2. * @project shutter_verify
  3. * @brief $BRIEF$
  4. * @author lz
  5. * @data 2023/4/13
  6. **/
  7. #include "lidarsJsonConfig.h"
  8. #include <utility>
  9. lidarsJsonConfig::lidarsJsonConfig(std::string path) {
  10. m_path = path;
  11. }
  12. bool lidarsJsonConfig::getLidarConfig(int ordinal, lidarsJsonConfig::LidarConfig &lidarconfig) {
  13. if (m_config.empty() && !update()) {
  14. return false;
  15. }
  16. if (m_config.size() <= ordinal) {
  17. return false;
  18. }
  19. JV_DOUBLE(m_config[ordinal], "angle_min", lidarconfig.angle_min, DEFAULT_DOUBLE)
  20. JV_DOUBLE(m_config[ordinal], "angle_max", lidarconfig.angle_max, DEFAULT_DOUBLE)
  21. JV_DOUBLE(m_config[ordinal], "angle_increment", lidarconfig.angle_increment, DEFAULT_DOUBLE)
  22. JV_DOUBLE(m_config[ordinal], "time_increment", lidarconfig.time_increment, DEFAULT_DOUBLE)
  23. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "minx", lidarconfig.scan_box_limit.minx, DEFAULT_DOUBLE)
  24. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "maxx", lidarconfig.scan_box_limit.maxx, DEFAULT_DOUBLE)
  25. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "miny", lidarconfig.scan_box_limit.miny, DEFAULT_DOUBLE)
  26. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "maxy", lidarconfig.scan_box_limit.maxy, DEFAULT_DOUBLE)
  27. JV_INT(m_config[ordinal], "range_min", lidarconfig.range_min, DEFAULT_INT)
  28. JV_INT(m_config[ordinal], "range_max", lidarconfig.range_max, DEFAULT_INT)
  29. JV_INT(m_config[ordinal]["net_config"], "port", lidarconfig.net_config.port, DEFAULT_INT)
  30. JV_INT(m_config[ordinal]["scan_box_limit"], "dist_limit", lidarconfig.scan_box_limit.dist_limit, DEFAULT_INT)
  31. JV_STRING(m_config[ordinal]["net_config"], "ip_address", lidarconfig.net_config.ip_address, DEFAULT_STRING)
  32. return true;
  33. }
  34. bool lidarsJsonConfig::getNetConfig(int ordinal, lidarsJsonConfig::NetConfig &net_config) {
  35. if (m_config.empty() && !update()) {
  36. return false;
  37. }
  38. if (m_config.size() <= ordinal) {
  39. return false;
  40. }
  41. JV_INT(m_config[ordinal]["net_config"], "port", net_config.port, DEFAULT_INT)
  42. JV_STRING(m_config[ordinal]["net_config"], "ip_address", net_config.ip_address, DEFAULT_STRING)
  43. return true;
  44. }
  45. bool lidarsJsonConfig::getScanBoxLimit(int ordinal, lidarsJsonConfig::ScanBoxLimit &scan_box_limit) {
  46. if (m_config.empty() && !update()) {
  47. return false;
  48. }
  49. if (m_config.size() <= ordinal) {
  50. return false;
  51. }
  52. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "minx", scan_box_limit.minx, DEFAULT_DOUBLE)
  53. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "maxx", scan_box_limit.maxx, DEFAULT_DOUBLE)
  54. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "miny", scan_box_limit.miny, DEFAULT_DOUBLE)
  55. JV_DOUBLE(m_config[ordinal]["scan_box_limit"], "maxy", scan_box_limit.maxy, DEFAULT_DOUBLE)
  56. JV_INT(m_config[ordinal]["scan_box_limit"], "dist_limit", scan_box_limit.dist_limit, DEFAULT_INT)
  57. return true;
  58. }
  59. bool lidarsJsonConfig::update() {
  60. Json::Value config;
  61. if (!ReadJsonFile(m_path, config)) {
  62. LOG(ERROR) << "Read json etc file " << m_path << " failture, exit 0.";
  63. exit(0);
  64. }
  65. for (int i = 0; i < config.size(); i++) {
  66. JV_DOUBLE(config[i], "angle_min", m_config[i]["angle_min"], DEFAULT_DOUBLE)
  67. JV_DOUBLE(config[i], "angle_max", m_config[i]["angle_max"], DEFAULT_DOUBLE)
  68. JV_DOUBLE(config[i], "angle_increment", m_config[i]["angle_increment"], DEFAULT_DOUBLE)
  69. JV_DOUBLE(config[i], "time_increment", m_config[i]["time_increment"], DEFAULT_DOUBLE)
  70. JV_DOUBLE(config[i]["scan_box_limit"], "minx", m_config[i]["scan_box_limit"]["minx"], DEFAULT_DOUBLE)
  71. JV_DOUBLE(config[i]["scan_box_limit"], "maxx", m_config[i]["scan_box_limit"]["maxx"], DEFAULT_DOUBLE)
  72. JV_DOUBLE(config[i]["scan_box_limit"], "miny", m_config[i]["scan_box_limit"]["miny"], DEFAULT_DOUBLE)
  73. JV_DOUBLE(config[i]["scan_box_limit"], "maxy", m_config[i]["scan_box_limit"]["maxy"], DEFAULT_DOUBLE)
  74. JV_INT(config[i], "range_min", m_config[i]["range_min"], DEFAULT_INT)
  75. JV_INT(config[i], "range_max", m_config[i]["range_max"], DEFAULT_INT)
  76. JV_INT(config[i]["net_config"], "port", m_config[i]["net_config"]["port"], DEFAULT_INT)
  77. JV_INT(config[i]["scan_box_limit"], "dist_limit", m_config[i]["scan_box_limit"]["dist_limit"], DEFAULT_INT)
  78. JV_STRING(config[i]["net_config"], "ip_address", m_config[i]["net_config"]["ip_address"], DEFAULT_STRING)
  79. }
  80. return true;
  81. }
  82. double lidarsJsonConfig::angle_min(int ordinal) {
  83. if (m_config.empty() && !update()) {
  84. return DEFAULT_DOUBLE;
  85. }
  86. if (m_config.size() <= ordinal) {
  87. return DEFAULT_DOUBLE;
  88. }
  89. return m_config[ordinal]["angle_min"].asDouble();
  90. }
  91. double lidarsJsonConfig::angle_max(int ordinal) {
  92. if (m_config.empty() && !update()) {
  93. return DEFAULT_DOUBLE;
  94. }
  95. if (m_config.size() <= ordinal) {
  96. return DEFAULT_DOUBLE;
  97. }
  98. return m_config[ordinal]["angle_max"].asDouble();
  99. }
  100. double lidarsJsonConfig::angle_increment(int ordinal) {
  101. if (m_config.empty() && !update()) {
  102. return DEFAULT_DOUBLE;
  103. }
  104. if (m_config.size() <= ordinal) {
  105. return DEFAULT_DOUBLE;
  106. }
  107. return m_config[ordinal]["angle_increment"].asDouble();
  108. }
  109. double lidarsJsonConfig::time_increment(int ordinal) {
  110. if (m_config.empty() && !update()) {
  111. return DEFAULT_DOUBLE;
  112. }
  113. if (m_config.size() <= ordinal) {
  114. return DEFAULT_DOUBLE;
  115. }
  116. return m_config[ordinal]["time_increment"].asDouble();
  117. }
  118. int lidarsJsonConfig::range_min(int ordinal) {
  119. if (m_config.empty() && !update()) {
  120. return DEFAULT_INT;
  121. }
  122. if (m_config.size() <= ordinal) {
  123. return DEFAULT_INT;
  124. }
  125. return m_config[ordinal]["range_min"].asInt();
  126. }
  127. int lidarsJsonConfig::range_max(int ordinal) {
  128. if (m_config.empty() && !update()) {
  129. return DEFAULT_INT;
  130. }
  131. if (m_config.size() <= ordinal) {
  132. return DEFAULT_INT;
  133. }
  134. return m_config[ordinal]["range_max"].asInt();
  135. }
  136. std::string lidarsJsonConfig::ip_address(int ordinal) {
  137. if (m_config.empty() && !update()) {
  138. return DEFAULT_STRING;
  139. }
  140. if (m_config.size() <= ordinal) {
  141. return DEFAULT_STRING;
  142. }
  143. return m_config[ordinal]["net_config"]["ip_address"].asString();
  144. }
  145. int lidarsJsonConfig::port(int ordinal) {
  146. if (m_config.empty() && !update()) {
  147. return DEFAULT_INT;
  148. }
  149. if (m_config.size() <= ordinal) {
  150. return DEFAULT_INT;
  151. }
  152. return m_config[ordinal]["net_config"]["port"].asInt();
  153. }
  154. int lidarsJsonConfig::dist_limit(int ordinal) {
  155. if (m_config.empty() && !update()) {
  156. return DEFAULT_INT;
  157. }
  158. if (m_config.size() <= ordinal) {
  159. return DEFAULT_INT;
  160. }
  161. return m_config[ordinal]["scan_box_limit"]["dist_limit"].asInt();
  162. }
  163. double lidarsJsonConfig::minx(int ordinal) {
  164. if (m_config.empty() && !update()) {
  165. return DEFAULT_DOUBLE;
  166. }
  167. if (m_config.size() <= ordinal) {
  168. return DEFAULT_DOUBLE;
  169. }
  170. return m_config[ordinal]["scan_box_limit"]["minx"].asDouble();
  171. }
  172. double lidarsJsonConfig::maxx(int ordinal) {
  173. if (m_config.empty() && !update()) {
  174. return DEFAULT_DOUBLE;
  175. }
  176. if (m_config.size() <= ordinal) {
  177. return DEFAULT_DOUBLE;
  178. }
  179. return m_config[ordinal]["scan_box_limit"]["maxx"].asDouble();
  180. }
  181. double lidarsJsonConfig::miny(int ordinal) {
  182. if (m_config.empty() && !update()) {
  183. return DEFAULT_DOUBLE;
  184. }
  185. if (m_config.size() <= ordinal) {
  186. return DEFAULT_DOUBLE;
  187. }
  188. return m_config[ordinal]["scan_box_limit"]["miny"].asDouble();
  189. }
  190. double lidarsJsonConfig::maxy(int ordinal) {
  191. if (m_config.empty() && !update()) {
  192. return DEFAULT_DOUBLE;
  193. }
  194. if (m_config.size() <= ordinal) {
  195. return DEFAULT_DOUBLE;
  196. }
  197. return m_config[ordinal]["scan_box_limit"]["maxy"].asDouble();
  198. }