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 public:
59 float fX, fY, fZ; // RELATIVE to m_stOriginUTM.
60 float fScore; // Traversal Score.
61 int nState; // Robot State at this point.
62 };
63
64
72 {
73 public:
74 float fX, fY, fZ; // RELATIVE to m_stOriginUTM.
75 int nType; // Type of waypoint/obstacle.
76 };
77
78
86 {
87 public:
88 float fX, fY, fZ; // RELATIVE to m_stOriginUTM.
89 int nType; // 10=Tag, 11=Mallet, 12=Bottle, 13=Pick
90 };
91
93 // Private Methods
95 void UpdatePathHistory(const geoops::UTMCoordinate& stRoverUTM);
96 void UpdatePlannedPath();
97 void UpdateWaypoints();
98 void UpdateGoalBeacons(const geoops::UTMCoordinate& stRoverUTM);
99 void UpdateDetections();
100
101 // API.
102 std::vector<char> OnRequestTelemetry(const std::string& szQuery);
103 std::vector<char> OnRequestMap(const std::string& szQuery);
104 std::vector<char> OnRequestPlannedPath(const std::string& szQuery);
105 std::vector<char> OnRequestWaypoints(const std::string& szQuery);
106 std::vector<char> OnRequestDetections(const std::string& szQuery);
107 std::vector<char> OnRequestDetectionList(const std::string& szQuery);
108
109 // Local Asset API.
110 std::vector<char> OnRequestLibThree(const std::string& szQuery);
111 std::vector<char> OnRequestLibOrbit(const std::string& szQuery);
112
113 // Utilities.
114 std::vector<char> LoadFileToBuffer(const std::string& szPath);
115 std::string Base64Encode(const std::vector<char>& vData);
116
117 // HTML Generators.
118 std::string GetEmbeddedHtml();
119 std::string GenerateStaticHtml(const std::vector<LiDARHandler::PointRow>& vLidar);
120
121 // Internals
122 void ThreadedContinuousCode() override;
123 void PooledLinearCode() override;
124
126 // Private Members
128
129 // Web Server.
130 std::unique_ptr<SimpleWebServer> m_pWebServer;
131 int m_nPort;
132 // Origin.
133 geoops::UTMCoordinate m_stOriginUTM;
134 bool m_bOriginSet;
135 // Path History.
136 std::vector<DisplayPoint> m_vPathHistory;
137 std::mutex m_muPathMutex;
138 // Planned Path.
139 std::vector<DisplayPoint> m_vPlannedPath;
140 std::mutex m_muPlannedPathMutex;
141 // Waypoints and Obstacles.
142 std::vector<DisplayWaypoint> m_vWaypoints;
143 std::mutex m_muWaypointMutex;
144 // Goal Beacons.
145 std::vector<DisplayWaypoint> m_vGoalBeacons;
146 std::mutex m_muGoalBeaconMutex;
147 // Detections.
148 std::vector<DisplayDetection> m_vDetections;
149 std::mutex m_muDetectionMutex;
150};
151#endif
Interface class used to easily multithread a child class.
Definition AutonomyThread.hpp:40
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:233
std::vector< char > OnRequestMap(const std::string &szQuery)
Handles map data requests from the web server.
Definition VisualizationHandler.cpp:842
std::vector< char > OnRequestDetections(const std::string &szQuery)
Handles detection requests from the web server.
Definition VisualizationHandler.cpp:706
void SaveVisualization(const std::string &szFilename)
Save the current visualization to a single HTML file with embedded assets.
Definition VisualizationHandler.cpp:143
std::vector< char > OnRequestLibThree(const std::string &szQuery)
Serves the local three.min.js file.
Definition VisualizationHandler.cpp:953
std::string GetEmbeddedHtml()
Gets the embedded HTML for the visualization page.
Definition VisualizationHandler.cpp:1076
std::string Base64Encode(const std::vector< char > &vData)
Encodes binary data to a Base64 string.
Definition VisualizationHandler.cpp:1004
~VisualizationHandler()
Destroy the Visualization Handler:: Visualization Handler object.
Definition VisualizationHandler.cpp:70
void PooledLinearCode() override
The pooled linear code for the VisualizationHandler. This is not used.
Definition VisualizationHandler.cpp:133
void UpdateGoalBeacons(const geoops::UTMCoordinate &stRoverUTM)
Updates the persistent goal beacons for visualization.
Definition VisualizationHandler.cpp:476
std::vector< char > OnRequestPlannedPath(const std::string &szQuery)
Handles planned path requests from the web server.
Definition VisualizationHandler.cpp:611
void UpdateWaypoints()
Updates the waypoints from the waypoint handler.
Definition VisualizationHandler.cpp:311
void ThreadedContinuousCode() override
The main continuous code for the VisualizationHandler.
Definition VisualizationHandler.cpp:83
std::vector< char > OnRequestDetectionList(const std::string &szQuery)
Handles detection list requests from the web server.
Definition VisualizationHandler.cpp:746
void UpdatePlannedPath()
Updates the planned path from the waypoint handler.
Definition VisualizationHandler.cpp:274
std::vector< char > LoadFileToBuffer(const std::string &szPath)
Helper to load a file into a byte buffer.
Definition VisualizationHandler.cpp:983
std::vector< char > OnRequestWaypoints(const std::string &szQuery)
Handles waypoint requests from the web server.
Definition VisualizationHandler.cpp:648
void UpdateDetections()
Updates the persistent detections for visualization.
Definition VisualizationHandler.cpp:356
std::vector< char > OnRequestTelemetry(const std::string &szQuery)
Handles telemetry requests from the web server.
Definition VisualizationHandler.cpp:534
std::vector< char > OnRequestLibOrbit(const std::string &szQuery)
Serves the local OrbitControls.js file.
Definition VisualizationHandler.cpp:968
std::string GenerateStaticHtml(const std::vector< LiDARHandler::PointRow > &vLidar)
Generates a static HTML page with embedded LiDAR data and embedded dependencies.
Definition VisualizationHandler.cpp:2060
Struct representing a persistent detection for visualization.
Definition VisualizationHandler.h:86
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:72
This struct stores/contains information about a UTM coordinate.
Definition GeospatialOperations.hpp:211