Quick Start
Create your first program with the Guido Racing SDK in minutes.
First Program
1. Create the Project
mkdir my-racing-app && cd my-racing-app
2. CMakeLists.txt File
Create a CMakeLists.txt file:
cmake_minimum_required(VERSION 3.20)
project(MyRacingApp)
# Find Guido SDK
find_package(GuidoRacingSDK REQUIRED)
# Create executable
add_executable(my_app main.cpp)
# Link SDK
target_link_libraries(my_app PRIVATE GuidoRacing::guido_racing_sdk)
# C++20 required
set_target_properties(my_app PROPERTIES CXX_STANDARD 20)
3. Source Code (main.cpp)
Create a main.cpp file:
#include <guido_racing/sdk.hpp>
#include <iostream>
int main() {
std::cout << "Guido Racing SDK - Quick Start\n";
// Initialize the SDK
guido_racing::SDK sdk;
std::cout << "SDK Version: " << sdk.version() << "\n";
std::cout << "✓ SDK initialized successfully!\n";
return 0;
}
4. Build and Run
mkdir build && cd build
cmake ..
cmake --build .
./my_app
Expected output:
Guido Racing SDK - Quick Start
SDK Version: 1.0.0
✓ SDK initialized successfully!
Load GPS Data
Example of GPS data import and analysis:
#include <guido_racing/sdk.hpp>
#include <iostream>
#include <vector>
int main() {
guido_racing::SDK sdk;
// Load a GPX file
try {
auto session = sdk.loadGPX("session-spa.gpx");
std::cout << "Session loaded:\n";
std::cout << " Duration: " << session.duration() << "s\n";
std::cout << " Distance: " << session.distance() << "m\n";
std::cout << " Laps detected: " << session.lapCount() << "\n";
// Display lap times
auto laps = session.getLaps();
for (size_t i = 0; i < laps.size(); ++i) {
std::cout << " Lap " << (i + 1) << ": "
<< laps[i].time << "s\n";
}
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << "\n";
return 1;
}
return 0;
}
Analyze a Session
Complete analysis example with recommendations:
#include <guido_racing/sdk.hpp>
#include <iostream>
int main() {
guido_racing::SDK sdk;
// Load and analyze
auto session = sdk.loadGPX("session-spa.gpx");
auto analysis = sdk.analyzeSession(session);
// Display summary
std::cout << "Session analysis:\n";
std::cout << "━━━━━━━━━━━━━━━━━━━━\n";
std::cout << "Best lap: " << analysis.bestLap().time << "s\n";
std::cout << "Average lap: " << analysis.averageLap().time << "s\n";
std::cout << "Consistency: " << analysis.consistency() << "%\n";
// AI Recommendations
auto recommendations = analysis.getRecommendations();
std::cout << "\n📊 Recommendations:\n";
std::cout << "━━━━━━━━━━━━━━━━━━━━\n";
for (const auto& rec : recommendations) {
std::cout << "📍 " << rec.location << "\n";
std::cout << " " << rec.message << "\n";
std::cout << " Potential gain: " << rec.potentialGain << "s\n";
std::cout << " Priority: " << rec.priority << "\n\n";
}
return 0;
}
Example output:
Session analysis:
━━━━━━━━━━━━━━━━━━━━
Best lap: 127.34s
Average lap: 129.12s
Consistency: 92.5%
📊 Recommendations:
━━━━━━━━━━━━━━━━━━━━
📍 Turn 7 (La Source)
Braking too early by 12m
Potential gain: 0.28s
Priority: High
📍 Exit Turn 15 (Raidillon)
Late re-acceleration
Potential gain: 0.15s
Priority: Medium
Optimal Trajectory
Calculate and display the ideal trajectory:
#include <guido_racing/sdk.hpp>
#include <iostream>
int main() {
guido_racing::SDK sdk;
auto session = sdk.loadGPX("session-spa.gpx");
// Calculate optimal trajectory
auto optimalPath = sdk.calculateOptimalPath(session);
std::cout << "Optimal trajectory calculated\n";
std::cout << "Points: " << optimalPath.points.size() << "\n";
std::cout << "Theoretical time: " << optimalPath.theoreticalTime << "s\n";
// Compare with your best lap
auto bestLap = session.getBestLap();
auto comparison = sdk.comparePaths(bestLap.path, optimalPath);
std::cout << "\nComparison:\n";
for (const auto& zone : comparison.differenceZones) {
std::cout << " Zone " << zone.name << ": ";
std::cout << (zone.deviation > 0 ? "+" : "")
<< zone.deviation << "m\n";
}
// Export for visualization
sdk.exportPathToKML(optimalPath, "optimal-path.kml");
std::cout << "\nTrajectory exported to optimal-path.kml\n";
return 0;
}
Advanced Configuration
Customize SDK behavior:
#include <guido_racing/sdk.hpp>
int main() {
// Custom configuration
guido_racing::Config config;
config.gps_frequency = 10; // Hz
config.smoothing_factor = 0.8;
config.lap_detection_threshold = 0.95;
config.enable_ai_coaching = true;
guido_racing::SDK sdk(config);
// Use the configured SDK
auto session = sdk.loadGPX("session.gpx");
auto analysis = sdk.analyzeSession(session);
return 0;
}
Next Steps
- Build & Installation - Detailed build guide
- SDK Introduction - Back to SDK overview
Need Help?
- 📧 Email: sdk-support@guido.ai
- 💬 Discord: Developer Community
- 📚 GitHub Issues: Report a bug