6#ifndef PLATFORMIO_BUILD
8#include <unordered_map>
13static const std::unordered_map<int, std::string> ROBOT_MULTICAST_CHANNELS = {
14 {0,
"ff02::c3d0:42d2:bb00"}, {1,
"ff02::c3d0:42d2:bb01"},
15 {2,
"ff02::c3d0:42d2:bb02"}, {3,
"ff02::c3d0:42d2:bb03"},
16 {4,
"ff02::c3d0:42d2:bb04"}, {5,
"ff02::c3d0:42d2:bb05"},
17 {6,
"ff02::c3d0:42d2:bb06"}, {7,
"ff02::c3d0:42d2:bb07"},
18 {8,
"ff02::c3d0:42d2:bb08"}, {9,
"ff02::c3d0:42d2:bb08"},
19 {10,
"ff02::c3d0:42d2:bb10"}, {11,
"ff02::c3d0:42d2:bb11"},
20 {12,
"ff02::c3d0:42d2:bb12"}, {13,
"ff02::c3d0:42d2:bb13"},
21 {14,
"ff02::c3d0:42d2:bb14"}, {15,
"ff02::c3d0:42d2:bb15"}};
26static const std::string PLOTJUGGLER_GUI_DEFAULT_HOST =
"127.0.0.1";
27static const short unsigned int PLOTJUGGLER_GUI_DEFAULT_PORT = 9870;
30static const std::string REPLAY_FILE_EXTENSION =
"replay";
31static const std::string REPLAY_METADATA_DELIMITER =
",";
32static const std::string REPLAY_FILE_VERSION_PREFIX =
"version:";
33static const unsigned int REPLAY_FILE_VERSION = 2;
38#define REDIS_HOST_LENGTH 10
39static const char REDIS_DEFAULT_HOST[REDIS_HOST_LENGTH] =
"127.0.0.1";
40static const short unsigned int REDIS_DEFAULT_PORT = 6379;
43static const short unsigned int PRIMITIVE_PORT = 42070;
46static constexpr short unsigned int ROBOT_STATUS_PORT = 42071;
47static constexpr short unsigned int ROBOT_LOGS_PORT = 42072;
48static constexpr short unsigned int ROBOT_CRASH_PORT = 42074;
49static constexpr short unsigned int NETWORK_COMM_TEST_PORT = 42075;
50static constexpr short unsigned int ROBOT_TO_FULL_SYSTEM_IP_NOTIFICATION_PORT = 42073;
51static constexpr short unsigned int FULL_SYSTEM_TO_ROBOT_IP_NOTIFICATION_PORT = 42076;
55static const short unsigned int MAXIMUM_TRANSFER_UNIT_BYTES = 1500;
64static const double BALL_MAX_SPEED_METERS_PER_SECOND = 6.5;
66static const double BALL_SAFE_MAX_SPEED_METERS_PER_SECOND =
67 BALL_MAX_SPEED_METERS_PER_SECOND - 0.5;
71static const double BALL_IN_PLAY_DISTANCE_THRESHOLD_METERS = 0.05;
73static const double ROBOT_MAX_HEIGHT_METERS = 0.15;
75static const double ROBOT_MAX_RADIUS_METERS = 0.09;
77static const double DIST_TO_FRONT_OF_ROBOT_METERS = 0.078;
79static const double BALL_MAX_RADIUS_METERS = 0.0215;
82static const double MAX_FRACTION_OF_BALL_COVERED_BY_ROBOT = 0.2;
85constexpr double BALL_PLACEMENT_TOLERANCE_RADIUS_METERS = 0.15;
88constexpr double BALL_PLACEMENT_ROBOT_AVOID_RADIUS_METERS = 0.5;
90constexpr int BALL_PLACEMENT_TIME_LIMIT_S = 30;
93constexpr double BALL_MASS_KG = 0.004593;
96static const double STOP_COMMAND_ROBOT_MAX_SPEED_METERS_PER_SECOND = 1.5;
99static const double STOP_COMMAND_SPEED_SAFETY_MARGIN_METERS_PER_SECOND = 0.2;
101static const double COLLISION_ALLOWED_ROBOT_MAX_SPEED_METERS_PER_SECOND = 0.5;
104static const double STOP_COMMAND_BALL_AVOIDANCE_DISTANCE_M = 0.5;
106static const double ENEMY_ROBOT_MAX_SPEED_METERS_PER_SECOND = 3.0;
108static const double ENEMY_ROBOT_MAX_ACCELERATION_METERS_PER_SECOND_SQUARED = 4.0;
110static const double ACCELERATION_DUE_TO_GRAVITY_METERS_PER_SECOND_SQUARED = 9.81;
113static const double ENEMY_BALL_PLACEMENT_DISTANCE_METERS = 0.5;
121constexpr double BALL_SLIDING_FRICTION_NEWTONS = 1.0;
123constexpr double BALL_RESTITUTION = 1.0;
125constexpr double FRICTION_TRANSITION_FACTOR = 5.0 / 7.0;
127constexpr double STATIONARY_BALL_SPEED_METERS_PER_SECOND = 0.01;
129constexpr double BALL_ROLLING_FRICTION_DECELERATION_METERS_PER_SECOND_SQUARED = -0.5;
131constexpr double BALL_SLIDING_FRICTION_DECELERATION_METERS_PER_SECOND_SQUARED =
132 -BALL_SLIDING_FRICTION_NEWTONS / BALL_MASS_KG;
135static const double MILLIMETERS_PER_METER = 1000.0;
136static const double METERS_PER_MILLIMETER = 1.0 / 1000.0;
137static const double CENTIMETERS_PER_METER = 100.0;
138static const double METERS_PER_CENTIMETER = 1.0 / 100.0;
140static const double CENTIRADIANS_PER_RADIAN = 100.0;
141static const double RADIANS_PER_CENTIRADIAN = 1.0 / 100.0;
143static const double NANOSECONDS_PER_MILLISECOND = 1000000.0;
144static const double NANOSECONDS_PER_SECOND = 1000000000.0;
145static const double MICROSECONDS_PER_MILLISECOND = 1000.0;
146static const double MICROSECONDS_PER_SECOND = 1000000.0;
147static const double MILLISECONDS_PER_SECOND = 1000.0;
148static const double SECONDS_PER_MICROSECOND = 1.0 / 1000000.0;
149static const double SECONDS_PER_NANOSECOND = 1.0 / 1000000000.0;
150static const double SECONDS_PER_MILLISECOND = 1.0 / 1000.0;
151static const double MILLISECONDS_PER_MICROSECOND = 1.0 / 1000.0;
152static const double MILLISECONDS_PER_NANOSECOND = 1.0 / 1000000.0;
153static const double SECONDS_PER_MINUTE = 60.0;
155static const double DEFAULT_SIMULATOR_TICK_RATE_SECONDS_PER_TICK =
157static const double DEFAULT_SIMULATOR_TICK_RATE_MILLISECONDS_PER_TICK =
158 DEFAULT_SIMULATOR_TICK_RATE_SECONDS_PER_TICK * 1000;
161static const unsigned int MAX_ROBOT_IDS_PER_SIDE = 8;
163static const unsigned int MAX_ROBOT_IDS = MAX_ROBOT_IDS_PER_SIDE * 2;
166static const unsigned int DIV_A_NUM_ROBOTS = 11;
167static const unsigned int DIV_B_NUM_ROBOTS = 6;
170static const double MAX_TIME_TO_EXIT_FULL_SYSTEM_SEC = 0.5;
173static const unsigned NUM_CELLS_IN_BATTERY = 3;
174static const unsigned NUM_BATTERIES_IN_SERIES = 2;
175static const double MAX_SINGLE_CELL_VOLTAGE = 4.2;
176static const double MIN_SINGLE_CELL_VOLTAGE = 3.5 + 0.1;
178static const double MIN_BATTERY_VOLTAGE =
179 MIN_SINGLE_CELL_VOLTAGE * NUM_CELLS_IN_BATTERY * NUM_BATTERIES_IN_SERIES;
180static const double MAX_BATTERY_VOLTAGE =
181 MAX_SINGLE_CELL_VOLTAGE * NUM_CELLS_IN_BATTERY * NUM_BATTERIES_IN_SERIES;
182static const double BATTERY_WARNING_VOLTAGE = MIN_BATTERY_VOLTAGE + 1.0;
185static const double MIN_CAPACITOR_VOLTAGE = 0;
186static const double MAX_CAPACITOR_VOLTAGE = 250.0 + 50.0;
188static const unsigned int ROBOT_CHIP_ANGLE_DEGREES = 45;
189static const double CHICKER_TIMEOUT = 3 * MILLISECONDS_PER_SECOND;
193static const int MAX_KICK_CONSTANT = 850;
194static const double MAX_KICK_COEFFICIENT = 0.4;
199static const long ARDUINO_BAUD_RATE = 115200;
207static const int ESTOP_MESSAGE_SIZE_BYTES = 1;
209static const unsigned char ESTOP_PLAY_MSG = 0;
210static const unsigned char ESTOP_STOP_MSG = 1;
213static const unsigned int NUM_TIMES_SEND_STOP = 10;
216static const double DISCONNECT_DURATION_MS = 1 * MILLISECONDS_PER_SECOND;
220#define ARDUINO_ID_LENGTH 5
221static const char ARDUINO_VENDOR_ID[ARDUINO_ID_LENGTH] =
"2341";
222static const char ARDUINO_PRODUCT_ID[ARDUINO_ID_LENGTH] =
"0043";
225static const unsigned THUNDERLOOP_HZ = 300u;
227static const unsigned NUM_GENEVA_ANGLES = 5;
230static const double MAX_JETSON_TEMP_C = 97;