diff --git a/CMakeLists.txt b/CMakeLists.txt index a9aedb42c..87e9aa065 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,7 @@ target_include_directories(roboteam_ai_skills PRIVATE include/roboteam_ai ) target_link_libraries(roboteam_ai_skills + PRIVATE Tracy::TracyClient PRIVATE roboteam_networking PRIVATE roboteam_utils PRIVATE Qt5::Widgets @@ -93,6 +94,7 @@ target_include_directories(roboteam_ai_tactics PRIVATE include/roboteam_ai ) target_link_libraries(roboteam_ai_tactics + PRIVATE Tracy::TracyClient PRIVATE roboteam_utils PRIVATE roboteam_networking PRIVATE Qt5::Widgets @@ -177,6 +179,7 @@ target_include_directories(roboteam_ai_plays PRIVATE include/roboteam_ai ) target_link_libraries(roboteam_ai_plays + PRIVATE Tracy::TracyClient PUBLIC roboteam_interface_utils_lib PRIVATE roboteam_networking PRIVATE roboteam_utils @@ -290,6 +293,7 @@ target_include_directories(roboteam_ai_control PRIVATE include/roboteam_ai ) target_link_libraries(roboteam_ai_control + PRIVATE Tracy::TracyClient PRIVATE roboteam_networking PRIVATE roboteam_utils PRIVATE Qt5::Widgets @@ -364,6 +368,7 @@ target_include_directories(roboteam_ai_world PRIVATE include/roboteam_ai ) target_link_libraries(roboteam_ai_world + PRIVATE Tracy::TracyClient PRIVATE roboteam_networking PRIVATE roboteam_utils PRIVATE Qt5::Widgets @@ -379,6 +384,7 @@ target_include_directories(roboteam_ai PRIVATE include/roboteam_ai ) target_link_libraries(roboteam_ai + PRIVATE Tracy::TracyClient PRIVATE roboteam_utils PRIVATE Qt5::Widgets PRIVATE roboteam_networking diff --git a/src/STPManager.cpp b/src/STPManager.cpp index b738cd9f8..cd46fa7a0 100644 --- a/src/STPManager.cpp +++ b/src/STPManager.cpp @@ -4,6 +4,8 @@ #include #include +#include "tracy/Tracy.hpp" + #include #include "control/ControlModule.h" @@ -100,13 +102,8 @@ void STPManager::start() { roboteam_utils::Timer stpTimer; stpTimer.loop( [&]() { - // uncomment the 4 lines of code below to time and display the duration of each loop of the AI - // std::chrono::steady_clock::time_point tStart = std::chrono::steady_clock::now(); + ZoneScopedN("STP Loop"); runOneLoopCycle(); - // std::chrono::steady_clock::time_point tStop = std::chrono::steady_clock::now(); - - // auto loopcycleDuration = std::chrono::duration_cast((tStop - tStart)).count(); - // RTT_DEBUG("Loop cycle duration = ", loopcycleDuration); amountOfCycles++; // update the measured FPS, but limit this function call to only run 5 times/s at most @@ -179,6 +176,7 @@ void STPManager::runOneLoopCycle() { } void STPManager::decidePlay(world::World *_world) { + ZoneScopedN("Decide Play"); ai::stp::PlayEvaluator::clearGlobalScores(); // reset all evaluations ai::stp::ComputationManager::clearStoredComputations(); diff --git a/src/control/positionControl/BBTrajectories/WorldObjects.cpp b/src/control/positionControl/BBTrajectories/WorldObjects.cpp index 831cb2a6e..82bf96e0b 100644 --- a/src/control/positionControl/BBTrajectories/WorldObjects.cpp +++ b/src/control/positionControl/BBTrajectories/WorldObjects.cpp @@ -3,6 +3,7 @@ // #include "control/positionControl/BBTrajectories/WorldObjects.h" +#include "tracy/Tracy.hpp" #include #include "world/World.hpp" @@ -14,6 +15,7 @@ WorldObjects::WorldObjects() = default; std::optional WorldObjects::getFirstCollision(const rtt::world::World *world, const rtt::world::Field &field, const Trajectory2D &Trajectory, const std::unordered_map> &computedPaths, int robotId, ai::stp::AvoidObjects avoidObjects) { + ZoneScopedN("Get First Collision"); gameState = rtt::ai::GameStateManager::getCurrentGameState(); ruleset = gameState.getRuleSet(); // TODO: return the kind of collision diff --git a/src/control/positionControl/PositionControl.cpp b/src/control/positionControl/PositionControl.cpp index b636e0d8a..8cb8520e2 100644 --- a/src/control/positionControl/PositionControl.cpp +++ b/src/control/positionControl/PositionControl.cpp @@ -6,7 +6,7 @@ #include "control/positionControl/BBTrajectories/BBTrajectory2D.h" #include "roboteam_utils/Print.h" - +#include "tracy/Tracy.hpp" namespace rtt::ai::control { RobotCommand PositionControl::computeAndTrackPath(const rtt::world::Field &field, int robotId, const Vector2 ¤tPosition, const Vector2 ¤tVelocity, Vector2 &targetPosition, stp::PIDType pidType) { @@ -41,6 +41,7 @@ void PositionControl::setRobotPositions(std::vector &robotPositions) { rtt::BB::CommandCollision PositionControl::computeAndTrackTrajectory(const rtt::world::World *world, const rtt::world::Field &field, int robotId, Vector2 currentPosition, Vector2 currentVelocity, Vector2 targetPosition, double maxRobotVelocity, stp::PIDType pidType, stp::AvoidObjects avoidObjects) { + ZoneScopedN("ComputeAndTrackTrajectory"); double timeStep = 0.1; std::optional firstCollision; diff --git a/src/stp/Play.cpp b/src/stp/Play.cpp index 2cc9df5d0..6446459ba 100644 --- a/src/stp/Play.cpp +++ b/src/stp/Play.cpp @@ -6,6 +6,7 @@ #include "control/ControlUtils.h" #include "interface/widgets/MainControlsWidget.h" +#include "tracy/Tracy.hpp" namespace rtt::ai::stp { @@ -30,6 +31,7 @@ void Play::setWorld(world::World *world) noexcept { this->world = world; } void Play::updateField(world::Field field) noexcept { this->field = field; } void Play::update() noexcept { + ZoneScopedN("Play Update"); // clear roleStatuses so it only contains the current tick's statuses roleStatuses.clear(); // RTT_INFO("Play executing: ", getName()) diff --git a/src/stp/Skill.cpp b/src/stp/Skill.cpp index 190c42a12..533846c19 100644 --- a/src/stp/Skill.cpp +++ b/src/stp/Skill.cpp @@ -6,6 +6,7 @@ #include "control/ControlModule.h" #include "world/World.hpp" +#include "tracy/Tracy.hpp" namespace rtt::ai::stp { @@ -28,6 +29,7 @@ void Skill::refreshRobotCommand() noexcept { void Skill::terminate() noexcept {} Status Skill::update(StpInfo const& info) noexcept { + ZoneScopedN("Skill Update"); robot = info.getRobot(); auto result = onUpdate(info); currentStatus = result; diff --git a/src/stp/Tactic.cpp b/src/stp/Tactic.cpp index f3ff55238..cb7d0a8e7 100644 --- a/src/stp/Tactic.cpp +++ b/src/stp/Tactic.cpp @@ -5,6 +5,7 @@ #include "stp/Tactic.h" #include +#include "tracy/Tracy.hpp" namespace rtt::ai::stp { @@ -15,6 +16,7 @@ void Tactic::initialize() noexcept { } Status Tactic::update(StpInfo const &info) noexcept { + ZoneScopedN("Tactic Update"); // Update skill info auto skill_info = calculateInfoForSkill(info); diff --git a/src/world/World.cpp b/src/world/World.cpp index a5644cb2b..fd973be97 100644 --- a/src/world/World.cpp +++ b/src/world/World.cpp @@ -3,6 +3,7 @@ // #include "world/World.hpp" +#include "tracy/Tracy.hpp" namespace rtt::world { WorldData const &World::setWorld(WorldData &newWorld) noexcept { @@ -91,6 +92,7 @@ void World::updateTickTime() noexcept { } void World::updatePositionControl() { + ZoneScopedN("Update Position Control"); std::vector robotPositions(getWorld()->getRobotsNonOwning().size()); std::transform(getWorld()->getRobotsNonOwning().begin(), getWorld()->getRobotsNonOwning().end(), robotPositions.begin(), [](const auto &robot) -> Vector2 { return (robot->getPos()); });