diff --git a/CMakeLists.txt b/CMakeLists.txt index efa075cf3412dceea6cf076d6f2200e6168ab7f2..c2605d79175e8c79e0b9b6bf492a968d4a7dea9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,7 +109,7 @@ add_executable(test-sensormanager src/tests/test-sensormanager.cpp) sbs_target(test-sensormanager stm32f429zi_death_stack_v2) add_executable(test-serial src/tests/test-serial.cpp) -sbs_target(test-serial stm32f767zi_lyra_gs) +sbs_target(test-serial stm32f767zi_lyra_biscotto) add_executable(test-taskscheduler src/tests/scheduler/test-taskscheduler.cpp) sbs_target(test-taskscheduler stm32f407vg_stm32f4discovery) diff --git a/src/shared/actuators/stepper/StepperData.h b/src/shared/actuators/stepper/StepperData.h index 8dab2c0501c258eb25d9b3f62c8f28b1759aa1c4..be506824e3bdba8f7e67317a3debe68da0cef9e5 100644 --- a/src/shared/actuators/stepper/StepperData.h +++ b/src/shared/actuators/stepper/StepperData.h @@ -22,6 +22,7 @@ #pragma once +#include <cstdint> #include <ostream> namespace Boardcore diff --git a/src/shared/algorithms/Follower/Follower.cpp b/src/shared/algorithms/Follower/Follower.cpp index 7ffc9b200a98bbe7c9d108b7fdf5db9baf989ab3..07fd53198b648b84c7fb4575e557fd741aa29aca 100644 --- a/src/shared/algorithms/Follower/Follower.cpp +++ b/src/shared/algorithms/Follower/Follower.cpp @@ -34,8 +34,29 @@ using namespace miosix; namespace Boardcore { -Follower::Follower(float updatePeriod) - : updatePeriod(updatePeriod), targetAngles({0, 0, 0}) +/** + * @brief Minimize rotation angle. + * + * @param angle Angle of movement [deg] + * @return The minimized rotation angle [deg] + */ +float minimizeRotation(float angle) +{ + if (angle > 180) + { + angle -= 360; + } + else if (angle < -180) + { + angle += 360; + } + + return angle; +} + +Follower::Follower(std::chrono::milliseconds updatePeriod) + : updatePeriod(static_cast<float>(updatePeriod.count()) / 1000), + targetAngles({0, 0, 0}) { } @@ -43,8 +64,7 @@ void Follower::setAntennaCoordinates(const Boardcore::GPSData& gpsData) { Lock<FastMutex> lock(lastAntennaAttitudeMutex); antennaCoordinates = {gpsData.latitude, gpsData.longitude, gpsData.height}; - Boardcore::Logger::getInstance().log( - static_cast<LogAntennasCoordinates>(gpsData)); + Boardcore::Logger::getInstance().log(LogAntennasCoordinates(gpsData)); antennaCoordinatesSet = true; } @@ -52,8 +72,7 @@ void Follower::setRocketNASOrigin(const Boardcore::GPSData& gpsData) { Lock<FastMutex> lock(lastAntennaAttitudeMutex); rocketNASOrigin = {gpsData.latitude, gpsData.longitude, gpsData.height}; - Boardcore::Logger::getInstance().log( - static_cast<LogRocketCoordinates>(gpsData)); + Boardcore::Logger::getInstance().log(LogRocketCoordinates(gpsData)); rocketCoordinatesSet = true; } @@ -69,7 +88,7 @@ VN300Data Follower::getLastAntennaAttitude() return lastAntennaAttitude; } -void Follower::setLastRocketNasState(const NASState nasState) +void Follower::setLastRocketNasState(const NASState& nasState) { Lock<FastMutex> lock(lastRocketNasStateMutex); lastRocketNasState = nasState; @@ -116,27 +135,13 @@ bool Follower::init() return true; } -float Follower::minimizeRotation(float angle) -{ - if (angle > 180) - { - angle -= 360; - } - else if (angle < -180) - { - angle += 360; - } - - return angle; -} - void Follower::step() { - NASState lastRocketNasState = getLastRocketNasState(); + NASState lastRocketNas = getLastRocketNasState(); // Getting the position of the rocket wrt the antennas in NED frame - NEDCoords rocketPosition = {lastRocketNasState.n, lastRocketNasState.e, - lastRocketNasState.d}; + NEDCoords rocketPosition = {lastRocketNas.n, lastRocketNas.e, + lastRocketNas.d}; // Calculate the antenna target angles from the NED rocket coordinates targetAngles = rocketPositionToAntennaAngles(rocketPosition); @@ -166,23 +171,19 @@ void Follower::step() std::abs((diffAngles.pitch * 1000) / (360 * updatePeriod)); // Update the state of the follower - FollowerState state; - state.timestamp = TimestampTimer::getTimestamp(); - state.yaw = diffAngles.yaw; - state.pitch = diffAngles.pitch; - state.horizontalSpeed = horizontalSpeed; - state.verticalSpeed = verticalSpeed; - setState(state); - - // Log the target angles - Boardcore::Logger::getInstance().log( - static_cast<Boardcore::AntennaAngles>(targetAngles)); + FollowerState newState; + newState.timestamp = TimestampTimer::getTimestamp(); + newState.yaw = diffAngles.yaw; + newState.pitch = diffAngles.pitch; + newState.horizontalSpeed = horizontalSpeed; + newState.verticalSpeed = verticalSpeed; + setState(newState); #ifndef NDEBUG std::cout << "[FOLLOWER] STEPPER " - << "Angles: [" << state.yaw << ", " << state.pitch << "] " - << "Speed: [" << state.horizontalSpeed << ", " - << state.verticalSpeed << "] VN300 measure: [" << vn300.yaw + << "Angles: [" << newState.yaw << ", " << newState.pitch << "] " + << "Speed: [" << newState.horizontalSpeed << ", " + << newState.verticalSpeed << "] VN300 measure: [" << vn300.yaw << ", " << vn300.pitch << "]\n"; #endif } diff --git a/src/shared/algorithms/Follower/Follower.h b/src/shared/algorithms/Follower/Follower.h index 3fb6817a137fd06c992a7f7f97d1c69f2d96ac92..527144188bca05a2ae808cec7cf538026a252e92 100644 --- a/src/shared/algorithms/Follower/Follower.h +++ b/src/shared/algorithms/Follower/Follower.h @@ -30,6 +30,7 @@ #include <sensors/Vectornav/VN300/VN300Data.h> #include <atomic> +#include <chrono> #include <utils/ModuleManager/ModuleManager.hpp> #include "FollowerData.h" @@ -43,9 +44,9 @@ public: /** * @brief Constructor of the follower class. * - * @param updatePeriod The period of update of the follower algorithm [s]. + * @param updatePeriod The period of update of the follower algorithm [ms]. */ - explicit Follower(float updatePeriod); + explicit Follower(std::chrono::milliseconds updatePeriod); /** * @brief Check that both the antenna and rocket coordinates have been set. @@ -68,7 +69,7 @@ public: /** * @brief Setter for the NAS state of the rocket. */ - void setLastRocketNasState(const NASState nasState); + void setLastRocketNasState(const NASState& nasState); /** * @brief Setter for the attitude of the antenna. @@ -114,14 +115,6 @@ private: */ AntennaAngles rocketPositionToAntennaAngles(const NEDCoords& ned); - /** - * @brief Minimize rotation angle. - * - * @param angle Angle of movement [deg] - * @return The minimized rotation angle [deg] - */ - float minimizeRotation(float angle); - /** * @brief Synchronized setter for the state of the follower algorithm. * @warning Should NOT be called if not in a test. diff --git a/src/shared/algorithms/Follower/FollowerData.h b/src/shared/algorithms/Follower/FollowerData.h index a3ae02756d777afa84c67ba8b8e2048a4180c974..408e192a92c0e910f5e6fa2a39232af8c67a5fa9 100644 --- a/src/shared/algorithms/Follower/FollowerData.h +++ b/src/shared/algorithms/Follower/FollowerData.h @@ -45,16 +45,31 @@ struct AntennaAngles //!< on the XY plane (NE plane), positive anti-clockwise [deg] float pitch; //!< Angle between the XY plane (NE plane) and the target //!< position [deg] - uint32_t nrPropagations = - 0; //!< Nr of propagations by the propagator (0 if no propagation) - AntennaAngles() : timestamp{0}, yaw(0), pitch(0), nrPropagations{0} {}; + AntennaAngles() : timestamp{0}, yaw{0}, pitch{0} {}; AntennaAngles(uint64_t timestamp, float yaw, float pitch) - : timestamp{timestamp}, yaw(yaw), pitch(pitch), nrPropagations{0} {}; + : timestamp{timestamp}, yaw(yaw), pitch(pitch){}; AntennaAngles(uint64_t timestamp, float yaw, float pitch, uint32_t nrPropagations) - : timestamp{timestamp}, yaw(yaw), - pitch(pitch), nrPropagations{nrPropagations} {}; + : timestamp{timestamp}, yaw(yaw), pitch(pitch){}; +}; + +/** + * @brief A structure for storing angles relative to the NED frame. + */ +struct AntennaAnglesLog : public AntennaAngles +{ + uint32_t nrPropagations = + 0; //!< Nr of propagations by the propagator (0 if no propagation) + + AntennaAnglesLog(uint64_t timestamp, float yaw, float pitch) + : AntennaAngles(timestamp, yaw, pitch), nrPropagations{0} {}; + AntennaAnglesLog(uint64_t timestamp, float yaw, float pitch, + uint32_t nrPropagations) + : AntennaAngles(timestamp, yaw, pitch), nrPropagations{ + nrPropagations} {}; + AntennaAnglesLog(AntennaAngles angle, uint32_t nrPropagations) + : AntennaAngles(angle), nrPropagations{nrPropagations} {}; static std::string header() { @@ -99,9 +114,9 @@ struct FollowerState */ struct LogAntennasCoordinates : public GPSData { - explicit LogAntennasCoordinates(const GPSData& data) : GPSData(data) {} + LogAntennasCoordinates() = default; - LogAntennasCoordinates() {} + explicit LogAntennasCoordinates(const GPSData& data) : GPSData(data) {} }; /** @@ -109,8 +124,8 @@ struct LogAntennasCoordinates : public GPSData */ struct LogRocketCoordinates : public GPSData { - explicit LogRocketCoordinates(const GPSData& data) : GPSData(data) {} + LogRocketCoordinates() = default; - LogRocketCoordinates() {} + explicit LogRocketCoordinates(const GPSData& data) : GPSData(data) {} }; } // namespace Boardcore diff --git a/src/shared/algorithms/Propagator/Propagator.cpp b/src/shared/algorithms/Propagator/Propagator.cpp index 79e657e070850960089ae91e1fec3fa3182b7707..634d1bf26fdeebcdd5dbb98ca5b023254c02d220 100644 --- a/src/shared/algorithms/Propagator/Propagator.cpp +++ b/src/shared/algorithms/Propagator/Propagator.cpp @@ -30,8 +30,8 @@ using namespace Eigen; namespace Boardcore { -Propagator::Propagator(float updatePeriod) - : updatePeriod(updatePeriod / 1000), state() +Propagator::Propagator(std::chrono::milliseconds pUpdatePeriod) + : updatePeriod(static_cast<float>(pUpdatePeriod.count()) / 1000), state() { } @@ -39,30 +39,28 @@ bool Propagator::init() { return true; } void Propagator::step() { + miosix::Lock<miosix::FastMutex> lock(stateMutex); // Take new rocket data only if it has been just updated, otherwise take // last state available - const PropagatorState& oldState = getState(); + PropagatorState oldState = state; // updates with the last received NAS state if present, otherwise uses the // last Propagator state - PropagatorState newState = - (oldState.nPropagations == 0 - ? PropagatorState(oldState.timestamp, oldState.nPropagations, - getRocketNasState()) - : oldState); + state = (oldState.nPropagations == 0 + ? PropagatorState(oldState.timestamp, oldState.nPropagations, + getRocketNasState()) + : oldState); // Update Position propagating it with velocity - newState.x_prop = newState.x_prop + newState.v_prop * updatePeriod; - newState.nPropagations++; - newState.timestamp = TimestampTimer::getTimestamp(); - - // set propagated state - setState(newState); + state.x_prop = state.x_prop + state.v_prop * updatePeriod; + state.nPropagations++; + state.timestamp = TimestampTimer::getTimestamp(); } void Propagator::setRocketNasState(const NASState& newRocketNasState) { - miosix::Lock<miosix::FastMutex> lock(nasStateMutex); + miosix::Lock<miosix::FastMutex> lockState(stateMutex); + miosix::Lock<miosix::FastMutex> lockNAS(nasStateMutex); // Reset nPropagations to notify another received "real" packet state.nPropagations = 0; diff --git a/src/shared/algorithms/Propagator/Propagator.h b/src/shared/algorithms/Propagator/Propagator.h index 1607038c16a3a24e670fb42a832eb3b3ca39547f..a8d43d4c0af70241f16a5e46c68aca5a41ea37d7 100644 --- a/src/shared/algorithms/Propagator/Propagator.h +++ b/src/shared/algorithms/Propagator/Propagator.h @@ -25,6 +25,8 @@ #include <algorithms/Algorithm.h> #include <miosix.h> +#include <chrono> + #include "PropagatorData.h" #include "algorithms/NAS/NASState.h" #include "sensors/SensorData.h" @@ -44,7 +46,7 @@ public: * * @param updatePeriod The period of update of the predictor algorithm [ms]. */ - explicit Propagator(float updatePeriod); + explicit Propagator(std::chrono::milliseconds updatePeriod); /** * @brief Dummy init since we don't have to setup anything. @@ -72,18 +74,6 @@ public: return lastRocketNasState; } - /** - * @brief Synchronized setter for the predictor state. - * @warning Should NOT be called if not in a test. - * - * @param newState The state of the propagator to be set. - */ - inline void setState(const PropagatorState& newState) - { - miosix::Lock<miosix::FastMutex> lock(stateMutex); - state = newState; - } - /** * @brief Synchronized getter for the State of the predictor. * diff --git a/src/shared/drivers/DipSwitch/DipSwitch.cpp b/src/shared/drivers/DipSwitch/DipSwitch.cpp index 2d33a089e2952f1cace282f86d5f9bd22fa58c10..ee2a33c65722e622091d7a0bf98eb1d0b9e382c5 100644 --- a/src/shared/drivers/DipSwitch/DipSwitch.cpp +++ b/src/shared/drivers/DipSwitch/DipSwitch.cpp @@ -22,6 +22,9 @@ #include "DipSwitch.h" +namespace Boardcore +{ + uint8_t DipSwitch::read() { uint8_t read = 0; @@ -34,7 +37,7 @@ uint8_t DipSwitch::read() sh.high(); miosix::delayUs(microSecClk); - // Read first register GS(0)/ARP(1) + // Read the 8 values set on dipswitch read |= readBit(); read |= readBit() << 1; @@ -58,4 +61,5 @@ uint8_t DipSwitch::readBit() clk.low(); miosix::delayUs(microSecClk); return bit; -} \ No newline at end of file +} +} // namespace Boardcore diff --git a/src/shared/drivers/DipSwitch/DipSwitch.h b/src/shared/drivers/DipSwitch/DipSwitch.h index 1d7026f675fefb873acf50351a159a4fb94b7aca..eb72ad358cd91fc52d84850f3d396e85231fb2fa 100644 --- a/src/shared/drivers/DipSwitch/DipSwitch.h +++ b/src/shared/drivers/DipSwitch/DipSwitch.h @@ -22,6 +22,11 @@ #include <miosix.h> +#include <chrono> + +namespace Boardcore +{ + /** * @brief Dip switch driver to read the current status of the switch */ @@ -29,8 +34,8 @@ class DipSwitch { public: DipSwitch(miosix::GpioPin& sh, miosix::GpioPin& clk, miosix::GpioPin& qh, - uint32_t microSecClk) - : sh{sh}, clk{clk}, qh{qh}, microSecClk{microSecClk} + std::chrono::microseconds microSecClk) + : sh{sh}, clk{clk}, qh{qh}, microSecClk{microSecClk.count()} { } @@ -47,13 +52,14 @@ public: uint8_t read(); private: - miosix::GpioPin& sh; - miosix::GpioPin& clk; - miosix::GpioPin& qh; - uint32_t microSecClk; + miosix::GpioPin& sh; ///< Shift pin / not load + miosix::GpioPin& clk; ///< Clock pin + miosix::GpioPin& qh; ///< Data output pin + int64_t microSecClk; /** * @brief Reads a bit from the dip switch shift register */ uint8_t readBit(); -}; \ No newline at end of file +}; +} // namespace Boardcore diff --git a/src/tests/catch/propagator/test-propagator-data.h b/src/tests/catch/propagator/test-propagator-data.h index d97a0ae8af249635b5ed3328437261f12aae2d4f..0ce932d05d01c1c9ca2cfb4129960304b944144b 100644 --- a/src/tests/catch/propagator/test-propagator-data.h +++ b/src/tests/catch/propagator/test-propagator-data.h @@ -20,62 +20,65 @@ * THE SOFTWARE. */ +#include <chrono> + #include "algorithms/NAS/NASState.h" +/* linter off */ using namespace std::chrono; namespace TestPropagator0 { -float dt = 20; -int n = 50; -Boardcore::NASState nas[] = {{1, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {4, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {5, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {6, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {8, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {9, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {13, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {15, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {16, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {17, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {18, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {20, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {21, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {22, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {23, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {24, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {25, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {26, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {27, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {28, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {29, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {30, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {31, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {32, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {33, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {34, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {35, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {36, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {37, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {38, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {39, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {40, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {41, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {42, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {43, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {44, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {45, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {46, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {47, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {48, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {49, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, - {50, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}}; +std::chrono::milliseconds dt = 20ms; +int n = 50; +Boardcore::NASState nas[] = {{1, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {4, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {5, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {6, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {8, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {9, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {13, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {15, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {16, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {17, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {18, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {20, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {21, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {22, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {23, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {24, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {25, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {26, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {27, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {28, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {29, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {30, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {31, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {32, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {33, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {34, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {35, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {36, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {37, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {38, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {39, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {40, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {41, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {42, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {43, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {44, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {45, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {46, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {47, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {48, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {49, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + {50, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}}; Boardcore::PropagatorState STATE0(0, 0, nas[0]); @@ -83,109 +86,109 @@ Boardcore::PropagatorState STATE0(0, 0, nas[0]); namespace TestPropagator1 { -float dt = 20; -int n = 100; -Boardcore::NASState nas[] = { - {1, {0, 42, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {2, {-0.02, 42, 0.02, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {3, {-0.04, 42, 0.04, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {4, {-0.06, 42, 0.06, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {5, {-0.08, 42, 0.08, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {6, {-0.1, 42, 0.1, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {7, {-0.12, 42, 0.12, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {8, {-0.14, 42, 0.14, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {9, {-0.16, 42, 0.16, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {10, {-0.18, 42, 0.18, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {11, {-0.2, 42, 0.2, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {12, {-0.22, 42, 0.22, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {13, {-0.24, 42, 0.24, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {14, {-0.26, 42, 0.26, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {15, {-0.28, 42, 0.28, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {16, {-0.3, 42, 0.3, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {17, {-0.32, 42, 0.32, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {18, {-0.34, 42, 0.34, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {19, {-0.36, 42, 0.36, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {20, {-0.38, 42, 0.38, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {21, {-0.4, 42, 0.4, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {22, {-0.42, 42, 0.42, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {23, {-0.44, 42, 0.44, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {24, {-0.46, 42, 0.46, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {25, {-0.48, 42, 0.48, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {26, {-0.5, 42, 0.5, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {27, {-0.52, 42, 0.52, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {28, {-0.54, 42, 0.54, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {29, {-0.56, 42, 0.56, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {30, {-0.58, 42, 0.58, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {31, {-0.6, 42, 0.6, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {32, {-0.62, 42, 0.62, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {33, {-0.64, 42, 0.64, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {34, {-0.66, 42, 0.66, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {35, {-0.68, 42, 0.68, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {36, {-0.7, 42, 0.7, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {37, {-0.72, 42, 0.72, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {38, {-0.74, 42, 0.74, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {39, {-0.76, 42, 0.76, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {40, {-0.78, 42, 0.78, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {41, {-0.8, 42, 0.8, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {42, {-0.82, 42, 0.82, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {43, {-0.84, 42, 0.84, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {44, {-0.86, 42, 0.86, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {45, {-0.88, 42, 0.88, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {46, {-0.9, 42, 0.9, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {47, {-0.92, 42, 0.92, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {48, {-0.94, 42, 0.94, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {49, {-0.96, 42, 0.96, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {50, {-0.98, 42, 0.98, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {51, {-1, 42, 1, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {52, {-1.02, 42, 1.02, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {53, {-1.04, 42, 1.04, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {54, {-1.06, 42, 1.06, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {55, {-1.08, 42, 1.08, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {56, {-1.1, 42, 1.1, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {57, {-1.12, 42, 1.12, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {58, {-1.14, 42, 1.14, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {59, {-1.16, 42, 1.16, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {60, {-1.18, 42, 1.18, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {61, {-1.2, 42, 1.2, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {62, {-1.22, 42, 1.22, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {63, {-1.24, 42, 1.24, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {64, {-1.26, 42, 1.26, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {65, {-1.28, 42, 1.28, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {66, {-1.3, 42, 1.3, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {67, {-1.32, 42, 1.32, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {68, {-1.34, 42, 1.34, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {69, {-1.36, 42, 1.36, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {70, {-1.38, 42, 1.38, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {71, {-1.4, 42, 1.4, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {72, {-1.42, 42, 1.42, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {73, {-1.44, 42, 1.44, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {74, {-1.46, 42, 1.46, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {75, {-1.48, 42, 1.48, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {76, {-1.5, 42, 1.5, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {77, {-1.52, 42, 1.52, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {78, {-1.54, 42, 1.54, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {79, {-1.56, 42, 1.56, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {80, {-1.58, 42, 1.58, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {81, {-1.6, 42, 1.6, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {82, {-1.62, 42, 1.62, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {83, {-1.64, 42, 1.64, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {84, {-1.66, 42, 1.66, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {85, {-1.68, 42, 1.68, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {86, {-1.7, 42, 1.7, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {87, {-1.72, 42, 1.72, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {88, {-1.74, 42, 1.74, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {89, {-1.76, 42, 1.76, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {90, {-1.78, 42, 1.78, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {91, {-1.8, 42, 1.8, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {92, {-1.82, 42, 1.82, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {93, {-1.84, 42, 1.84, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {94, {-1.86, 42, 1.86, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {95, {-1.88, 42, 1.88, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {96, {-1.9, 42, 1.9, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {97, {-1.92, 42, 1.92, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {98, {-1.94, 42, 1.94, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {99, {-1.96, 42, 1.96, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, - {100, {-1.98, 42, 1.98, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}}; +std::chrono::milliseconds dt = 20ms; +int n = 100; +Boardcore::NASState nas[] = { + {1, {0, 42, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {2, {-0.02, 42, 0.02, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {3, {-0.04, 42, 0.04, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {4, {-0.06, 42, 0.06, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {5, {-0.08, 42, 0.08, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {6, {-0.1, 42, 0.1, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {7, {-0.12, 42, 0.12, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {8, {-0.14, 42, 0.14, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {9, {-0.16, 42, 0.16, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {10, {-0.18, 42, 0.18, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {11, {-0.2, 42, 0.2, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {12, {-0.22, 42, 0.22, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {13, {-0.24, 42, 0.24, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {14, {-0.26, 42, 0.26, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {15, {-0.28, 42, 0.28, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {16, {-0.3, 42, 0.3, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {17, {-0.32, 42, 0.32, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {18, {-0.34, 42, 0.34, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {19, {-0.36, 42, 0.36, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {20, {-0.38, 42, 0.38, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {21, {-0.4, 42, 0.4, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {22, {-0.42, 42, 0.42, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {23, {-0.44, 42, 0.44, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {24, {-0.46, 42, 0.46, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {25, {-0.48, 42, 0.48, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {26, {-0.5, 42, 0.5, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {27, {-0.52, 42, 0.52, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {28, {-0.54, 42, 0.54, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {29, {-0.56, 42, 0.56, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {30, {-0.58, 42, 0.58, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {31, {-0.6, 42, 0.6, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {32, {-0.62, 42, 0.62, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {33, {-0.64, 42, 0.64, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {34, {-0.66, 42, 0.66, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {35, {-0.68, 42, 0.68, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {36, {-0.7, 42, 0.7, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {37, {-0.72, 42, 0.72, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {38, {-0.74, 42, 0.74, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {39, {-0.76, 42, 0.76, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {40, {-0.78, 42, 0.78, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {41, {-0.8, 42, 0.8, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {42, {-0.82, 42, 0.82, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {43, {-0.84, 42, 0.84, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {44, {-0.86, 42, 0.86, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {45, {-0.88, 42, 0.88, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {46, {-0.9, 42, 0.9, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {47, {-0.92, 42, 0.92, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {48, {-0.94, 42, 0.94, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {49, {-0.96, 42, 0.96, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {50, {-0.98, 42, 0.98, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {51, {-1, 42, 1, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {52, {-1.02, 42, 1.02, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {53, {-1.04, 42, 1.04, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {54, {-1.06, 42, 1.06, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {55, {-1.08, 42, 1.08, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {56, {-1.1, 42, 1.1, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {57, {-1.12, 42, 1.12, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {58, {-1.14, 42, 1.14, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {59, {-1.16, 42, 1.16, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {60, {-1.18, 42, 1.18, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {61, {-1.2, 42, 1.2, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {62, {-1.22, 42, 1.22, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {63, {-1.24, 42, 1.24, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {64, {-1.26, 42, 1.26, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {65, {-1.28, 42, 1.28, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {66, {-1.3, 42, 1.3, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {67, {-1.32, 42, 1.32, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {68, {-1.34, 42, 1.34, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {69, {-1.36, 42, 1.36, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {70, {-1.38, 42, 1.38, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {71, {-1.4, 42, 1.4, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {72, {-1.42, 42, 1.42, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {73, {-1.44, 42, 1.44, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {74, {-1.46, 42, 1.46, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {75, {-1.48, 42, 1.48, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {76, {-1.5, 42, 1.5, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {77, {-1.52, 42, 1.52, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {78, {-1.54, 42, 1.54, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {79, {-1.56, 42, 1.56, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {80, {-1.58, 42, 1.58, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {81, {-1.6, 42, 1.6, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {82, {-1.62, 42, 1.62, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {83, {-1.64, 42, 1.64, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {84, {-1.66, 42, 1.66, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {85, {-1.68, 42, 1.68, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {86, {-1.7, 42, 1.7, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {87, {-1.72, 42, 1.72, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {88, {-1.74, 42, 1.74, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {89, {-1.76, 42, 1.76, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {90, {-1.78, 42, 1.78, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {91, {-1.8, 42, 1.8, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {92, {-1.82, 42, 1.82, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {93, {-1.84, 42, 1.84, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {94, {-1.86, 42, 1.86, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {95, {-1.88, 42, 1.88, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {96, {-1.9, 42, 1.9, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {97, {-1.92, 42, 1.92, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {98, {-1.94, 42, 1.94, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {99, {-1.96, 42, 1.96, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + {100, {-1.98, 42, 1.98, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0}}}; Boardcore::PropagatorState STATE0(0, 0, nas[0]); @@ -193,229 +196,229 @@ Boardcore::PropagatorState STATE0(0, 0, nas[0]); namespace TestPropagator2 { -float dt = 20; -int n = 100; -Boardcore::NASState nas[] = { - {1, {12, -24, -48, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {2, {11.994, -23.976, -47.932, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {3, {11.988, -23.952, -47.864, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {4, {11.982, -23.928, -47.796, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {5, {11.976, -23.904, -47.728, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {6, {11.97, -23.88, -47.66, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {7, {11.964, -23.856, -47.592, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {8, {11.958, -23.832, -47.524, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {9, {11.952, -23.808, -47.456, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {10, {11.946, -23.784, -47.388, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {11, {11.94, -23.76, -47.32, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {12, {11.934, -23.736, -47.252, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {13, {11.928, -23.712, -47.184, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {14, {11.922, -23.688, -47.116, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {15, {11.916, -23.664, -47.048, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {16, {11.91, -23.64, -46.98, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {17, {11.904, -23.616, -46.912, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {18, {11.898, -23.592, -46.844, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {19, {11.892, -23.568, -46.776, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {20, {11.886, -23.544, -46.708, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {21, {11.88, -23.52, -46.64, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {22, {11.874, -23.496, -46.572, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {23, {11.868, -23.472, -46.504, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {24, {11.862, -23.448, -46.436, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {25, - {11.856, -23.424, -46.3680000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {26, - {11.85, -23.4, -46.3000000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {27, - {11.844, -23.376, -46.2320000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {28, - {11.838, -23.352, -46.1640000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {29, - {11.832, -23.328, -46.0960000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {30, - {11.826, -23.304, -46.0280000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {31, - {11.82, -23.28, -45.9600000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {32, - {11.814, -23.256, -45.8920000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {33, - {11.808, -23.232, -45.8240000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {34, - {11.802, -23.208, -45.7560000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {35, - {11.796, -23.184, -45.6880000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {36, - {11.79, -23.16, -45.6200000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {37, - {11.784, -23.136, -45.5520000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {38, - {11.778, -23.112, -45.4840000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {39, - {11.772, -23.088, -45.4160000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {40, - {11.766, -23.064, -45.3480000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {41, - {11.76, -23.04, -45.2800000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {42, - {11.754, -23.016, -45.2120000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {43, - {11.748, -22.992, -45.1440000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {44, - {11.742, -22.968, -45.0760000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {45, - {11.736, -22.944, -45.0080000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {46, - {11.73, -22.92, -44.9400000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {47, - {11.724, -22.896, -44.8720000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {48, - {11.718, -22.872, -44.8040000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {49, - {11.712, -22.848, -44.7360000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {50, - {11.706, -22.824, -44.6680000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {51, {11.7, -22.8, -44.6000000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {52, - {11.694, -22.776, -44.5320000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {53, - {11.688, -22.752, -44.4640000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {54, - {11.682, -22.728, -44.3960000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {55, - {11.676, -22.704, -44.3280000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, - {56, - {11.67, -22.6799999999999, -44.2600000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {57, - {11.664, -22.6559999999999, -44.1920000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {58, - {11.658, -22.6319999999999, -44.1240000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {59, - {11.652, -22.6079999999999, -44.0560000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {60, - {11.646, -22.5839999999999, -43.9880000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {61, - {11.64, -22.5599999999999, -43.9200000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {62, - {11.634, -22.5359999999999, -43.8520000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {63, - {11.628, -22.5119999999999, -43.7840000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {64, - {11.622, -22.4879999999999, -43.7160000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {65, - {11.616, -22.4639999999999, -43.6480000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {66, - {11.61, -22.4399999999999, -43.5800000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {67, - {11.604, -22.4159999999999, -43.5120000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {68, - {11.598, -22.3919999999999, -43.4440000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {69, - {11.592, -22.3679999999999, -43.3760000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {70, - {11.586, -22.3439999999999, -43.3080000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {71, - {11.58, -22.3199999999999, -43.2400000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {72, - {11.574, -22.2959999999999, -43.1720000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {73, - {11.568, -22.2719999999999, -43.1040000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {74, - {11.562, -22.2479999999999, -43.0360000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {75, - {11.556, -22.2239999999999, -42.9680000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {76, - {11.55, -22.1999999999999, -42.9000000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {77, - {11.544, -22.1759999999999, -42.8320000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {78, - {11.538, -22.1519999999999, -42.7640000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {79, - {11.532, -22.1279999999999, -42.6960000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {80, - {11.526, -22.1039999999999, -42.6280000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {81, - {11.52, -22.0799999999999, -42.5600000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {82, - {11.514, -22.0559999999999, -42.4920000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {83, - {11.508, -22.0319999999999, -42.4240000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {84, - {11.502, -22.0079999999999, -42.3560000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {85, - {11.496, -21.9839999999999, -42.2880000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {86, - {11.49, -21.9599999999999, -42.2200000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {87, - {11.484, -21.9359999999999, -42.1520000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {88, - {11.478, -21.9119999999999, -42.0840000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {89, - {11.472, -21.8879999999999, -42.0160000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {90, - {11.466, -21.8639999999999, -41.9480000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {91, - {11.46, -21.8399999999999, -41.8800000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {92, - {11.454, -21.8159999999999, -41.8120000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {93, - {11.448, -21.7919999999999, -41.7440000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {94, - {11.442, -21.7679999999999, -41.6760000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {95, - {11.436, -21.7439999999999, -41.6080000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {96, - {11.43, -21.7199999999999, -41.5400000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {97, - {11.424, -21.6959999999999, -41.4720000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {98, - {11.418, -21.6719999999999, -41.4040000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {99, - {11.412, -21.6479999999999, -41.3360000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}, - {100, - {11.406, -21.6239999999999, -41.2680000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, - 0, 0, 0}}}; +std::chrono::milliseconds dt = 20ms; +int n = 100; +Boardcore::NASState nas[] = { + {1, {12, -24, -48, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {2, {11.994, -23.976, -47.932, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {3, {11.988, -23.952, -47.864, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {4, {11.982, -23.928, -47.796, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {5, {11.976, -23.904, -47.728, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {6, {11.97, -23.88, -47.66, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {7, {11.964, -23.856, -47.592, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {8, {11.958, -23.832, -47.524, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {9, {11.952, -23.808, -47.456, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {10, {11.946, -23.784, -47.388, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {11, {11.94, -23.76, -47.32, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {12, {11.934, -23.736, -47.252, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {13, {11.928, -23.712, -47.184, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {14, {11.922, -23.688, -47.116, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {15, {11.916, -23.664, -47.048, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {16, {11.91, -23.64, -46.98, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {17, {11.904, -23.616, -46.912, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {18, {11.898, -23.592, -46.844, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {19, {11.892, -23.568, -46.776, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {20, {11.886, -23.544, -46.708, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {21, {11.88, -23.52, -46.64, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {22, {11.874, -23.496, -46.572, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {23, {11.868, -23.472, -46.504, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {24, {11.862, -23.448, -46.436, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {25, + {11.856, -23.424, -46.3680000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {26, + {11.85, -23.4, -46.3000000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {27, + {11.844, -23.376, -46.2320000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {28, + {11.838, -23.352, -46.1640000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {29, + {11.832, -23.328, -46.0960000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {30, + {11.826, -23.304, -46.0280000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {31, + {11.82, -23.28, -45.9600000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {32, + {11.814, -23.256, -45.8920000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {33, + {11.808, -23.232, -45.8240000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {34, + {11.802, -23.208, -45.7560000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {35, + {11.796, -23.184, -45.6880000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {36, + {11.79, -23.16, -45.6200000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {37, + {11.784, -23.136, -45.5520000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {38, + {11.778, -23.112, -45.4840000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {39, + {11.772, -23.088, -45.4160000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {40, + {11.766, -23.064, -45.3480000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {41, + {11.76, -23.04, -45.2800000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {42, + {11.754, -23.016, -45.2120000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {43, + {11.748, -22.992, -45.1440000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {44, + {11.742, -22.968, -45.0760000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {45, + {11.736, -22.944, -45.0080000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {46, + {11.73, -22.92, -44.9400000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {47, + {11.724, -22.896, -44.8720000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {48, + {11.718, -22.872, -44.8040000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {49, + {11.712, -22.848, -44.7360000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {50, + {11.706, -22.824, -44.6680000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {51, {11.7, -22.8, -44.6000000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {52, + {11.694, -22.776, -44.5320000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {53, + {11.688, -22.752, -44.4640000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {54, + {11.682, -22.728, -44.3960000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {55, + {11.676, -22.704, -44.3280000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, 0, 0, 0}}, + {56, + {11.67, -22.6799999999999, -44.2600000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {57, + {11.664, -22.6559999999999, -44.1920000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {58, + {11.658, -22.6319999999999, -44.1240000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {59, + {11.652, -22.6079999999999, -44.0560000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {60, + {11.646, -22.5839999999999, -43.9880000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {61, + {11.64, -22.5599999999999, -43.9200000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {62, + {11.634, -22.5359999999999, -43.8520000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {63, + {11.628, -22.5119999999999, -43.7840000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {64, + {11.622, -22.4879999999999, -43.7160000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {65, + {11.616, -22.4639999999999, -43.6480000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {66, + {11.61, -22.4399999999999, -43.5800000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {67, + {11.604, -22.4159999999999, -43.5120000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {68, + {11.598, -22.3919999999999, -43.4440000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {69, + {11.592, -22.3679999999999, -43.3760000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {70, + {11.586, -22.3439999999999, -43.3080000000001, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {71, + {11.58, -22.3199999999999, -43.2400000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {72, + {11.574, -22.2959999999999, -43.1720000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {73, + {11.568, -22.2719999999999, -43.1040000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {74, + {11.562, -22.2479999999999, -43.0360000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {75, + {11.556, -22.2239999999999, -42.9680000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {76, + {11.55, -22.1999999999999, -42.9000000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {77, + {11.544, -22.1759999999999, -42.8320000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {78, + {11.538, -22.1519999999999, -42.7640000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {79, + {11.532, -22.1279999999999, -42.6960000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {80, + {11.526, -22.1039999999999, -42.6280000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {81, + {11.52, -22.0799999999999, -42.5600000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {82, + {11.514, -22.0559999999999, -42.4920000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {83, + {11.508, -22.0319999999999, -42.4240000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {84, + {11.502, -22.0079999999999, -42.3560000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {85, + {11.496, -21.9839999999999, -42.2880000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {86, + {11.49, -21.9599999999999, -42.2200000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {87, + {11.484, -21.9359999999999, -42.1520000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {88, + {11.478, -21.9119999999999, -42.0840000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {89, + {11.472, -21.8879999999999, -42.0160000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {90, + {11.466, -21.8639999999999, -41.9480000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {91, + {11.46, -21.8399999999999, -41.8800000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {92, + {11.454, -21.8159999999999, -41.8120000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {93, + {11.448, -21.7919999999999, -41.7440000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {94, + {11.442, -21.7679999999999, -41.6760000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {95, + {11.436, -21.7439999999999, -41.6080000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {96, + {11.43, -21.7199999999999, -41.5400000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {97, + {11.424, -21.6959999999999, -41.4720000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {98, + {11.418, -21.6719999999999, -41.4040000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {99, + {11.412, -21.6479999999999, -41.3360000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}, + {100, + {11.406, -21.6239999999999, -41.2680000000002, -0.3, 1.2, 3.4, 0, 0, 0, 1, + 0, 0, 0}}}; Boardcore::PropagatorState STATE0(0, 0, nas[0]); @@ -423,276 +426,276 @@ Boardcore::PropagatorState STATE0(0, 0, nas[0]); namespace TestPropagator3 { -float dt = 500; -int n = 100; -Boardcore::NASState nas[] = { - {1, {12, -24, -48, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {2, {11.85, -23.4, -46.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {3, {11.7, -22.8, -44.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {4, {11.55, -22.2, -42.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {5, {11.4, -21.6, -41.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {6, {11.25, -21, -39.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {7, {11.1, -20.4, -37.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {8, {10.95, -19.8, -36.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {9, {10.8, -19.2, -34.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {10, {10.65, -18.6, -32.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {11, {10.5, -18, -31, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {12, {10.35, -17.4, -29.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {13, {10.2, -16.8, -27.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {14, {10.05, -16.2, -25.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {15, {9.9, -15.6, -24.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {16, - {9.74999999999999, -15, -22.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {17, - {9.59999999999999, -14.4, -20.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {18, - {9.44999999999999, -13.8, -19.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {19, - {9.29999999999999, -13.2, -17.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {20, - {9.14999999999999, -12.6, -15.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {21, - {8.99999999999999, -12, -14, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {22, - {8.84999999999999, -11.4, -12.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {23, - {8.69999999999999, -10.8, -10.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {24, - {8.54999999999999, -10.2, -8.89999999999998, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {25, - {8.39999999999999, -9.59999999999999, -7.19999999999998, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {26, - {8.24999999999999, -8.99999999999999, -5.49999999999998, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {27, - {8.09999999999999, -8.39999999999999, -3.79999999999998, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {28, - {7.94999999999999, -7.79999999999999, -2.09999999999998, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {29, - {7.79999999999999, -7.19999999999999, -0.399999999999984, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {30, - {7.64999999999999, -6.59999999999999, 1.30000000000002, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {31, - {7.49999999999999, -5.99999999999999, 3.00000000000002, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {32, - {7.34999999999999, -5.39999999999999, 4.70000000000002, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {33, - {7.19999999999999, -4.79999999999999, 6.40000000000002, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {34, - {7.04999999999999, -4.19999999999999, 8.10000000000002, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {35, - {6.89999999999999, -3.59999999999999, 9.80000000000001, -0.3, 1.2, 3.4, - 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {36, - {6.74999999999999, -2.99999999999999, 11.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {37, - {6.59999999999999, -2.39999999999999, 13.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {38, - {6.44999999999999, -1.79999999999999, 14.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {39, - {6.29999999999999, -1.19999999999999, 16.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {40, - {6.14999999999999, -0.599999999999988, 18.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {41, - {5.99999999999999, 1.17683640610267e-14, 20, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {42, - {5.84999999999999, 0.600000000000012, 21.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {43, - {5.69999999999999, 1.20000000000001, 23.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {44, - {5.54999999999998, 1.80000000000001, 25.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {45, - {5.39999999999998, 2.40000000000001, 26.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {46, - {5.24999999999998, 3.00000000000001, 28.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {47, - {5.09999999999998, 3.60000000000001, 30.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {48, - {4.94999999999998, 4.20000000000001, 31.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {49, - {4.79999999999998, 4.80000000000001, 33.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {50, - {4.64999999999998, 5.40000000000001, 35.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {51, - {4.49999999999998, 6.00000000000001, 37, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {52, - {4.34999999999998, 6.60000000000001, 38.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {53, - {4.19999999999998, 7.20000000000001, 40.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {54, - {4.04999999999998, 7.80000000000001, 42.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {55, - {3.89999999999998, 8.40000000000001, 43.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {56, - {3.74999999999998, 9.00000000000001, 45.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {57, - {3.59999999999998, 9.60000000000001, 47.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {58, - {3.44999999999998, 10.2, 48.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {59, - {3.29999999999998, 10.8, 50.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {60, - {3.14999999999998, 11.4, 52.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {61, - {2.99999999999998, 12, 54, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {62, - {2.84999999999998, 12.6, 55.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {63, - {2.69999999999998, 13.2, 57.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {64, - {2.54999999999998, 13.8, 59.1000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {65, - {2.39999999999998, 14.4, 60.8000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {66, - {2.24999999999998, 15, 62.5000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {67, - {2.09999999999998, 15.6, 64.2000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {68, - {1.94999999999998, 16.2, 65.9000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {69, - {1.79999999999998, 16.8, 67.6000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {70, - {1.64999999999998, 17.4, 69.3000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {71, - {1.49999999999998, 18, 71.0000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {72, - {1.34999999999998, 18.6, 72.7000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {73, - {1.19999999999998, 19.2, 74.4000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {74, - {1.04999999999998, 19.8, 76.1000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {75, - {0.899999999999983, 20.4, 77.8000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {76, - {0.749999999999983, 21, 79.5000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {77, - {0.599999999999983, 21.6, 81.2000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {78, - {0.449999999999983, 22.2, 82.9000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {79, - {0.299999999999983, 22.8, 84.6000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {80, - {0.149999999999983, 23.4, 86.3000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {81, - {-1.71529457304587e-14, 24, 88.0000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, - 0.5, 0.5, 1, 2, 3}}, - {82, - {-0.150000000000017, 24.6, 89.7000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {83, - {-0.300000000000017, 25.2, 91.4000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {84, - {-0.450000000000017, 25.8, 93.1000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {85, - {-0.600000000000017, 26.4, 94.8000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {86, - {-0.750000000000017, 27, 96.5000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {87, - {-0.900000000000017, 27.6, 98.2000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {88, - {-1.05000000000002, 28.2, 99.9000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, - 0.5, 1, 2, 3}}, - {89, - {-1.20000000000002, 28.8, 101.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {90, - {-1.35000000000002, 29.4, 103.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {91, - {-1.50000000000002, 30, 105, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, - {92, - {-1.65000000000002, 30.6, 106.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {93, - {-1.80000000000002, 31.2, 108.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {94, - {-1.95000000000002, 31.8, 110.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {95, - {-2.10000000000002, 32.4, 111.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {96, - {-2.25000000000002, 33, 113.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {97, - {-2.40000000000002, 33.6, 115.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {98, - {-2.55000000000002, 34.2, 116.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {99, - {-2.70000000000002, 34.8, 118.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}, - {100, - {-2.85000000000002, 35.4, 120.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, - 3}}}; +std::chrono::milliseconds dt = 500ms; +int n = 100; +Boardcore::NASState nas[] = { + {1, {12, -24, -48, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {2, {11.85, -23.4, -46.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {3, {11.7, -22.8, -44.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {4, {11.55, -22.2, -42.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {5, {11.4, -21.6, -41.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {6, {11.25, -21, -39.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {7, {11.1, -20.4, -37.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {8, {10.95, -19.8, -36.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {9, {10.8, -19.2, -34.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {10, {10.65, -18.6, -32.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {11, {10.5, -18, -31, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {12, {10.35, -17.4, -29.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {13, {10.2, -16.8, -27.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {14, {10.05, -16.2, -25.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {15, {9.9, -15.6, -24.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {16, + {9.74999999999999, -15, -22.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {17, + {9.59999999999999, -14.4, -20.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {18, + {9.44999999999999, -13.8, -19.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {19, + {9.29999999999999, -13.2, -17.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {20, + {9.14999999999999, -12.6, -15.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {21, + {8.99999999999999, -12, -14, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {22, + {8.84999999999999, -11.4, -12.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {23, + {8.69999999999999, -10.8, -10.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {24, + {8.54999999999999, -10.2, -8.89999999999998, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {25, + {8.39999999999999, -9.59999999999999, -7.19999999999998, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {26, + {8.24999999999999, -8.99999999999999, -5.49999999999998, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {27, + {8.09999999999999, -8.39999999999999, -3.79999999999998, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {28, + {7.94999999999999, -7.79999999999999, -2.09999999999998, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {29, + {7.79999999999999, -7.19999999999999, -0.399999999999984, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {30, + {7.64999999999999, -6.59999999999999, 1.30000000000002, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {31, + {7.49999999999999, -5.99999999999999, 3.00000000000002, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {32, + {7.34999999999999, -5.39999999999999, 4.70000000000002, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {33, + {7.19999999999999, -4.79999999999999, 6.40000000000002, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {34, + {7.04999999999999, -4.19999999999999, 8.10000000000002, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {35, + {6.89999999999999, -3.59999999999999, 9.80000000000001, -0.3, 1.2, 3.4, + 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {36, + {6.74999999999999, -2.99999999999999, 11.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {37, + {6.59999999999999, -2.39999999999999, 13.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {38, + {6.44999999999999, -1.79999999999999, 14.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {39, + {6.29999999999999, -1.19999999999999, 16.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {40, + {6.14999999999999, -0.599999999999988, 18.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {41, + {5.99999999999999, 1.17683640610267e-14, 20, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {42, + {5.84999999999999, 0.600000000000012, 21.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {43, + {5.69999999999999, 1.20000000000001, 23.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {44, + {5.54999999999998, 1.80000000000001, 25.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {45, + {5.39999999999998, 2.40000000000001, 26.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {46, + {5.24999999999998, 3.00000000000001, 28.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {47, + {5.09999999999998, 3.60000000000001, 30.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {48, + {4.94999999999998, 4.20000000000001, 31.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {49, + {4.79999999999998, 4.80000000000001, 33.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {50, + {4.64999999999998, 5.40000000000001, 35.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {51, + {4.49999999999998, 6.00000000000001, 37, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {52, + {4.34999999999998, 6.60000000000001, 38.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {53, + {4.19999999999998, 7.20000000000001, 40.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {54, + {4.04999999999998, 7.80000000000001, 42.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {55, + {3.89999999999998, 8.40000000000001, 43.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {56, + {3.74999999999998, 9.00000000000001, 45.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {57, + {3.59999999999998, 9.60000000000001, 47.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {58, + {3.44999999999998, 10.2, 48.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {59, + {3.29999999999998, 10.8, 50.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {60, + {3.14999999999998, 11.4, 52.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {61, + {2.99999999999998, 12, 54, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {62, + {2.84999999999998, 12.6, 55.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {63, + {2.69999999999998, 13.2, 57.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {64, + {2.54999999999998, 13.8, 59.1000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {65, + {2.39999999999998, 14.4, 60.8000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {66, + {2.24999999999998, 15, 62.5000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {67, + {2.09999999999998, 15.6, 64.2000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {68, + {1.94999999999998, 16.2, 65.9000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {69, + {1.79999999999998, 16.8, 67.6000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {70, + {1.64999999999998, 17.4, 69.3000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {71, + {1.49999999999998, 18, 71.0000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {72, + {1.34999999999998, 18.6, 72.7000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {73, + {1.19999999999998, 19.2, 74.4000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {74, + {1.04999999999998, 19.8, 76.1000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {75, + {0.899999999999983, 20.4, 77.8000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {76, + {0.749999999999983, 21, 79.5000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {77, + {0.599999999999983, 21.6, 81.2000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {78, + {0.449999999999983, 22.2, 82.9000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {79, + {0.299999999999983, 22.8, 84.6000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {80, + {0.149999999999983, 23.4, 86.3000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {81, + {-1.71529457304587e-14, 24, 88.0000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, + 0.5, 0.5, 1, 2, 3}}, + {82, + {-0.150000000000017, 24.6, 89.7000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {83, + {-0.300000000000017, 25.2, 91.4000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {84, + {-0.450000000000017, 25.8, 93.1000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {85, + {-0.600000000000017, 26.4, 94.8000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {86, + {-0.750000000000017, 27, 96.5000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {87, + {-0.900000000000017, 27.6, 98.2000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {88, + {-1.05000000000002, 28.2, 99.9000000000001, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, + 0.5, 1, 2, 3}}, + {89, + {-1.20000000000002, 28.8, 101.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {90, + {-1.35000000000002, 29.4, 103.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {91, + {-1.50000000000002, 30, 105, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, 3}}, + {92, + {-1.65000000000002, 30.6, 106.7, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {93, + {-1.80000000000002, 31.2, 108.4, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {94, + {-1.95000000000002, 31.8, 110.1, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {95, + {-2.10000000000002, 32.4, 111.8, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {96, + {-2.25000000000002, 33, 113.5, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {97, + {-2.40000000000002, 33.6, 115.2, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {98, + {-2.55000000000002, 34.2, 116.9, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {99, + {-2.70000000000002, 34.8, 118.6, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}, + {100, + {-2.85000000000002, 35.4, 120.3, -0.3, 1.2, 3.4, 0.5, 0.5, 0.5, 0.5, 1, 2, + 3}}}; Boardcore::PropagatorState STATE0(0, 0, nas[0]); diff --git a/src/tests/catch/propagator/test-propagator.cpp b/src/tests/catch/propagator/test-propagator.cpp index 88dc804e08029fa0c24f3f21239f9e15b1bfaa57..d2559cc1cd4e4dcbb0e85ab63371023dadbd586f 100644 --- a/src/tests/catch/propagator/test-propagator.cpp +++ b/src/tests/catch/propagator/test-propagator.cpp @@ -62,8 +62,8 @@ void checkPropagatorStates(const PropagatorState& currentState, Approx(expectedState.getNasState().bz).epsilon(0.0001)); } -void testPropagator(float dt, const PropagatorState& STATE0, NASState* nas, - uint32_t n) +void testPropagator(std::chrono::milliseconds dt, const PropagatorState& STATE0, + NASState* nas, uint32_t n) { // Setting up the Propagator Propagator propagator(dt); diff --git a/src/tests/drivers/test-dipswitch.cpp b/src/tests/drivers/test-dipswitch.cpp index 86b69119e9f56b41e6eadc2eef01b0d1547941d5..99f8802004da07a34e1968c7915485953d5e2804 100644 --- a/src/tests/drivers/test-dipswitch.cpp +++ b/src/tests/drivers/test-dipswitch.cpp @@ -24,19 +24,22 @@ #include <interfaces-impl/hwmapping.h> #include <miosix.h> +#include <chrono> + using namespace miosix; +using namespace std::chrono; +using namespace Boardcore; /** * @brief Tests the read from a dipswitch using the DipSwitch driver */ int main() { - uint32_t microSecClk = 100; - GpioPin sh = dipSwitch::sh::getPin(); - GpioPin clk = dipSwitch::clk::getPin(); - GpioPin qh = dipSwitch::qh::getPin(); + GpioPin sh = dipSwitch::sh::getPin(); + GpioPin clk = dipSwitch::clk::getPin(); + GpioPin qh = dipSwitch::qh::getPin(); - DipSwitch dipSwitch(sh, clk, qh, microSecClk); + DipSwitch dipSwitch(sh, clk, qh, 100us); while (true) { uint8_t status;