SLAMTEC Aurora Public Remote SDK  1.2.0-rtm
slamtec_remote_public.hxx
1 /*
2  * SLAMTEC Aurora
3  * Copyright 2013 - 2024 SLAMTEC Co., Ltd.
4  *
5  * http://www.slamtec.com
6  *
7  * Aurora Remote SDK
8  * C++ Wrapper Header of the SDK
9  *
10  * At lease C++ 14 is required
11  */
12 
13 
14 #pragma once
15 
16 
17 #include <cstdlib>
18 #include <vector>
19 #include <string>
20 #include <cstring>
21 #include <algorithm>
22 #include <functional>
23 #include <memory>
24 
25 #include "slamtec_remote_objects.hxx"
26 
27  // end of SDK_Cxx_Wrapper
74 
75 
76 namespace rp { namespace standalone { namespace aurora {
77 
78 
79 
80 class RemoteSDK;
81 class RemoteDataProvider;
82 class RemoteController;
83 class RemoteMapManager;
84 class LIDAR2DMapBuilder;
85 
92 {
93  friend class RemoteSDK;
94 public:
96  : _sdk_listener_obj{ 0 }
97  {
98  _sdk_listener_obj.user_data = this;
99  _binding();
100  }
101  virtual ~RemoteSDKListener() {}
102 
108  virtual void onTrackingData(const RemoteTrackingFrameInfo & info) {}
109 
115  virtual void onRawCamImageData(uint64_t timestamp_ns, const RemoteImageRef& left, const RemoteImageRef & right) {}
116 
122  virtual void onIMUData(const slamtec_aurora_sdk_imu_data_t* imuBuffer, size_t bufferCount) {}
123 
130 
136  virtual void onDeviceStatusChanged(uint64_t timestamp_ns, slamtec_aurora_sdk_device_status_t status) {}
137 
138 
145 
146 private:
147 
148  void _binding() {
149  _sdk_listener_obj.on_raw_image_data = [](void* user_data, uint64_t timestamp_ns, const slamtec_aurora_sdk_image_desc_t* left_desc, const void* left_data, const slamtec_aurora_sdk_image_desc_t* right_desc, const void* right_data) {
150  RemoteSDKListener* This = reinterpret_cast<RemoteSDKListener *>(user_data);
151 
152  RemoteImageRef left(*left_desc, left_data);
153  RemoteImageRef right(*right_desc, right_data);
154 
155  This->onRawCamImageData(timestamp_ns, left, right);
156  };
157 
158  _sdk_listener_obj.on_tracking_data = [](void* user_data, const slamtec_aurora_sdk_tracking_info_t* tracking_data, const slamtec_aurora_sdk_tracking_data_buffer_t* provided_buffer_info) {
159  RemoteSDKListener* This = reinterpret_cast<RemoteSDKListener*>(user_data);
160 
161  RemoteTrackingFrameInfo frameInfo(*tracking_data, *provided_buffer_info);
162 
163  This->onTrackingData(frameInfo);
164  };
165 
166  _sdk_listener_obj.on_imu_data = [](void* user_data, const slamtec_aurora_sdk_imu_data_t* imu_data, size_t imu_data_count) {
167  RemoteSDKListener* This = reinterpret_cast<RemoteSDKListener*>(user_data);
168 
169  This->onIMUData(imu_data, imu_data_count);
170  };
171 
172  _sdk_listener_obj.on_mapping_flags = [](void* user_data, slamtec_aurora_sdk_mapping_flag_t flags) {
173  RemoteSDKListener* This = reinterpret_cast<RemoteSDKListener*>(user_data);
174 
175  This->onNewMappingFlags(flags);
176  };
177 
178  _sdk_listener_obj.on_device_status = [](void* user_data, uint64_t timestamp_ns, slamtec_aurora_sdk_device_status_t status) {
179  RemoteSDKListener* This = reinterpret_cast<RemoteSDKListener*>(user_data);
180 
181  This->onDeviceStatusChanged(timestamp_ns, status);
182  };
183 
184  _sdk_listener_obj.on_lidar_scan = [](void* user_data, const slamtec_aurora_sdk_lidar_singlelayer_scandata_info_t* header, const slamtec_aurora_sdk_lidar_scan_point_t* points) {
185  RemoteSDKListener* This = reinterpret_cast<RemoteSDKListener*>(user_data);
186  This->onLIDARScan(*header, points);
187  };
188 
189  }
190 
191 protected:
192  slamtec_aurora_sdk_listener_t _sdk_listener_obj;
193 };
194 #if 0
195 class RemoteMapDataVisitor {
196 public:
197  friend class RemoteDataProvider;
198 
199  virtual ~RemoteMapDataVisitor() {}
200  RemoteMapDataVisitor()
201  {
202  memset(&_visitor_obj, 0, sizeof(_visitor_obj));
203  _visitor_obj.user_data = this;
204  binding();
205  }
206 
207  virtual void onMapData(const slamtec_aurora_sdk_map_desc_t* mapData) {}
208  virtual void onKeyFrameData(const slamtec_aurora_sdk_keyframe_desc_t* keyFrameData) {}
209  virtual void onMapPointData(const slamtec_aurora_sdk_map_point_desc_t* mpData) {}
210 
211 
212 protected:
213  void binding() {
214  _visitor_obj.on_map_desc = [](void* user_data, const slamtec_aurora_sdk_map_desc_t* map_data) {
215  RemoteMapDataVisitor* This = reinterpret_cast<RemoteMapDataVisitor*>(user_data);
216  This->onMapData(map_data);
217  };
218 
219  _visitor_obj.on_keyframe = [](void* user_data, const slamtec_aurora_sdk_keyframe_desc_t* keyframe_data) {
220  RemoteMapDataVisitor* This = reinterpret_cast<RemoteMapDataVisitor*>(user_data);
221  This->onKeyFrameData(keyframe_data);
222  };
223 
224  _visitor_obj.on_map_point = [](void* user_data, const slamtec_aurora_sdk_map_point_desc_t* mp_data) {
225  RemoteMapDataVisitor* This = reinterpret_cast<RemoteMapDataVisitor*>(user_data);
226  This->onMapPointData(mp_data);
227  };
228  }
229 
230 
232 
233 };
234 #endif
235 
242 public:
243  friend class RemoteDataProvider;
244 
245  using MapDataCallback = std::function<const void(const slamtec_aurora_sdk_map_desc_t&)>;
246  using KeyFrameDataCallback = std::function<const void(const RemoteKeyFrameData &)>;
247  using MapPointDataCallback = std::function<const void(const slamtec_aurora_sdk_map_point_desc_t&)>;
248 
250  : _visitor_obj{0}
251  {
252  _visitor_obj.user_data = this;
253  }
254 
258  void subscribeMapData(const MapDataCallback& mapDataCallback) {
259  _mapDataCallback = (mapDataCallback);
260 
261  _visitor_obj.on_map_desc = [](void* user_data, const slamtec_aurora_sdk_map_desc_t* map_data) {
262  RemoteMapDataVisitor* This = reinterpret_cast<RemoteMapDataVisitor*>(user_data);
263  This->_mapDataCallback(*map_data);
264  };
265  }
266 
270  void subscribeKeyFrameData(const KeyFrameDataCallback& keyFrameDataCallback) {
271  _keyFrameDataCallback = (keyFrameDataCallback);
272  _visitor_obj.on_keyframe = [](void* user_data, const slamtec_aurora_sdk_keyframe_desc_t* keyframe_data, const uint64_t * lcIDs, const uint64_t * connIDs) {
273  RemoteMapDataVisitor* This = reinterpret_cast<RemoteMapDataVisitor*>(user_data);
274  RemoteKeyFrameData kframeData(*keyframe_data, lcIDs, connIDs);
275 
276  This->_keyFrameDataCallback(kframeData);
277  };
278  }
279 
283  void subscribeMapPointData(const MapPointDataCallback& mapPointDataCallback) {
284  _mapPointDataCallback = (mapPointDataCallback);
285  _visitor_obj.on_map_point = [](void* user_data, const slamtec_aurora_sdk_map_point_desc_t* mp_data) {
286  RemoteMapDataVisitor* This = reinterpret_cast<RemoteMapDataVisitor*>(user_data);
287  This->_mapPointDataCallback(*mp_data);
288  };
289  }
290 
291 protected:
292  MapDataCallback _mapDataCallback;
293  KeyFrameDataCallback _keyFrameDataCallback;
294  MapPointDataCallback _mapPointDataCallback;
295 
297 };
298 
299 
305 {
306 
307 public:
309  memset(this, 0, sizeof(slamtec_aurora_sdk_session_config_t));
310  }
311 };
312 
313 
314 
320  friend class RemoteSDK;
321 public:
322 
330  size_t getDiscoveredServers(std::vector<SDKServerConnectionDesc>& serverList, size_t maxFetchCount = 32)
331  {
332  serverList.resize(maxFetchCount);
333 
334  auto count = slamtec_aurora_sdk_controller_get_discovered_servers(_sdk, serverList.data(), maxFetchCount);
335  serverList.resize(count);
336  return count;
337  }
338 
345  bool connect(const SDKServerConnectionDesc& serverDesc, slamtec_aurora_sdk_errorcode_t * errCode = nullptr) {
346  auto result = slamtec_aurora_sdk_controller_connect(_sdk, &serverDesc);
347  if (errCode) {
348  *errCode = result;
349  }
350  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
351  }
352 
356  void disconnect() {
358  }
359 
364  bool isConnected() {
366  }
367 
374  void setLowRateMode(bool enable) {
376  }
377 
386  void setMapDataSyncing(bool enable) {
388  }
389 
395  void resyncMapData(bool invalidateCache = false) {
396  slamtec_aurora_sdk_controller_resync_map_data(_sdk, invalidateCache ? 1 : 0);
397  }
398 
404  void setRawDataSubscription(bool enable) {
406  }
407 
414  }
415 
422  bool requireMapReset(uint64_t timeout_ms = SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t * errcode = nullptr) {
423  auto result = slamtec_aurora_sdk_controller_require_map_reset(_sdk, timeout_ms);
424  if (errcode) {
425  *errcode = result;
426  }
427  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
428  }
429 
436  bool requirePureLocalizationMode(uint64_t timeout_ms = SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
437  auto result = slamtec_aurora_sdk_controller_require_pure_localization_mode(_sdk, timeout_ms);
438  if (errcode) {
439  *errcode = result;
440  }
441  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
442  }
443 
450  bool requireMappingMode(uint64_t timeout_ms = SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
451  auto result = slamtec_aurora_sdk_controller_require_mapping_mode(_sdk, timeout_ms);
452  if (errcode) {
453  *errcode = result;
454  }
455  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
456  }
457 
465  bool requireRelocalization(uint64_t timeout_ms = SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
466  auto result = slamtec_aurora_sdk_controller_require_relocalization(_sdk, timeout_ms);
467  if (errcode) {
468  *errcode = result;
469  }
470  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
471  }
472 
479  bool cancelRelocalization(uint64_t timeout_ms = SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
480  auto result = slamtec_aurora_sdk_controller_cancel_relocalization(_sdk, timeout_ms);
481  if (errcode) {
482  *errcode = result;
483  }
484  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
485  }
486 
494  bool setLoopClosure(bool enable, uint64_t timeout_ms = SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
495  auto result = slamtec_aurora_sdk_controller_set_loop_closure(_sdk, enable ? 1 : 0, timeout_ms);
496  if (errcode) {
497  *errcode = result;
498  }
499  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
500  }
501 
514  bool sendCustomCommand(uint64_t timeout_ms, uint64_t cmd, const void* data = nullptr, size_t data_size = 0, void* response = nullptr, size_t response_buffer_size = 0, size_t* response_retrieved_size = nullptr, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
515  auto result = slamtec_aurora_sdk_controller_send_custom_command(_sdk, timeout_ms, cmd, data, data_size, response, response_buffer_size, response_retrieved_size);
516  if (errcode) {
517  *errcode = result;
518  }
519  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
520  }
521 
522 
523 
524 protected:
525 
527  : _sdk(sdk)
528  {}
529 
531 };
532 
533 
541  friend class RemoteSDK;
542 public:
543 
556  bool startUploadSession(const char* mapfilePath, slamtec_aurora_sdk_mapstorage_session_result_callback_t resultCallBack = nullptr, void * userData = nullptr, slamtec_aurora_sdk_errorcode_t* errCode = nullptr) {
557  return startSession(mapfilePath, SLAMTEC_AURORA_SDK_MAPSTORAGE_SESSION_TYPE_UPLOAD, resultCallBack, userData, errCode);
558  }
559 
569  bool startDownloadSession(const char* mapfilePath, slamtec_aurora_sdk_mapstorage_session_result_callback_t resultCallBack = nullptr, void* userData = nullptr, slamtec_aurora_sdk_errorcode_t* errCode = nullptr) {
570  return startSession(mapfilePath, SLAMTEC_AURORA_SDK_MAPSTORAGE_SESSION_TYPE_DOWNLOAD, resultCallBack, userData, errCode);
571  }
572 
583  bool startSession(const char* mapfilePath, slamtec_aurora_sdk_mapstorage_session_type_t sessionType, slamtec_aurora_sdk_mapstorage_session_result_callback_t resultCallBack = nullptr, void* userData = nullptr, slamtec_aurora_sdk_errorcode_t* errCode = nullptr) {
584  auto result = slamtec_aurora_sdk_mapmanager_start_storage_session(_sdk, mapfilePath, sessionType, resultCallBack, userData);
585  if (errCode) {
586  *errCode = result;
587  }
588  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
589  }
590 
597  }
598 
604  void abortSession() {
606  }
607 
615  auto result = slamtec_aurora_sdk_mapmanager_query_storage_status(_sdk, &progressOut);
616  if (errCode) {
617  *errCode = result;
618  }
619  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
620  }
621 
622 
623 
624 protected:
626  : _sdk(sdk)
627  {}
628 
630 };
631 
632 
633 
640  friend class RemoteSDK;
641 public:
652  auto result = slamtec_aurora_sdk_dataprovider_get_current_pose_se3(_sdk, &poseOut);
653  if (errcode) {
654  *errcode = result;
655  }
656  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
657  }
658 
670  auto result = slamtec_aurora_sdk_dataprovider_get_current_pose(_sdk, &poseOut);
671  if (errcode) {
672  *errcode = result;
673  }
674  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
675  }
676 
685  auto result = slamtec_aurora_sdk_dataprovider_get_mapping_flags(_sdk, &flagsOut);
686  if (errcode) {
687  *errcode = result;
688  }
689  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
690  }
691 
700  bool getLastDeviceStatus(slamtec_aurora_sdk_device_status_t& statusOut, uint64_t & timestamp_ns, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
701  auto result = slamtec_aurora_sdk_dataprovider_get_last_device_status(_sdk, &statusOut, &timestamp_ns);
702  if (errcode) {
703  *errcode = result;
704  }
705  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
706  }
707 
720 
721 
722 
723  std::vector<uint8_t> imgbufferLeft, imgbufferRight;
724  std::vector< slamtec_aurora_sdk_keypoint_t> keypointBufferLeft, keypointBufferRight;
725 
726 
727  // fetch the image and kp count
728  memset(&bufferInfo, 0, sizeof(bufferInfo));
729  auto result = slamtec_aurora_sdk_dataprovider_peek_tracking_data(_sdk, &trackingInfo, &bufferInfo);
730 
731  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
732  if (errcode) {
733  *errcode = result;
734  }
735  return false;
736  }
737 
738 
739  // allocate buffer
740  imgbufferLeft.resize(trackingInfo.left_image_desc.data_size);
741  imgbufferRight.resize(trackingInfo.right_image_desc.data_size);
742  keypointBufferLeft.resize(trackingInfo.keypoints_left_count);
743  keypointBufferRight.resize(trackingInfo.keypoints_right_count);
744 
745  bufferInfo.imgdata_left = imgbufferLeft.data();
746  bufferInfo.imgdata_right = imgbufferRight.data();
747  bufferInfo.keypoints_left = keypointBufferLeft.data();
748  bufferInfo.keypoints_right = keypointBufferRight.data();
749 
750  bufferInfo.imgdata_left_size = imgbufferLeft.size();
751  bufferInfo.imgdata_right_size = imgbufferRight.size();
752  bufferInfo.keypoints_left_buffer_count = keypointBufferLeft.size();
753  bufferInfo.keypoints_right_buffer_count = keypointBufferRight.size();
754 
755 
756  result = slamtec_aurora_sdk_dataprovider_peek_tracking_data(_sdk, &trackingInfo, &bufferInfo);
757  if (errcode) {
758  *errcode = result;
759  }
760 
761  if (result == SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
762  infoOut = std::move(RemoteTrackingFrameInfo(trackingInfo,
763  std::move(imgbufferLeft), std::move(imgbufferRight),
764  std::move(keypointBufferLeft), std::move(keypointBufferRight)));
765  }
766 
767  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
768  }
769 
770  //peek peek VSLAM System Status
771  bool peekVSLAMSystemStatus(slamtec_aurora_sdk_device_status_desc_t& statusOut, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
772  auto result = slamtec_aurora_sdk_dataprovider_get_last_device_status(_sdk, &statusOut.status, &statusOut.timestamp_ns);
773  if (errcode) {
774  *errcode = result;
775  }
776  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
777  }
778 
779  bool peekRelocalizationStatus(slamtec_aurora_sdk_relocalization_status_t & statusOut, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
780  auto result = slamtec_aurora_sdk_dataprovider_get_relocalization_status(_sdk, &statusOut.status, &statusOut.timestamp_ns);
781  if (errcode) {
782  *errcode = result;
783  }
784  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
785  }
786 
799  bool peekRecentLIDARScanSingleLayer(SingleLayerLIDARScan& scanData, slamtec_aurora_sdk_pose_se3_t & scanPoseSE3, bool forceLatest = false, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
800  // pre-allocate the buffer
801  std::vector< slamtec_aurora_sdk_lidar_scan_point_t> localdata;
802 
803  size_t newSize = 4096;
804 
805  do {
806  localdata.resize(newSize);
807  auto result = slamtec_aurora_sdk_dataprovider_peek_recent_lidar_scan_singlelayer(_sdk, &scanData.info, localdata.data(), localdata.size(), &scanPoseSE3, forceLatest ? 1 : 0);
808 
809  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
810  scanData.scanData.clear();
811  if (errcode) {
812  *errcode = result;
813  }
814  return false;
815  }
816 
817 
818  // not enough buffer? less likely to happen
819  if (scanData.info.scan_count > localdata.size()) {
820  newSize = scanData.info.scan_count;
821  continue;
822  }
823 
824 
825  localdata.resize(scanData.info.scan_count);
826  scanData.scanData = std::move(localdata);
827 
828  return true;
829 
830  } while (1);
831 
832  return false;
833  }
834 
844  bool peekIMUData(std::vector<slamtec_aurora_sdk_imu_data_t>& imuDataOut, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
845  size_t bufferCount = 0;
846  imuDataOut.resize(4096);
847  auto result = slamtec_aurora_sdk_dataprovider_peek_imu_data(_sdk, imuDataOut.data(), imuDataOut.size(), &bufferCount);
848  if (errcode) {
849  *errcode = result;
850  }
851  if (result == SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
852  imuDataOut.resize(bufferCount);
853  }
854  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
855  }
856 
865  auto result = slamtec_aurora_sdk_dataprovider_get_imu_info(_sdk, &infoOut);
866  if (errcode) {
867  *errcode = result;
868  }
869  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
870  }
871 
880  auto result = slamtec_aurora_sdk_dataprovider_get_global_mapping_info(_sdk, &descOut);
881  if (errcode) {
882  *errcode = result;
883  }
884  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
885  }
886 
894  bool getAllMapInfo(std::vector<slamtec_aurora_sdk_map_desc_t>& descBuffer, slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
895  size_t mapCount;
896  auto result = slamtec_aurora_sdk_dataprovider_get_all_map_info(_sdk, nullptr, 0, &mapCount);
897 
898  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
899  if (errcode) {
900  *errcode = result;
901  }
902  return false;
903  }
904 
905  descBuffer.resize(mapCount*2);
906  size_t actualCount = 0;
907  result = slamtec_aurora_sdk_dataprovider_get_all_map_info(_sdk, descBuffer.data(), descBuffer.size(), &actualCount);
908  if (errcode) {
909  *errcode = result;
910  }
911  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
912  descBuffer.clear();
913  return false;
914  }
915  descBuffer.resize(actualCount);
916  return true;
917  }
918 
932  bool accessMapData(const RemoteMapDataVisitor& visitor, std::vector<uint32_t> mapIDs = std::vector<uint32_t>() , slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
933  return accessMapData(visitor._visitor_obj, mapIDs, errcode);
934  }
935 
949  bool accessMapData(const slamtec_aurora_sdk_map_data_visitor_t& visitor, std::vector<uint32_t> mapIDs = std::vector<uint32_t>(), slamtec_aurora_sdk_errorcode_t* errcode = nullptr) {
950  uint32_t* mapIDsBuffer = nullptr;
951  size_t mapCount = 0;
952  if (!mapIDs.empty()) {
953  mapIDsBuffer = mapIDs.data();
954  mapCount = mapIDs.size();
955  }
956 
957 
958  auto result = slamtec_aurora_sdk_dataprovider_access_map_data(_sdk, &visitor, mapIDsBuffer, mapCount);
959  if (errcode) {
960  *errcode = result;
961  }
962  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
963  }
964 
965 protected:
967  : _sdk(sdk)
968  {}
969 
971 };
972 
979  friend class LIDAR2DMapBuilder;
980 public:
982  : _handle(handle), _ownBuffer(ownBuffer)
983  {
984  }
985 
986 
988  if (_ownBuffer) {
990  }
991  }
992 
997  float getResolution() const {
998  float resolution;
999  if (slamtec_aurora_sdk_lidar2dmap_gridmap_get_resolution(_handle, &resolution) != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1000  return 0;
1001  }
1002  return resolution;
1003  }
1004 
1010  slamtec_aurora_sdk_lidar2dmap_gridmap_get_dimension(_handle, &dimensionOut, 0);
1011  }
1012 
1018  slamtec_aurora_sdk_lidar2dmap_gridmap_get_dimension(_handle, &dimensionOut, 1);
1019  }
1020 
1029  bool readCellData(const slamtec_aurora_sdk_rect_t& rect, slamtec_aurora_sdk_2d_gridmap_fetch_info_t& fetchInfoOut, std::vector<uint8_t>& dataOut, bool l2pMapping = true) const {
1030  int bL2p = (l2pMapping ? 1 : 0);
1031  auto result = slamtec_aurora_sdk_lidar2dmap_gridmap_read_cell_data(_handle, &rect, &fetchInfoOut, nullptr, 0, bL2p);
1032  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1033  return false;
1034  }
1035 
1036  size_t cellSize = fetchInfoOut.cell_height * fetchInfoOut.cell_width;
1037  if (cellSize) {
1038  dataOut.resize(cellSize);
1039  result = slamtec_aurora_sdk_lidar2dmap_gridmap_read_cell_data(_handle, &rect, &fetchInfoOut, dataOut.data(), dataOut.size(), bL2p);
1040  }
1041 
1042  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
1043  }
1044 
1054  bool readCellData(const slamtec_aurora_sdk_rect_t& rect, slamtec_aurora_sdk_2d_gridmap_fetch_info_t& fetchInfoOut, uint8_t* dataBuffer, size_t dataBufferSize, bool l2pMapping = true) const {
1055  return slamtec_aurora_sdk_lidar2dmap_gridmap_read_cell_data(_handle, &rect, &fetchInfoOut, dataBuffer, dataBufferSize, l2pMapping?1:0);
1056  }
1057 
1063  return _handle;
1064  }
1065 
1066 protected:
1068  bool _ownBuffer;
1069 };
1070 
1071 
1078  friend class RemoteSDK;
1079 
1080 public:
1081 
1086  std::tuple<float, float> getSupportedResolutionRange() const {
1087  float minRes, maxRes;
1088  if (slamtec_aurora_sdk_lidar2dmap_get_supported_grid_resultion_range(_sdk, &minRes, &maxRes) != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1089  return std::make_tuple(0.0f, 0.0f);
1090  }
1091  return std::make_tuple(minRes, maxRes);
1092  }
1093 
1101  size_t getMaxGridCellCount() const {
1102  size_t maxCount;
1103  if (slamtec_aurora_sdk_lidar2dmap_get_supported_max_grid_cell_count(_sdk, &maxCount) != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1104  return 0;
1105  }
1106  return maxCount;
1107  }
1108 
1109 
1116  return slamtec_aurora_sdk_lidar2dmap_previewmap_require_redraw(_sdk) == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
1117  }
1118 
1126  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
1127  }
1128 
1134  }
1135 
1142  }
1143 
1149  void getAndResetPreviewMapDirtyRect(slamtec_aurora_sdk_rect_t& rectOut, bool & mapBigChange) {
1150  int mpChange;
1151  if (slamtec_aurora_sdk_lidar2dmap_previewmap_get_and_reset_update_dirty_rect(_sdk, &rectOut, &mpChange) != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1152  mapBigChange = false;
1153  memset(&rectOut, 0, sizeof(rectOut));
1154  }
1155  else {
1156  mapBigChange = (mpChange != 0);
1157  }
1158  }
1159 
1168  slamtec_aurora_sdk_lidar2dmap_previewmap_get_generation_options(_sdk, &optionsOut);
1169  }
1170 
1181  }
1182 
1189  }
1190 
1196  _cachedPreviewMap._handle = slamtec_aurora_sdk_lidar2dmap_previewmap_get_gridmap_handle(_sdk);
1197  return _cachedPreviewMap;
1198  }
1199 
1209  std::shared_ptr<OccupancyGridMap2DRef> generateFullMap(const LIDAR2DGridMapGenerationOptions& options, bool waitForDataSync = true, uint64_t timeout_ms = 30000) {
1211  auto result = slamtec_aurora_sdk_lidar2dmap_generate_fullmap(_sdk, &handleOut, &options, (waitForDataSync?1:0), timeout_ms);
1212 
1213  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1214  return nullptr;
1215  }
1216 
1217  return std::make_shared<OccupancyGridMap2DRef>(handleOut, true);
1218  }
1219 
1220 protected:
1222  : _sdk(sdk)
1223  , _cachedPreviewMap(nullptr, false)
1224  {
1225  }
1226 
1227  mutable OccupancyGridMap2DRef _cachedPreviewMap;
1228 
1230 };
1231 
1232 
1237 class FloorDetector : public Noncopyable {
1238  friend class RemoteSDK;
1239 
1240 
1241 public:
1248  return slamtec_aurora_sdk_autofloordetection_get_current_detection_desc(_sdk, &descOut) == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
1249  }
1250 
1257  bool getAllDetectionDesc(std::vector<slamtec_aurora_sdk_floor_detection_desc_t>& descBuffer, int & currentFloorID) {
1258 
1259  descBuffer.clear();
1260 
1261  do {
1262  size_t actualCount = 0;
1263  auto result = slamtec_aurora_sdk_autofloordetection_get_all_detection_info(_sdk, descBuffer.data(), descBuffer.size(), &actualCount, &currentFloorID);
1264 
1265  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1266  descBuffer.clear();
1267  return false;
1268  }
1269 
1270  if (actualCount > descBuffer.size()) {
1271  descBuffer.resize(actualCount);
1272  continue;
1273  }
1274 
1275  descBuffer.resize(actualCount);
1276  break;
1277  } while (1);
1278  return true;
1279 
1280  }
1281 
1288  size_t histogramSize = 100;
1289 
1290  do {
1291  histogramOut.histogramData.resize(histogramSize);
1292 
1293  auto result = slamtec_aurora_sdk_autofloordetection_get_detection_histogram(_sdk, &histogramOut.info, histogramOut.histogramData.data(), histogramOut.histogramData.size());
1294 
1295 
1296  if (result != SLAMTEC_AURORA_SDK_ERRORCODE_OK) {
1297  histogramOut.histogramData.clear();
1298  return false;
1299  }
1300 
1301  if (histogramOut.info.bin_total_count > histogramOut.histogramData.size()) {
1302  histogramSize = histogramOut.info.bin_total_count;
1303  continue;
1304  }
1305 
1306  histogramOut.histogramData.resize(histogramOut.info.bin_total_count);
1307  break;
1308  } while (1);
1309  return true;
1310  }
1311 
1312 
1313 protected:
1315  : _sdk(sdk)
1316  {
1317  }
1318 
1319 
1321 };
1327 class RemoteSDK : public Noncopyable
1328 {
1329 public:
1337  static bool GetSDKInfo(slamtec_aurora_sdk_version_info_t & info_out, slamtec_aurora_sdk_errorcode_t * errcode = nullptr) {
1338  auto result = slamtec_aurora_sdk_get_version_info(&info_out);
1339  if (errcode) {
1340  *errcode = result;
1341  }
1342  return result == SLAMTEC_AURORA_SDK_ERRORCODE_OK;
1343  }
1344 
1353  static RemoteSDK * CreateSession(const RemoteSDKListener * listener = nullptr, const SDKConfig & config = SDKConfig(), slamtec_aurora_sdk_errorcode_t* error_code = nullptr) {
1354 
1355  const slamtec_aurora_sdk_listener_t* rawListener = nullptr;
1356  if (listener) {
1357  rawListener = &listener->_sdk_listener_obj;
1358  }
1359  auto && handle = slamtec_aurora_sdk_create_session(&config, sizeof(config), rawListener, error_code);
1360 
1361  if (slamtec_aurora_sdk_is_valid_handle(handle)) {
1362  return new RemoteSDK(handle);
1363  }
1364  else {
1365  return nullptr;
1366  }
1367  }
1368 
1374  static void DestroySession(RemoteSDK* session) {
1375  delete session;
1376  }
1377 
1378 
1379 public:
1387  size_t getDiscoveredServers(std::vector<SDKServerConnectionDesc>& serverList, size_t maxFetchCount = 32) {
1388  return controller.getDiscoveredServers(serverList, maxFetchCount);
1389  }
1390 
1391  // helper functions
1399  bool connect(const SDKServerConnectionDesc& serverDesc, slamtec_aurora_sdk_errorcode_t * errCode = nullptr) {
1400  return controller.connect(serverDesc, errCode);
1401  }
1402 
1407  void disconnect() {
1409  }
1410 
1416  bool isConnected() {
1417  return controller.isConnected();
1418  }
1419 
1425  return controller.setMapDataSyncing(true);
1426  }
1427 
1433  return controller.setMapDataSyncing(false);
1434  }
1435 
1436 public:
1437 
1438  ~RemoteSDK() {
1440  }
1441 
1446  void release() {
1447  delete this;
1448  }
1449 
1462 
1463 
1468 
1469 
1474 protected:
1475 
1476 
1478 
1479 
1481  : handle(obj)
1482  , dataProvider(obj)
1483  , controller(obj)
1484  , mapManager(obj)
1485  , lidar2DMapBuilder(obj)
1486  , floorDetector(obj)
1487  {}
1488 
1489 
1490 };
1491 
1492 }}} // namespace rp::standalone::aurora
1493 
The floor detection histogram class wraps the floor detection histogram data and its description.
Definition: slamtec_remote_objects.hxx:732
slamtec_aurora_sdk_floor_detection_histogram_info_t info
The floor detection histogram info.
Definition: slamtec_remote_objects.hxx:760
std::vector< float > histogramData
The floor detection histogram data.
Definition: slamtec_remote_objects.hxx:765
The floor detector class.
Definition: slamtec_remote_public.hxx:1237
bool getCurrentDetectedFloorDesc(slamtec_aurora_sdk_floor_detection_desc_t &descOut)
Get the detected floor description of the current detected floor.
Definition: slamtec_remote_public.hxx:1247
bool getAllDetectionDesc(std::vector< slamtec_aurora_sdk_floor_detection_desc_t > &descBuffer, int &currentFloorID)
Get all the detected floor descriptions.
Definition: slamtec_remote_public.hxx:1257
bool getDetectionHistogram(FloorDetectionHistogram &histogramOut)
Get the detection histogram of the floor detection.
Definition: slamtec_remote_public.hxx:1287
The 2D gridmap generation options class wraps the 2D gridmap generation options.
Definition: slamtec_remote_objects.hxx:667
The 2D gridmap builder class.
Definition: slamtec_remote_public.hxx:1077
bool isPreviewMapAutoFloorDetectionEnabled() const
Check if the auto floor detection is enabled for the preview map.
Definition: slamtec_remote_public.hxx:1187
size_t getMaxGridCellCount() const
Definition: slamtec_remote_public.hxx:1101
bool isPreviewMapBackgroundUpdateActive() const
Check if the preview map background update is active.
Definition: slamtec_remote_public.hxx:1140
void getAndResetPreviewMapDirtyRect(slamtec_aurora_sdk_rect_t &rectOut, bool &mapBigChange)
Get the dirty rectangle of the preview map and reset the dirty rectangle.
Definition: slamtec_remote_public.hxx:1149
std::shared_ptr< OccupancyGridMap2DRef > generateFullMap(const LIDAR2DGridMapGenerationOptions &options, bool waitForDataSync=true, uint64_t timeout_ms=30000)
Generate the full map.
Definition: slamtec_remote_public.hxx:1209
const OccupancyGridMap2DRef & getPreviewMap() const
Get the preview map to access the map data.
Definition: slamtec_remote_public.hxx:1195
bool requireRedrawPreviewMap()
Require the preview map to be redrawn.
Definition: slamtec_remote_public.hxx:1115
void setPreviewMapAutoFloorDetection(bool enable)
Set the auto floor detection for the preview map.
Definition: slamtec_remote_public.hxx:1179
void stopPreviewMapBackgroundUpdate()
Stop the preview map background update.
Definition: slamtec_remote_public.hxx:1132
void getPreviewMapGenerationOptions(LIDAR2DGridMapGenerationOptions &optionsOut) const
Get the generation options of the preview map.
Definition: slamtec_remote_public.hxx:1167
bool startPreviewMapBackgroundUpdate(const LIDAR2DGridMapGenerationOptions &options)
Start the preview map background update.
Definition: slamtec_remote_public.hxx:1124
std::tuple< float, float > getSupportedResolutionRange() const
Get the supported resolution range of the 2D gridmap.
Definition: slamtec_remote_public.hxx:1086
Definition: slamtec_remote_objects.hxx:24
The 2D gridmap reference class wraps the 2D gridmap handle.
Definition: slamtec_remote_public.hxx:978
bool readCellData(const slamtec_aurora_sdk_rect_t &rect, slamtec_aurora_sdk_2d_gridmap_fetch_info_t &fetchInfoOut, std::vector< uint8_t > &dataOut, bool l2pMapping=true) const
Read the cell data of the 2D gridmap.
Definition: slamtec_remote_public.hxx:1029
void getMaxMapCapacityDimension(slamtec_aurora_sdk_2dmap_dimension_t &dimensionOut) const
Get the maximum capacity dimension of the 2D gridmap.
Definition: slamtec_remote_public.hxx:1017
slamtec_aurora_sdk_occupancy_grid_2d_handle_t getHandle() const
Get the handle of the 2D gridmap.
Definition: slamtec_remote_public.hxx:1062
void getMapDimension(slamtec_aurora_sdk_2dmap_dimension_t &dimensionOut) const
Get the dimension of the 2D gridmap.
Definition: slamtec_remote_public.hxx:1009
bool readCellData(const slamtec_aurora_sdk_rect_t &rect, slamtec_aurora_sdk_2d_gridmap_fetch_info_t &fetchInfoOut, uint8_t *dataBuffer, size_t dataBufferSize, bool l2pMapping=true) const
Read the cell data of the 2D gridmap.
Definition: slamtec_remote_public.hxx:1054
float getResolution() const
Get the resolution of the 2D gridmap.
Definition: slamtec_remote_public.hxx:997
The controller class for communicating with the remote device.
Definition: slamtec_remote_public.hxx:319
bool requireMappingMode(uint64_t timeout_ms=SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Require the remote device to enter the mapping mode.
Definition: slamtec_remote_public.hxx:450
void setLowRateMode(bool enable)
Set the low rate mode.
Definition: slamtec_remote_public.hxx:374
size_t getDiscoveredServers(std::vector< SDKServerConnectionDesc > &serverList, size_t maxFetchCount=32)
Get the discovered server list.
Definition: slamtec_remote_public.hxx:330
void disconnect()
Disconnect from the remote device.
Definition: slamtec_remote_public.hxx:356
bool cancelRelocalization(uint64_t timeout_ms=SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Cancel the relocalization.
Definition: slamtec_remote_public.hxx:479
bool requirePureLocalizationMode(uint64_t timeout_ms=SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Require the remote device to enter the pure localization mode.
Definition: slamtec_remote_public.hxx:436
void setMapDataSyncing(bool enable)
Set the map data syncing mode.
Definition: slamtec_remote_public.hxx:386
bool isRawDataSubscribed()
Check if the raw data subscription is enabled.
Definition: slamtec_remote_public.hxx:412
void resyncMapData(bool invalidateCache=false)
Resync the map data.
Definition: slamtec_remote_public.hxx:395
bool connect(const SDKServerConnectionDesc &serverDesc, slamtec_aurora_sdk_errorcode_t *errCode=nullptr)
Connect to the remote device.
Definition: slamtec_remote_public.hxx:345
bool sendCustomCommand(uint64_t timeout_ms, uint64_t cmd, const void *data=nullptr, size_t data_size=0, void *response=nullptr, size_t response_buffer_size=0, size_t *response_retrieved_size=nullptr, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Send a custom command to the remote device.
Definition: slamtec_remote_public.hxx:514
bool isConnected()
Check if the controller is connected to the remote device.
Definition: slamtec_remote_public.hxx:364
bool setLoopClosure(bool enable, uint64_t timeout_ms=SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Set the loop closure flag.
Definition: slamtec_remote_public.hxx:494
bool requireMapReset(uint64_t timeout_ms=SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Require the remote device to perform the map reset.
Definition: slamtec_remote_public.hxx:422
bool requireRelocalization(uint64_t timeout_ms=SLAMTEC_AURORA_SDK_REMOTE_SERVER_DEFAULT_TIMEOUT, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Require the remote device to perform the relocalization.
Definition: slamtec_remote_public.hxx:465
void setRawDataSubscription(bool enable)
Set the raw data subscription mode.
Definition: slamtec_remote_public.hxx:404
The data provider class for accessing the data retrieved from the remote device.
Definition: slamtec_remote_public.hxx:639
bool peekRecentLIDARScanSingleLayer(SingleLayerLIDARScan &scanData, slamtec_aurora_sdk_pose_se3_t &scanPoseSE3, bool forceLatest=false, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Peek the recent LIDAR scan data in single layer mode.
Definition: slamtec_remote_public.hxx:799
bool getCurrentPoseSE3(slamtec_aurora_sdk_pose_se3_t &poseOut, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get the current device pose in SE3 format.
Definition: slamtec_remote_public.hxx:651
bool getMappingFlags(slamtec_aurora_sdk_mapping_flag_t &flagsOut, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get the current mapping flags.
Definition: slamtec_remote_public.hxx:684
bool getAllMapInfo(std::vector< slamtec_aurora_sdk_map_desc_t > &descBuffer, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get all map info.
Definition: slamtec_remote_public.hxx:894
bool getGlobalMappingInfo(slamtec_aurora_sdk_global_map_desc_t &descOut, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get the global mapping info.
Definition: slamtec_remote_public.hxx:879
bool peekTrackingData(RemoteTrackingFrameInfo &infoOut, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Peek the tracking data.
Definition: slamtec_remote_public.hxx:717
bool getIMUInfo(slamtec_aurora_sdk_imu_info_t &infoOut, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get the IMU info.
Definition: slamtec_remote_public.hxx:864
bool accessMapData(const slamtec_aurora_sdk_map_data_visitor_t &visitor, std::vector< uint32_t > mapIDs=std::vector< uint32_t >(), slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Access the map data like keyframe and map points data.
Definition: slamtec_remote_public.hxx:949
bool peekIMUData(std::vector< slamtec_aurora_sdk_imu_data_t > &imuDataOut, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Peek the IMU data.
Definition: slamtec_remote_public.hxx:844
bool getCurrentPose(slamtec_aurora_sdk_pose_t &poseOut, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get the current device pose in Euler angles (Roll-Pitch-Yaw RPY order) format.
Definition: slamtec_remote_public.hxx:669
bool accessMapData(const RemoteMapDataVisitor &visitor, std::vector< uint32_t > mapIDs=std::vector< uint32_t >(), slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Access the map data like keyframe and map points data.
Definition: slamtec_remote_public.hxx:932
bool getLastDeviceStatus(slamtec_aurora_sdk_device_status_t &statusOut, uint64_t &timestamp_ns, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get the last device status.
Definition: slamtec_remote_public.hxx:700
The image reference class wraps the image description and data.
Definition: slamtec_remote_objects.hxx:281
The keyframe data class wraps the keyframe description and its data.
Definition: slamtec_remote_objects.hxx:563
The map data visitor class for accessing the map data from the remote device.
Definition: slamtec_remote_public.hxx:241
void subscribeMapData(const MapDataCallback &mapDataCallback)
Subscribe the map data callback.
Definition: slamtec_remote_public.hxx:258
void subscribeMapPointData(const MapPointDataCallback &mapPointDataCallback)
Subscribe the map point data callback.
Definition: slamtec_remote_public.hxx:283
void subscribeKeyFrameData(const KeyFrameDataCallback &keyFrameDataCallback)
Subscribe the keyframe data callback.
Definition: slamtec_remote_public.hxx:270
The map manager class for managing the map data.
Definition: slamtec_remote_public.hxx:540
bool startUploadSession(const char *mapfilePath, slamtec_aurora_sdk_mapstorage_session_result_callback_t resultCallBack=nullptr, void *userData=nullptr, slamtec_aurora_sdk_errorcode_t *errCode=nullptr)
Start an upload session.
Definition: slamtec_remote_public.hxx:556
bool startSession(const char *mapfilePath, slamtec_aurora_sdk_mapstorage_session_type_t sessionType, slamtec_aurora_sdk_mapstorage_session_result_callback_t resultCallBack=nullptr, void *userData=nullptr, slamtec_aurora_sdk_errorcode_t *errCode=nullptr)
Start a map streaming session.
Definition: slamtec_remote_public.hxx:583
bool startDownloadSession(const char *mapfilePath, slamtec_aurora_sdk_mapstorage_session_result_callback_t resultCallBack=nullptr, void *userData=nullptr, slamtec_aurora_sdk_errorcode_t *errCode=nullptr)
Start a download session.
Definition: slamtec_remote_public.hxx:569
bool isSessionActive()
Check if the map streaming session is active.
Definition: slamtec_remote_public.hxx:595
void abortSession()
Abort the map streaming session.
Definition: slamtec_remote_public.hxx:604
bool querySessionStatus(slamtec_aurora_sdk_mapstorage_session_status_t &progressOut, slamtec_aurora_sdk_errorcode_t *errCode=nullptr)
Query the status of the map streaming session.
Definition: slamtec_remote_public.hxx:614
The listener base class for receiving the data stream from the remote device.
Definition: slamtec_remote_public.hxx:92
The main class for the remote SDK.
Definition: slamtec_remote_public.hxx:1328
RemoteController controller
The controller class object.
Definition: slamtec_remote_public.hxx:1457
static bool GetSDKInfo(slamtec_aurora_sdk_version_info_t &info_out, slamtec_aurora_sdk_errorcode_t *errcode=nullptr)
Get the SDK version info.
Definition: slamtec_remote_public.hxx:1337
RemoteDataProvider dataProvider
The data provider class object.
Definition: slamtec_remote_public.hxx:1453
void disconnect()
Disconnect from the server.
Definition: slamtec_remote_public.hxx:1407
bool isConnected()
Check if the session is connected.
Definition: slamtec_remote_public.hxx:1416
static void DestroySession(RemoteSDK *session)
Destroy a session.
Definition: slamtec_remote_public.hxx:1374
void stopBackgroundMapDataSyncing()
Stop the background map data syncing.
Definition: slamtec_remote_public.hxx:1432
FloorDetector floorDetector
The floor detector class object.
Definition: slamtec_remote_public.hxx:1473
RemoteMapManager mapManager
The map manager class object.
Definition: slamtec_remote_public.hxx:1461
size_t getDiscoveredServers(std::vector< SDKServerConnectionDesc > &serverList, size_t maxFetchCount=32)
Get the discovered servers.
Definition: slamtec_remote_public.hxx:1387
void startBackgroundMapDataSyncing()
Start the background map data syncing.
Definition: slamtec_remote_public.hxx:1424
LIDAR2DMapBuilder lidar2DMapBuilder
The LIDAR 2D map builder class object.
Definition: slamtec_remote_public.hxx:1467
bool connect(const SDKServerConnectionDesc &serverDesc, slamtec_aurora_sdk_errorcode_t *errCode=nullptr)
Connect to a server.
Definition: slamtec_remote_public.hxx:1399
void release()
Release the session.
Definition: slamtec_remote_public.hxx:1446
static RemoteSDK * CreateSession(const RemoteSDKListener *listener=nullptr, const SDKConfig &config=SDKConfig(), slamtec_aurora_sdk_errorcode_t *error_code=nullptr)
Create a session.
Definition: slamtec_remote_public.hxx:1353
The tracking frame info class wraps the tracking information and its data.
Definition: slamtec_remote_objects.hxx:337
The SDK configuration class.
Definition: slamtec_remote_public.hxx:305
The server connection description class.
Definition: slamtec_remote_objects.hxx:135
The single layer LIDAR scan data class wraps the LIDAR scan data and its description.
Definition: slamtec_remote_objects.hxx:625
slamtec_aurora_sdk_lidar_singlelayer_scandata_info_t info
The LIDAR scan data info.
Definition: slamtec_remote_objects.hxx:653
std::vector< slamtec_aurora_sdk_lidar_scan_point_t > scanData
The LIDAR scan data.
Definition: slamtec_remote_objects.hxx:658
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_autofloordetection_get_current_detection_desc(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_floor_detection_desc_t *desc_out)
Get the floor detection description of the current floor detected.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_autofloordetection_get_all_detection_info(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_floor_detection_desc_t *desc_buffer, size_t buffer_count, size_t *actual_count_out, int *current_floor_id)
Get the floor detection descriptions of all floors detected.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_autofloordetection_get_detection_histogram(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_floor_detection_histogram_info_t *header_out, float *histogram_buffer, size_t buffer_count)
Get the floor detection histogram.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_set_raw_data_subscription(slamtec_aurora_sdk_session_handle_t handle, int enable)
Set the raw data subscription.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_require_mapping_mode(slamtec_aurora_sdk_session_handle_t handle, uint64_t timeout_ms)
Require the remote Device to enter the mapping mode.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_set_loop_closure(slamtec_aurora_sdk_session_handle_t handle, int enable, uint64_t timeout_ms)
Require the remote Device to enable/disable the loop closure.
int AURORA_SDK_API slamtec_aurora_sdk_controller_is_connected(slamtec_aurora_sdk_session_handle_t handle)
Check if the session is connected to a server.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_cancel_relocalization(slamtec_aurora_sdk_session_handle_t handle, uint64_t timeout_ms)
Require the remote Device to cancel the relocalization process.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_require_relocalization(slamtec_aurora_sdk_session_handle_t handle, uint64_t timeout_ms)
Require the remote Device to enter the relocalization mode.
void AURORA_SDK_API slamtec_aurora_sdk_controller_resync_map_data(slamtec_aurora_sdk_session_handle_t handle, int invalidate_cache)
Resync the map data.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_require_map_reset(slamtec_aurora_sdk_session_handle_t handle, uint64_t timeout_ms)
Require the remote Device to reset the map, a.k.a. clear all the map data and restart the mapping pro...
void AURORA_SDK_API slamtec_aurora_sdk_controller_set_low_rate_mode(slamtec_aurora_sdk_session_handle_t handle, int enable)
Set the low rate mode.
void AURORA_SDK_API slamtec_aurora_sdk_controller_set_map_data_syncing(slamtec_aurora_sdk_session_handle_t handle, int enable)
Set the map data syncing.
int AURORA_SDK_API slamtec_aurora_sdk_controller_get_discovered_servers(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_server_connection_info_t *servers, size_t max_server_count)
Get the discovered servers list.
int AURORA_SDK_API slamtec_aurora_sdk_controller_is_raw_data_subscribed(slamtec_aurora_sdk_session_handle_t handle)
Check if the raw data is subscribed.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_send_custom_command(slamtec_aurora_sdk_session_handle_t handle, uint64_t timeout_ms, uint64_t cmd, const void *data, size_t data_size, void *response, size_t response_buffer_size, size_t *response_retrieved_size)
Send a custom command to the remote Device.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_connect(slamtec_aurora_sdk_session_handle_t handle, const slamtec_aurora_sdk_server_connection_info_t *server_conn_info)
Connect to a server.
void AURORA_SDK_API slamtec_aurora_sdk_controller_disconnect(slamtec_aurora_sdk_session_handle_t handle)
Disconnect from a server.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_controller_require_pure_localization_mode(slamtec_aurora_sdk_session_handle_t handle, uint64_t timeout_ms)
Require the remote Device to enter the pure localization mode, the map data will not be updated.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_imu_info(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_imu_info_t *info_out)
Get the IMU info.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_access_map_data(slamtec_aurora_sdk_session_handle_t handle, const slamtec_aurora_sdk_map_data_visitor_t *visitor, uint32_t *map_ids, size_t map_count)
Access the map data like keyframe and map points data.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_last_device_status(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_device_status_t *status_out, uint64_t *timestamp_ns_out)
Get the last device status.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_current_pose(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_pose_t *pose_out)
Get the current pose (base to world) in Euler angles (Roll-Pitch-Yaw RPY order) format.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_relocalization_status(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_relocalization_status_type_t *status_out, uint64_t *timestamp_ns_out)
Get the relocalization status.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_peek_tracking_data(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_tracking_info_t *tracking_data_out, const slamtec_aurora_sdk_tracking_data_buffer_t *provided_buffer_info)
Peek the tracking data.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_peek_recent_lidar_scan_singlelayer(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_lidar_singlelayer_scandata_info_t *header_out, slamtec_aurora_sdk_lidar_scan_point_t *scan_points_out, size_t buffer_count, slamtec_aurora_sdk_pose_se3_t *scanpose, int forceLatest)
Peek the most recent single layer LiDAR scan data and its pose.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_peek_imu_data(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_imu_data_t *imu_data_out, size_t buffer_count, size_t *actual_count_out)
Peek the IMU data.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_current_pose_se3(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_pose_se3_t *pose_out)
Get the current pose (base to world) in SE3 format.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_mapping_flags(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_mapping_flag_t *flags_out)
Get the current mapping flags.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_all_map_info(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_map_desc_t *desc_buffer, size_t buffer_count, size_t *actual_count_out)
Get all map info.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_dataprovider_get_global_mapping_info(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_global_map_desc_t *desc_out)
Get the global mapping info.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_get_supported_max_grid_cell_count(slamtec_aurora_sdk_session_handle_t handle, size_t *max_cell_count)
Get the supported maximum grid cell count of the LIDAR 2D map.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_gridmap_get_resolution(const slamtec_aurora_sdk_occupancy_grid_2d_handle_t gridmap_handle, float *resolution_out)
Get the resolution of the LIDAR 2D map.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_set_auto_floor_detection(slamtec_aurora_sdk_session_handle_t handle, int enable)
Set the auto floor detection for the LIDAR 2D preview map.
int AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_is_auto_floor_detection(slamtec_aurora_sdk_session_handle_t handle)
Check if the auto floor detection is enabled for the LIDAR 2D preview map.
void AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_gridmap_release(slamtec_aurora_sdk_occupancy_grid_2d_handle_t gridmap_handle)
Release the LIDAR 2D map.
void AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_stop_background_update(slamtec_aurora_sdk_session_handle_t handle)
Stop the background map generation for the LIDAR 2D preview map.
int AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_is_background_updating(slamtec_aurora_sdk_session_handle_t handle)
Check if the background map generation for the LIDAR 2D preview map is running.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_gridmap_read_cell_data(const slamtec_aurora_sdk_occupancy_grid_2d_handle_t gridmap_handle, const slamtec_aurora_sdk_rect_t *fetch_rect, slamtec_aurora_sdk_2d_gridmap_fetch_info_t *info_out, uint8_t *cell_buffer, size_t cell_buffer_size, int l2p_mapping)
Read the cell data of the LIDAR 2D map.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_get_and_reset_update_dirty_rect(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_rect_t *dirty_rect_out, int *map_big_change)
Get the dirty rect of the LIDAR 2D preview map and reset the dirty rect.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_start_background_update(slamtec_aurora_sdk_session_handle_t handle, const slamtec_aurora_sdk_2d_gridmap_generation_options_t *build_options)
Start the background map generation for the LIDAR 2D preview map.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_generate_fullmap(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_occupancy_grid_2d_handle_t *generated_gridmap_handle_out, const slamtec_aurora_sdk_2d_gridmap_generation_options_t *build_options, int wait_for_data_sync, uint64_t timeout_ms)
Generate the full map on demand.
const slamtec_aurora_sdk_occupancy_grid_2d_handle_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_get_gridmap_handle(slamtec_aurora_sdk_session_handle_t handle)
Get the handle of the LIDAR 2D preview map.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_gridmap_get_dimension(const slamtec_aurora_sdk_occupancy_grid_2d_handle_t gridmap_handle, slamtec_aurora_sdk_2dmap_dimension_t *dimension_out, int get_max_capcity)
Get the current dimension of the LIDAR 2D map.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_previewmap_require_redraw(slamtec_aurora_sdk_session_handle_t handle)
Require the LIDAR 2D preview map to be redrawn.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_lidar2dmap_get_supported_grid_resultion_range(slamtec_aurora_sdk_session_handle_t handle, float *min_resolution, float *max_resolution)
Get the supported grid resolution range of the LIDAR 2D map.
void AURORA_SDK_API slamtec_aurora_sdk_mapmanager_abort_session(slamtec_aurora_sdk_session_handle_t handle)
Abort the current map storage session.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_mapmanager_start_storage_session(slamtec_aurora_sdk_session_handle_t handle, const char *map_file_name, slamtec_aurora_sdk_mapstorage_session_type_t session_type, slamtec_aurora_sdk_mapstorage_session_result_callback_t callback, void *user_data)
Start a map storage session.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_mapmanager_query_storage_status(slamtec_aurora_sdk_session_handle_t handle, slamtec_aurora_sdk_mapstorage_session_status_t *progress_out)
Query the progress of the current map storage session.
int AURORA_SDK_API slamtec_aurora_sdk_mapmanager_is_storage_session_active(slamtec_aurora_sdk_session_handle_t handle)
Check if the map storage session is in progress.
void * slamtec_aurora_sdk_session_handle_t
The session handle type.
Definition: aurora_pubsdk_objects.h:27
uint32_t slamtec_aurora_sdk_mapping_flag_t
The mapping flag value.
Definition: aurora_pubsdk_objects.h:416
uint32_t slamtec_aurora_sdk_errorcode_t
The error code value type.
Definition: aurora_pubsdk_common_def.h:68
uint32_t slamtec_aurora_sdk_device_status_t
The device status value.
Definition: aurora_pubsdk_objects.h:483
uint32_t slamtec_aurora_sdk_mapstorage_session_type_t
The map storage session type.
Definition: aurora_pubsdk_objects.h:174
void * slamtec_aurora_sdk_occupancy_grid_2d_handle_t
The occupancy grid 2D handle type.
Definition: aurora_pubsdk_objects.h:41
struct _slamtec_aurora_sdk_session_config_t slamtec_aurora_sdk_session_config_t
The session config structure.
@ SLAMTEC_AURORA_SDK_MAPSTORAGE_SESSION_TYPE_DOWNLOAD
The download session type.
Definition: aurora_pubsdk_objects.h:192
@ SLAMTEC_AURORA_SDK_MAPSTORAGE_SESSION_TYPE_UPLOAD
The upload session type.
Definition: aurora_pubsdk_objects.h:187
virtual void onIMUData(const slamtec_aurora_sdk_imu_data_t *imuBuffer, size_t bufferCount)
The callback for the IMU data.
Definition: slamtec_remote_public.hxx:122
virtual void onRawCamImageData(uint64_t timestamp_ns, const RemoteImageRef &left, const RemoteImageRef &right)
The callback for the raw image data.
Definition: slamtec_remote_public.hxx:115
virtual void onLIDARScan(const slamtec_aurora_sdk_lidar_singlelayer_scandata_info_t &header, const slamtec_aurora_sdk_lidar_scan_point_t *points)
The callback for the LIDAR scan data.
Definition: slamtec_remote_public.hxx:144
virtual void onTrackingData(const RemoteTrackingFrameInfo &info)
The callback for the tracking data.
Definition: slamtec_remote_public.hxx:108
virtual void onNewMappingFlags(slamtec_aurora_sdk_mapping_flag_t flags)
The callback for the mapping flags.
Definition: slamtec_remote_public.hxx:129
void(* slamtec_aurora_sdk_mapstorage_session_result_callback_t)(void *user_data, int is_ok)
The map storage session result callback.
Definition: aurora_pubsdk_objects.h:1239
virtual void onDeviceStatusChanged(uint64_t timestamp_ns, slamtec_aurora_sdk_device_status_t status)
The callback for the device status.
Definition: slamtec_remote_public.hxx:136
slamtec_aurora_sdk_session_handle_t AURORA_SDK_API slamtec_aurora_sdk_create_session(const slamtec_aurora_sdk_session_config_t *config, size_t config_size, const slamtec_aurora_sdk_listener_t *listener, slamtec_aurora_sdk_errorcode_t *error_code)
Create a SDK session.
slamtec_aurora_sdk_errorcode_t AURORA_SDK_API slamtec_aurora_sdk_get_version_info(slamtec_aurora_sdk_version_info_t *info_out)
Get the version info of the SDK.
void AURORA_SDK_API slamtec_aurora_sdk_release_session(slamtec_aurora_sdk_session_handle_t handle)
Release a SDK session.
The 2D gridmap dimension structure.
Definition: aurora_pubsdk_objects.h:833
The 2D gridmap fetch info structure.
Definition: aurora_pubsdk_objects.h:921
int cell_height
The height of the retrieved gridmap cell in meters.
Definition: aurora_pubsdk_objects.h:937
int cell_width
The width of the retrieved gridmap cell in meters.
Definition: aurora_pubsdk_objects.h:933
The device status structure.
Definition: aurora_pubsdk_objects.h:491
The floor detection description structure.
Definition: aurora_pubsdk_objects.h:945
int bin_total_count
The total count of the histogram bin.
Definition: aurora_pubsdk_objects.h:988
The global map description structure.
Definition: aurora_pubsdk_objects.h:999
The image description structure.
Definition: aurora_pubsdk_objects.h:517
uint32_t data_size
The size of the image data in bytes.
Definition: aurora_pubsdk_objects.h:543
The IMU data structure.
Definition: aurora_pubsdk_objects.h:712
The IMU info structure.
Definition: aurora_pubsdk_objects.h:743
The keyframe description structure.
Definition: aurora_pubsdk_objects.h:1158
The LIDAR scan point structure.
Definition: aurora_pubsdk_objects.h:778
The single layer LIDAR scan data header structure.
Definition: aurora_pubsdk_objects.h:798
uint32_t scan_count
The count of the scan points.
Definition: aurora_pubsdk_objects.h:824
The listener structure.
Definition: aurora_pubsdk_objects.h:1311
slamtec_aurora_sdk_on_lidar_scan_callback_t on_lidar_scan
The callback for the lidar scan data, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1341
slamtec_aurora_sdk_on_image_data_callback_t on_raw_image_data
The callback for the raw image data, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1320
slamtec_aurora_sdk_on_device_status_callback_t on_device_status
The callback for the device status, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1336
void * user_data
The user data to be passed to the callback.
Definition: aurora_pubsdk_objects.h:1315
slamtec_aurora_sdk_on_imu_data_callback_t on_imu_data
The callback for the IMU data, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1328
slamtec_aurora_sdk_on_mapping_flags_callback_t on_mapping_flags
The callback for the mapping flags, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1332
slamtec_aurora_sdk_on_tracking_data_callback_t on_tracking_data
The callback for the tracking data, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1324
The map data visitor structure.
Definition: aurora_pubsdk_objects.h:1374
void * user_data
The user data to be passed to the callback.
Definition: aurora_pubsdk_objects.h:1378
slamtec_aurora_sdk_on_map_keyframe_callback_t on_keyframe
The callback for accessing the keyframe data, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1383
slamtec_aurora_sdk_on_map_point_callback_t on_map_point
The callback for accessing the map point data, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1387
slamtec_aurora_sdk_on_map_desc_callback_t on_map_desc
The callback for accessing the map description, set to NULL to ignore this callback.
Definition: aurora_pubsdk_objects.h:1391
The map description structure.
Definition: aurora_pubsdk_objects.h:1097
The map point description structure.
Definition: aurora_pubsdk_objects.h:1205
The map storage session status structure.
Definition: aurora_pubsdk_objects.h:244
The SE3 pose structure.
Definition: aurora_pubsdk_objects.h:342
The pose structure using translation and Euler angle.
Definition: aurora_pubsdk_objects.h:360
The rectangle structure.
Definition: aurora_pubsdk_objects.h:858
Definition: aurora_pubsdk_objects.h:507
The session config structure.
Definition: aurora_pubsdk_objects.h:93
The tracking data buffer structure.
Definition: aurora_pubsdk_objects.h:578
slamtec_aurora_sdk_keypoint_t * keypoints_right
The buffer to hold keypoints of the right camera.
Definition: aurora_pubsdk_objects.h:623
slamtec_aurora_sdk_keypoint_t * keypoints_left
The buffer to hold keypoints of the left camera.
Definition: aurora_pubsdk_objects.h:612
void * imgdata_left
The buffer to hold image data of the left camera.
Definition: aurora_pubsdk_objects.h:584
void * imgdata_right
The buffer to hold image data of the right camera.
Definition: aurora_pubsdk_objects.h:600
size_t keypoints_left_buffer_count
The size of the buffer to hold keypoints of the left camera.
Definition: aurora_pubsdk_objects.h:617
size_t keypoints_right_buffer_count
The size of the buffer to hold keypoints of the right camera.
Definition: aurora_pubsdk_objects.h:629
size_t imgdata_right_size
The size of the buffer to hold image data of the right camera.
Definition: aurora_pubsdk_objects.h:605
size_t imgdata_left_size
The size of the buffer to hold image data of the left camera.
Definition: aurora_pubsdk_objects.h:592
The tracking info structure.
Definition: aurora_pubsdk_objects.h:659
uint32_t keypoints_left_count
The count of the keypoints of the left image.
Definition: aurora_pubsdk_objects.h:698
slamtec_aurora_sdk_image_desc_t left_image_desc
The description of the left image.
Definition: aurora_pubsdk_objects.h:670
slamtec_aurora_sdk_image_desc_t right_image_desc
The description of the right image.
Definition: aurora_pubsdk_objects.h:675
uint32_t keypoints_right_count
The count of the keypoints of the right image.
Definition: aurora_pubsdk_objects.h:703
The version info structure.
Definition: aurora_pubsdk_objects.h:60