NDEVR
API Documentation
TotalStation.h
1#pragma once
2#include "DLLInfo.h"
3#include <NDEVR/Scanner3D.h>
4#include <NDEVR/ApplicationOptions.h>
5#include <NDEVR/Matrix.h>
6#include <NDEVR/Time.h>
7#include <NDEVR/Scene.h>
8#include <NDEVR/Pointer.h>
9#include <NDEVR/Thread.h>
10#include <NDEVR/INIInterface.h>
11#include <QPointer>
12class ScannerDriver;
13namespace NDEVR
14{
15 class PointMeasureModel;
16 struct FileRequest;
18 class Log;
19 class CarlsonScannerOrientation;
20 class CarlsonScannerConnection;
21 class CarlsonScannerBattery;
22 class CarlsonScannerMotor;
23 class PositionSensor;
24 class SocketIOChannel;
30 class TOTAL_STATION_API TotalStation final : public Scanner3D, public INIInterface
31 {
32 public:
36 TotalStation(DesignObjectLookup* manager, QObject* parent = nullptr);
38 ~TotalStation();
41 bool isConnected() const override;
42 //Children Sensors
45 [[nodiscard]] virtual Light* light() const final override;
48 [[nodiscard]] virtual Light* redDot() const final override;
51 [[nodiscard]] virtual OrientationSensor* orientationSensor() const final override;
54 [[nodiscard]] virtual Connection* connection() const final override;
57 [[nodiscard]] virtual PositionSensor* positionSensor() const final override;
60 [[nodiscard]] virtual RangeSensor* rangeSensor() const final override;
63 [[nodiscard]] virtual TranslatedString scannerInfo() const final override;
66 [[nodiscard]] virtual Buffer<Battery*> batteries() const final override;
69 [[nodiscard]] virtual Buffer<TemperatureSensor*> temperatureSensors() const final override;
72 [[nodiscard]] virtual DistanceEncoder* distanceEncoder() const final override;
75 void setConstantLaserFire(bool constant_fire);
78 void setModelFile(const File& file);
79 //Scanner method implementations
81 virtual void endUpdates() override;
84 virtual void startScan(const Scanner3DScanSettings& settings) final override;
87 virtual RangeSensor* createRangeSensor() final override;
89 virtual void stopScan() final override;
91 virtual void pauseScan() final override;
93 virtual void resumeScan() final override;
95 virtual void createScanner() final override;
97 void addReverseOrientation();
102 void addGridOrientation(sint04 range, const Angle<fltp08>& step, const Angle<fltp08>& offset);
104 void createScannerModel() final override;
106 void checkScanStep();
108 void recordLocation();
111 void orientHead(const Vector<3, Angle<fltp08>>& head_orientation) final override;
115 bool executeManualCommand(const String& command) final override;
118 virtual void setScannerState(ScannerState scanner_state) final override;
121 virtual void showWarning(const TranslatedString& error) const final override;
125 [[nodiscard]] virtual bool supportsState(ScannerState state) const final override;
128 [[nodiscard]] virtual TimeSpan updateInterval() const final override;
132 [[nodiscard]] virtual TimeSpan getScanTime(const Scanner3DScanSettings& settings) const final override;
135 [[nodiscard]] bool useCalibratedScan() const final override;
138 [[nodiscard]] ScannerState scannerState() const final override;
141 [[nodiscard]] virtual bool supportsScanImageRaster() const final override;
145 [[nodiscard]] virtual RasterInfo defaultRasterInfo(const UUID& profile) const final override;
148 [[nodiscard]] virtual Buffer<ScanProfile> availableScanProfiles() const final override;
151 [[nodiscard]] Bounds<2, Angle<fltp08>> scanBounds() const final override;
154 [[nodiscard]] virtual Matrix<fltp08> cameraTransform() const final override;
157 [[nodiscard]] virtual bool usingPrism() const override;
160 fltp08 calculateDistance();
163 Vertex<3, fltp08> targetPosition() const;
164 protected:
167 virtual FileRequest scanModelFile() const override;
170 Matrix<fltp08> scanModelFileTransform() const override;
173 Matrix<fltp08> prismModelFileTransform() const override;
176 virtual void update(Time time) override;
179 void onConnectedUpdate(const Time& current);
181 void parkDevice() override;
185 Matrix<fltp08> laserTransform(const Vector<3, Angle<fltp08>>& head_angle) const override;
188 virtual Matrix<fltp08> scanTransform() const override;
192 Vector<3, Angle<fltp08>> pointToHeadAngle(Vertex<3, fltp08> point) const override;
195 virtual void getINI(INIFactory& factory) override;
196 protected:
197 Time m_last_distance_update_time = Time(0);
198 Scene m_measurement_points;
199 Vector<2, Angle<fltp08>> m_current_target = Constant<Vector<2, Angle<fltp08>>>::Invalid;
200 Buffer<Vector<2, Angle<fltp08>>> m_angle_targets;
201 DynamicPointer<Camera> m_camera_model;
202 MadgwickOrientationSensor* m_orientation = nullptr;
203 PositionSensor* m_position_sensor = nullptr;
204 DistanceEncoder* m_distance_encoder = nullptr;
205 Light* m_light = nullptr;
206 Light* m_red_dot = nullptr;
207 File m_model_file;
208 bool m_use_gnss = false;
209 bool m_constant_laser_fire = false;
210 bool m_auto_update_model = true;
211 fltp08 m_max_range = 100.0;
212 uint04 m_measure_initial_size = Constant<uint04>::Invalid;
213 PointMeasureModel* m_measure_model;
214 };
215}
A core class where all Design Objects including models, materials, and geometries are stored.
Contains methods for easily reading and writing to an INI file including efficient casting,...
Serves as the primary program interface for processes to report issues and allows any number of LogSt...
Definition Log.h:50
Used to calculate madgick orientation given sensor streams for gyro and optionally magnetometer(s) an...
Forward declaration for distance encoder device.
A specific channel of communication within the SocketIO framework.
The primary namespace for the NDEVR SDK.
A FileRequest bundles format data as well as a particular file.
Definition FileFormat.h:101