Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
VisualizationHandler.h
Go to the documentation of this file.
1
11#ifndef VISUALIZATIONHANDLER_H
12#define VISUALIZATIONHANDLER_H
13
14#include "../handlers/LiDARHandler.h"
15#include "../interfaces/AutonomyThread.hpp"
16#include "../util/GeospatialOperations.hpp"
17#include "../util/handlers/SimpleWebServer.h"
18
20#include <atomic>
21#include <mutex>
22#include <string>
23#include <vector>
24
26
27
35{
36 public:
38 // Declare class methods.
40 VisualizationHandler(int nPort = 8080);
42 void SaveVisualization(const std::string& szFilename);
43
44 private:
46 // Declare and define private structs
48
49
57 {
58 float fX, fY, fZ; // RELATIVE to m_stOriginUTM.
59 float fScore; // Traversal Score.
60 int nState; // Robot State at this point.
61 };
62
63
71 {
72 float fX, fY, fZ; // RELATIVE to m_stOriginUTM.
73 int nType; // Type of waypoint/obstacle.
74 };
75
76
84 {
85 float fX, fY, fZ; // RELATIVE to m_stOriginUTM.
86 int nType; // 10=Tag, 11=Mallet, 12=Bottle, 13=Pick
87 };
88
90 // Private Methods
92 void UpdatePathHistory(const geoops::UTMCoordinate& stRoverUTM);
93 void UpdatePlannedPath();
94 void UpdateWaypoints();
95 void UpdateGoalBeacons(const geoops::UTMCoordinate& stRoverUTM);
96 void UpdateDetections();
97
98 // API.
99 std::vector<char> OnRequestTelemetry(const std::string& szQuery);
100 std::vector<char> OnRequestMap(const std::string& szQuery);
101 std::vector<char> OnRequestPlannedPath(const std::string& szQuery);
102 std::vector<char> OnRequestWaypoints(const std::string& szQuery);
103 std::vector<char> OnRequestDetections(const std::string& szQuery);
104
105 // Local Asset API.
106 std::vector<char> OnRequestLibThree(const std::string& szQuery);
107 std::vector<char> OnRequestLibOrbit(const std::string& szQuery);
108
109 // Utilities.
110 std::vector<char> LoadFileToBuffer(const std::string& szPath);
111 std::string Base64Encode(const std::vector<char>& vData);
112
113 // HTML Generators.
114 std::string GetEmbeddedHtml();
115 std::string GenerateStaticHtml(const std::vector<LiDARHandler::PointRow>& vLidar);
116
117 // Internals
118 void ThreadedContinuousCode() override;
119 void PooledLinearCode() override;
120
122 // Private Members
124
125 // Web Server.
126 std::unique_ptr<SimpleWebServer> m_pWebServer;
127 int m_nPort;
128 // Origin.
129 geoops::UTMCoordinate m_stOriginUTM;
130 bool m_bOriginSet;
131 // Path History.
132 std::vector<DisplayPoint> m_vPathHistory;
133 std::mutex m_muPathMutex;
134 // Planned Path.
135 std::vector<DisplayPoint> m_vPlannedPath;
136 std::mutex m_muPlannedPathMutex;
137 // Waypoints and Obstacles.
138 std::vector<DisplayWaypoint> m_vWaypoints;
139 std::mutex m_muWaypointMutex;
140 // Goal Beacons.
141 std::vector<DisplayWaypoint> m_vGoalBeacons;
142 std::mutex m_muGoalBeaconMutex;
143 // Detections.
144 std::vector<DisplayDetection> m_vDetections;
145 std::mutex m_muDetectionMutex;
146};
147#endif
Interface class used to easily multithread a child class.
Definition AutonomyThread.hpp:38
The VisualizationHandler class manages persistent world state and hosts a 3D web server for interacti...
Definition VisualizationHandler.h:35
void UpdatePathHistory(const geoops::UTMCoordinate &stRoverUTM)
Update the path history with the current rover position.
Definition VisualizationHandler.cpp:227
std::vector< char > OnRequestMap(const std::string &szQuery)
Handles map data requests from the web server.
Definition VisualizationHandler.cpp:733
std::vector< char > OnRequestDetections(const std::string &szQuery)
Handles detection requests from the web server.
Definition VisualizationHandler.cpp:693
void SaveVisualization(const std::string &szFilename)
Save the current visualization to a single HTML file with embedded assets.
Definition VisualizationHandler.cpp:137
std::vector< char > OnRequestLibThree(const std::string &szQuery)
Serves the local three.min.js file.
Definition VisualizationHandler.cpp:844
std::string GetEmbeddedHtml()
Gets the embedded HTML for the visualization page.
Definition VisualizationHandler.cpp:967
std::string Base64Encode(const std::vector< char > &vData)
Encodes binary data to a Base64 string.
Definition VisualizationHandler.cpp:895
~VisualizationHandler()
Destroy the Visualization Handler:: Visualization Handler object.
Definition VisualizationHandler.cpp:64
void PooledLinearCode() override
The pooled linear code for the VisualizationHandler. This is not used.
Definition VisualizationHandler.cpp:127
void UpdateGoalBeacons(const geoops::UTMCoordinate &stRoverUTM)
Updates the persistent goal beacons for visualization.
Definition VisualizationHandler.cpp:463
std::vector< char > OnRequestPlannedPath(const std::string &szQuery)
Handles planned path requests from the web server.
Definition VisualizationHandler.cpp:598
void UpdateWaypoints()
Updates the waypoints from the waypoint handler.
Definition VisualizationHandler.cpp:305
void ThreadedContinuousCode() override
The main continuous code for the VisualizationHandler.
Definition VisualizationHandler.cpp:77
void UpdatePlannedPath()
Updates the planned path from the waypoint handler.
Definition VisualizationHandler.cpp:268
std::vector< char > LoadFileToBuffer(const std::string &szPath)
Helper to load a file into a byte buffer.
Definition VisualizationHandler.cpp:874
std::vector< char > OnRequestWaypoints(const std::string &szQuery)
Handles waypoint requests from the web server.
Definition VisualizationHandler.cpp:635
void UpdateDetections()
Updates the persistent detections for visualization.
Definition VisualizationHandler.cpp:350
std::vector< char > OnRequestTelemetry(const std::string &szQuery)
Handles telemetry requests from the web server.
Definition VisualizationHandler.cpp:521
std::vector< char > OnRequestLibOrbit(const std::string &szQuery)
Serves the local OrbitControls.js file.
Definition VisualizationHandler.cpp:859
std::string GenerateStaticHtml(const std::vector< LiDARHandler::PointRow > &vLidar)
Generates a static HTML page with embedded LiDAR data and embedded dependencies.
Definition VisualizationHandler.cpp:1707
Struct representing a persistent detection for visualization.
Definition VisualizationHandler.h:84
Struct representing a single point in the path history.
Definition VisualizationHandler.h:57
Struct representing a waypoint or goal beacon for visualization.
Definition VisualizationHandler.h:71
This struct stores/contains information about a UTM coordinate.
Definition GeospatialOperations.hpp:211